XINU
dns.h
Go to the documentation of this file.
1 /* dns.h */
2 
3 /* Constants and data structures used for DNS */
4 
5 #define DNSTIMEOUT 3000 /* Timeout for a response (ms) */
6 #define DNSRETRY 3 /* Number of times to retry */
7 #define DNSPORT 53 /* Well-known DNS UDP port */
8 #define DNSLPORT 51525 /* Local UDP port to use */
9 #define DNSDATASIZ 500 /* Size of the data area */
10 
11 
12 /* Format of a DNS Query/Response packet */
13 
14 struct dnspkt {
15  uint16 id; /* DNS Query ID */
16  struct {
17  byte rd:1; /* Recursion Desired */
18  byte tc:1; /* Truncation */
19  byte aa:1; /* Authoritative Answer */
20  byte opcode:4; /* Operation Code */
21  byte qr:1; /* Query=0, Response=1 */
22  };
23  struct {
24  byte rcode:4; /* Response Code */
25  byte z:3; /* Reserved, must be 0 */
26  byte ra:1; /* Recursion Available */
27  };
28  uint16 qucount; /* No. of Questions */
29  uint16 ancount; /* No. of RRs in Answer */
30  uint16 nscount; /* No of Name Server RRs */
31  uint16 arcount; /* No. of RRs in Additional info*/
32  char data[DNSDATASIZ]; /* DNS data area */
33 };
34 
35 /* QType Values */
36 
37 #define DNS_QT_A 1 /* DNS Address Type (A) */
38 #define DNS_QT_NS 2 /* DNS Name Server Type */
39 
40 /* QClass values */
41 
42 #define DNS_QC_IN 1 /* DNS QClass Internet */
43 
44 /* Format of a DNS Question */
45 
46 struct dns_q {
47  char *qname; /* Domain Name in the query */
48  uint16 *qtype; /* Question Type */
49  uint16 *qclass; /* Question Class */
50 };
51 
52 /* Format of a DNS Resource Record */
53 
54 struct dns_rr {
55  char *rname; /* Domain Name */
56  uint16 *rtype; /* Resource Record Type */
57  uint16 *rclass; /* Resource Record Class */
58  uint32 *ttl; /* Resource Record Time-to-Live */
59  uint16 *rdlen; /* Resource Record RD Length */
60  char *rdata; /* Resource Record Data area */
61 };
byte ra
Definition: dns.h:26
unsigned char byte
符号なし8ビット値(unsigned char)
Definition: kernel.h:7
uint16 nscount
Definition: dns.h:30
uint16 qucount
Definition: dns.h:28
Definition: dns.h:14
uint16 * rtype
Definition: dns.h:56
uint16 ancount
Definition: dns.h:29
byte tc
Definition: dns.h:18
char * qname
Definition: dns.h:47
char * rname
Definition: dns.h:55
byte opcode
Definition: dns.h:20
byte aa
Definition: dns.h:19
char * rdata
Definition: dns.h:60
uint16 * qclass
Definition: dns.h:49
byte rcode
Definition: dns.h:24
uint16 * qtype
Definition: dns.h:48
uint16 arcount
Definition: dns.h:31
byte rd
Definition: dns.h:17
uint16 id
Definition: dns.h:15
char data[DNSDATASIZ]
Definition: dns.h:32
uint16 * rclass
Definition: dns.h:57
uint16 * rdlen
Definition: dns.h:59
unsigned short uint16
符号なし16ビット整数(unsigned short)
Definition: kernel.h:17
uint32 * ttl
Definition: dns.h:58
Definition: dns.h:46
#define DNSDATASIZ
Definition: dns.h:9
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition: kernel.h:15
byte z
Definition: dns.h:25
Definition: dns.h:54
byte qr
Definition: dns.h:21