4.3BSD beta release manual page
[unix-history] / usr / src / include / arpa / nameser.h
CommitLineData
fff51773 1/* nameser.h 4.3 85/03/27 */
af0a941b
RC
2/*
3 * Define constants based on rfc883
4 */
5#define PACKETSZ 512 /* maximum packet size */
6#define MAXDNAME 256 /* maximum domain name */
7#define MAXCDNAME 255 /* maximum compressed domain name */
8#define MAXLABEL 63 /* maximum length of domain label */
9 /* Number of bytes of fixed size data in query structure */
10#define QFIXEDSZ 4
11 /* number of bytes of fixed size data in resource record */
12#define RRFIXEDSZ 10
13
14#ifdef vax
15#define HTONS(s) (((s >> 8) & 0xff) | ((s & 0xff) << 8))
16#else
17#define HTONS(s)
18#endif
19
c789adbd
RC
20/*
21 * Internet nameserver port number
22 */
23#define NAMESERVER_PORT 53
24
af0a941b
RC
25/*
26 * Currently defined opcodes
27 */
28#define QUERY 0 /* standard query */
29#define IQUERY 1 /* inverse query */
30#define CQUERYM 2 /* completion query (multiple) */
31#define CQUERYU 3 /* completion query (unique) */
32 /* non standard */
33#define UPDATEA 11 /* add resource record */
34#define UPDATED 12 /* delete resource record */
35#define UPDATEM 13 /* modify resource record */
36#define ZONEINIT 14 /* initial zone transfer */
37#define ZONEREF 15 /* incremental zone referesh */
38
39/*
40 * Currently defined response codes
41 */
42#define NOERROR 0 /* no error */
43#define FORMERR 1 /* format error */
44#define SERVFAIL 2 /* server failure */
45#define NXDOMAIN 3 /* non existent domain */
46#define NOTIMP 4 /* not implemented */
47#define REFUSED 5 /* query refused */
48 /* non standard */
49#define NOCHANGE 15 /* update failed to change db */
50
51/*
52 * Type values for resources and queries
53 */
54#define T_A 1 /* host address */
55#define T_NS 2 /* authoritative server */
56#define T_MD 3 /* mail destination */
57#define T_MF 4 /* mail forwarder */
58#define T_CNAME 5 /* connonical name */
59#define T_SOA 6 /* start of authority zone */
60#define T_MB 7 /* mailbox domain name */
61#define T_MG 8 /* mail group member */
62#define T_MR 9 /* mail rename name */
63#define T_NULL 10 /* null resource record */
64#define T_WKS 11 /* well known service */
65#define T_PTR 12 /* domain name pointer */
66#define T_HINFO 13 /* host information */
67#define T_MINFO 14 /* mailbox information */
68 /* non standard */
69#define T_UINFO 15 /* user (finger) information */
70#define T_UID 16 /* user ID */
71#define T_GID 17 /* group ID */
72 /* Query type values which do not appear in resource records */
73#define T_AXFR 252 /* transfer zone of authority */
74#define T_MAILB 253 /* transfer mailbox records */
75#define T_MAILA 254 /* transfer mail agent records */
76#define T_ANY 255 /* wildcard match */
77
78/*
79 * Values for class field
80 */
81
82#define C_IN 1 /* the arpa internet */
83#define C_CS 2 /* the computer science network */
84 /* Query class values which do not appear in resource records */
85#define C_ANY 255 /* wildcard match */
86
87/*
88 * Structure for query header, the order of the fields is machine and
89 * compiler dependent, in our case, the bits within a byte are assignd
90 * least significant first, while the order of transmition is most
91 * significant first. This requires a somewhat confusing rearrangement.
92 */
93
94typedef struct {
95 u_short id; /* query identification number */
96 /* fields in third byte */
97 u_char rd:1; /* recursion desired */
98 u_char tc:1; /* truncated message */
99 u_char aa:1; /* authoritive answer */
100 u_char opcode:4; /* purpose of message */
101 u_char qr:1; /* response flag */
102 /* fields in forth byte */
103 u_char rcode:4; /* response code */
104 u_char unused:2; /* unused bits */
105 u_char pr:1; /* primary server required (non standard) */
106 u_char ra:1; /* recursion available */
107 /* remaining bytes */
108 u_short qdcount; /* number of question entries */
109 u_short ancount; /* number of answer entries */
110 u_short nscount; /* number of authority entries */
111 u_short arcount; /* number of resource entries */
112} HEADER;
113
114/*
115 * Defines for handling compressed domain names
116 */
117#define INDIR_MASK 0xc0
118
119/*
120 * Structure for passing resource records around.
121 */
122struct rrec {
123 short r_zone; /* zone number */
124 short r_class; /* class number */
125 short r_type; /* type number */
126 u_long r_ttl; /* time to live */
127 int r_size; /* size of data area */
128 char *r_data; /* pointer to data */
129};
fff51773
RC
130
131extern u_short getshort();
132extern u_long getlong();