1#[cfg(test)]
2mod proto_test;
3
4pub mod addr;
5pub mod chandata;
6pub mod channum;
7pub mod data;
8pub mod dontfrag;
9pub mod evenport;
10pub mod lifetime;
11pub mod peeraddr;
12pub mod relayaddr;
13pub mod reqfamily;
14pub mod reqtrans;
15pub mod rsrvtoken;
16
17use std::fmt;
18
19use stun::message::*;
20
21#[derive(PartialEq, Eq, Default, Debug, Clone, Copy)]
25pub struct Protocol(pub u8);
26
27pub const PROTO_TCP: Protocol = Protocol(6);
29pub const PROTO_UDP: Protocol = Protocol(17);
30
31impl fmt::Display for Protocol {
32 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33 let others = format!("{}", self.0);
34 let s = match *self {
35 PROTO_UDP => "UDP",
36 PROTO_TCP => "TCP",
37 _ => others.as_str(),
38 };
39
40 write!(f, "{}", s)
41 }
42}
43
44pub const DEFAULT_PORT: u16 = stun::DEFAULT_PORT;
48pub const DEFAULT_TLS_PORT: u16 = stun::DEFAULT_TLS_PORT;
50
51pub fn create_permission_request() -> MessageType {
53 MessageType::new(METHOD_CREATE_PERMISSION, CLASS_REQUEST)
54}
55
56pub fn allocate_request() -> MessageType {
58 MessageType::new(METHOD_ALLOCATE, CLASS_REQUEST)
59}
60
61pub fn send_indication() -> MessageType {
63 MessageType::new(METHOD_SEND, CLASS_INDICATION)
64}
65
66pub fn refresh_request() -> MessageType {
68 MessageType::new(METHOD_REFRESH, CLASS_REQUEST)
69}