awdl_frame_parser/common/
awdl_dns_compression.rs

1use macro_bits::serializable_enum;
2
3serializable_enum! {
4    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
5    /// Compressed dns-sd domains/services. Compression might be the wrong word though.
6    pub enum AWDLDnsCompression: u16 {
7        Null => 0xC000,
8
9        AirPlayTcpLocal => 0xC001,
10
11        AirPlayUdpLocal => 0xC002,
12
13        AirPlay => 0xC003,
14
15        RaopTcpLocal => 0xC004,
16
17        RaopUdpLocal => 0xC005,
18
19        Raop => 0xC006,
20
21        AirDropTcpLocal => 0xC007,
22
23        AirDropUdpLocal => 0xC008,
24
25        AirDrop => 0xC009,
26
27        TcpLocal => 0xC00A,
28
29        UdpLocal => 0xC00B,
30
31        #[default]
32        Local => 0xC00C,
33
34        Ip6Arpa => 0xC00D,
35
36        Ip4Arpa => 0xC00E
37    }
38}
39impl AWDLDnsCompression {
40    pub fn to_static_string(&self) -> &'static str {
41        match self {
42            AWDLDnsCompression::Null => "",
43            AWDLDnsCompression::AirPlayTcpLocal => "_airplay._tcp.local",
44            AWDLDnsCompression::AirPlayUdpLocal => "_airplay._udp.local",
45            AWDLDnsCompression::AirPlay => "_airplay",
46            AWDLDnsCompression::RaopTcpLocal => "_raop._tcp.local",
47            AWDLDnsCompression::RaopUdpLocal => "_raop._udp.local",
48            AWDLDnsCompression::Raop => "raop",
49            AWDLDnsCompression::AirDropTcpLocal => "_airdrop._tcp.local",
50            AWDLDnsCompression::AirDropUdpLocal => "_airdrop._udp.local",
51            AWDLDnsCompression::AirDrop => "_airdrop",
52            AWDLDnsCompression::TcpLocal => "_tcp.local",
53            AWDLDnsCompression::UdpLocal => "_udp.local",
54            AWDLDnsCompression::Local => "local",
55            AWDLDnsCompression::Ip6Arpa => "ip6.arpa",
56            AWDLDnsCompression::Ip4Arpa => "ip4.arpa",
57            AWDLDnsCompression::Unknown(_) => "Unknown Compression",
58        }
59    }
60}