1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use {QueryType, QueryClass, Name, Class, Header, RRData};
#[derive(Debug)]
pub struct Packet<'a> {
pub header: Header,
pub questions: Vec<Question<'a>>,
pub answers: Vec<ResourceRecord<'a>>,
pub nameservers: Vec<ResourceRecord<'a>>,
pub additional: Vec<ResourceRecord<'a>>,
pub opt: Option<OptRecord<'a>>,
}
#[derive(Debug)]
pub struct Question<'a> {
pub qname: Name<'a>,
pub prefer_unicast: bool,
pub qtype: QueryType,
pub qclass: QueryClass,
}
#[derive(Debug)]
pub struct ResourceRecord<'a> {
pub name: Name<'a>,
pub multicast_unique: bool,
pub cls: Class,
pub ttl: u32,
pub data: RRData<'a>,
}
#[derive(Debug)]
pub struct OptRecord<'a> {
pub udp: u16,
pub extrcode: u8,
pub version: u8,
pub flags: u16,
pub data: RRData<'a>,
}
#[derive(Debug)]
pub struct SoaRecord<'a> {
pub primary_ns: Name<'a>,
pub mailbox: Name<'a>,
pub serial: u32,
pub refresh: u32,
pub retry: u32,
pub expire: u32,
pub minimum_ttl: u32,
}