ISC DHCP
4.3.5
A reference DHCPv4 and DHCPv6 implementation
nameser.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1983, 1989, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the University nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*/
29
30
/*
31
* Copyright (c) 2004,2009 by Internet Systems Consortium, Inc. ("ISC")
32
* Copyright (c) 1996-2003 by Internet Software Consortium
33
*
34
* Permission to use, copy, modify, and distribute this software for any
35
* purpose with or without fee is hereby granted, provided that the above
36
* copyright notice and this permission notice appear in all copies.
37
*
38
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
39
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
40
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
41
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
42
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
43
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
44
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
45
*
46
* Internet Systems Consortium, Inc.
47
* 950 Charter Street
48
* Redwood City, CA 94063
49
* <info@isc.org>
50
* https://www.isc.org/
51
*/
52
53
/*
54
* $Id: nameser.h,v 1.7 2009/11/24 02:06:56 sar Exp $
55
*/
56
57
#ifndef _ARPA_NAMESER_H_
58
#define _ARPA_NAMESER_H_
59
60
/*
61
* Revision information. This is the release date in YYYYMMDD format.
62
* It can change every day so the right thing to do with it is use it
63
* in preprocessor commands such as "#if (__NAMESER > 19931104)". Do not
64
* compare for equality; rather, use it to determine whether your libbind.a
65
* contains a new enough lib/nameser/ to support the feature you need.
66
*/
67
68
#define __NAMESER 19991006
/* New interface version stamp. */
69
70
/*
71
* Define constants based on RFC 883, RFC 1034, RFC 1035
72
*/
73
#define NS_PACKETSZ 512
/* maximum packet size */
74
#define NS_MAXDNAME 1025
/* maximum domain name */
75
#define NS_MAXCDNAME 255
/* maximum compressed domain name */
76
#define NS_MAXLABEL 63
/* maximum length of domain label */
77
#define NS_HFIXEDSZ 12
/* #/bytes of fixed data in header */
78
#define NS_QFIXEDSZ 4
/* #/bytes of fixed data in query */
79
#define NS_RRFIXEDSZ 10
/* #/bytes of fixed data in r record */
80
#define NS_INT32SZ 4
/* #/bytes of data in a u_int32_t */
81
#define NS_INT16SZ 2
/* #/bytes of data in a u_int16_t */
82
#define NS_INT8SZ 1
/* #/bytes of data in a u_int8_t */
83
#define NS_INADDRSZ 4
/* IPv4 T_A */
84
#define NS_IN6ADDRSZ 16
/* IPv6 T_AAAA */
85
#define NS_CMPRSFLGS 0xc0
/* Flag bits indicating name compression. */
86
#define NS_DEFAULTPORT 53
/* For both TCP and UDP. */
87
88
/*
89
* These can be expanded with synonyms, just keep ns_parse.c:ns_parserecord()
90
* in synch with it.
91
*/
92
typedef
enum
__ns_sect
{
93
ns_s_qd
= 0,
/* Query: Question. */
94
ns_s_zn
= 0,
/* Update: Zone. */
95
ns_s_an
= 1,
/* Query: Answer. */
96
ns_s_pr
= 1,
/* Update: Prerequisites. */
97
ns_s_ns
= 2,
/* Query: Name servers. */
98
ns_s_ud
= 2,
/* Update: Update. */
99
ns_s_ar
= 3,
/* Query|Update: Additional records. */
100
ns_s_max
= 4
101
}
ns_sect
;
102
103
/*
104
* This is a message handle. It is caller allocated and has no dynamic data.
105
* This structure is intended to be opaque to all but ns_parse.c, thus the
106
* leading _'s on the member names. Use the accessor functions, not the _'s.
107
*/
108
typedef
struct
__ns_msg
{
109
const
u_int8_t *
_msg
, *
_eom
;
110
u_int16_t
_id
,
_flags
,
_counts
[
ns_s_max
];
111
const
u_int8_t *
_sections
[
ns_s_max
];
112
ns_sect
_sect
;
113
int
_rrnum
;
114
const
u_int8_t *
_ptr
;
115
}
ns_msg
;
116
117
/* Private data structure - do not use from outside library. */
118
struct
_ns_flagdata
{
int
mask
,
shift
; };
119
extern
struct
_ns_flagdata
_ns_flagdata
[];
120
121
/* Accessor macros - this is part of the public interface. */
122
#define ns_msg_getflag(handle, flag) ( \
123
((handle)._flags & _ns_flagdata[flag].mask) \
124
>> _ns_flagdata[flag].shift \
125
)
126
#define ns_msg_id(handle) ((handle)._id + 0)
127
#define ns_msg_base(handle) ((handle)._msg + 0)
128
#define ns_msg_end(handle) ((handle)._eom + 0)
129
#define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
130
#define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
131
132
/*
133
* This is a parsed record. It is caller allocated and has no dynamic data.
134
*/
135
typedef
struct
__ns_rr
{
136
char
name
[
NS_MAXDNAME
];
137
u_int16_t
type
;
138
u_int16_t
rr_class
;
139
u_int32_t
ttl
;
140
u_int16_t
rdlength
;
141
const
u_int8_t *
rdata
;
142
}
ns_rr
;
143
144
/* Accessor macros - this is part of the public interface. */
145
#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".")
146
#define ns_rr_type(rr) ((ns_type)((rr).type + 0))
147
#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0))
148
#define ns_rr_ttl(rr) ((rr).ttl + 0)
149
#define ns_rr_rdlen(rr) ((rr).rdlength + 0)
150
#define ns_rr_rdata(rr) ((rr).rdata + 0)
151
152
/*
153
* These don't have to be in the same order as in the packet flags word,
154
* and they can even overlap in some cases, but they will need to be kept
155
* in synch with ns_parse.c:ns_flagdata[].
156
*/
157
typedef
enum
__ns_flag
{
158
ns_f_qr
,
/* Question/Response. */
159
ns_f_opcode
,
/* Operation code. */
160
ns_f_aa
,
/* Authoritative Answer. */
161
ns_f_tc
,
/* Truncation occurred. */
162
ns_f_rd
,
/* Recursion Desired. */
163
ns_f_ra
,
/* Recursion Available. */
164
ns_f_z
,
/* MBZ. */
165
ns_f_ad
,
/* Authentic Data (DNSSEC). */
166
ns_f_cd
,
/* Checking Disabled (DNSSEC). */
167
ns_f_rcode
,
/* Response code. */
168
ns_f_max
169
}
ns_flag
;
170
171
/*
172
* Currently defined opcodes.
173
*/
174
typedef
enum
__ns_opcode
{
175
ns_o_query
= 0,
/* Standard query. */
176
ns_o_iquery
= 1,
/* Inverse query (deprecated/unsupported). */
177
ns_o_status
= 2,
/* Name server status query (unsupported). */
178
/* Opcode 3 is undefined/reserved. */
179
ns_o_notify
= 4,
/* Zone change notification. */
180
ns_o_update
= 5,
/* Zone update message. */
181
ns_o_max
= 6
182
}
ns_opcode
;
183
184
/*
185
* Currently defined response codes.
186
*/
187
typedef
enum
__ns_rcode
{
188
ns_r_noerror
= 0,
/* No error occurred. */
189
ns_r_formerr
= 1,
/* Format error. */
190
ns_r_servfail
= 2,
/* Server failure. */
191
ns_r_nxdomain
= 3,
/* Name error. */
192
ns_r_notimpl
= 4,
/* Unimplemented. */
193
ns_r_refused
= 5,
/* Operation refused. */
194
/* these are for BIND_UPDATE */
195
ns_r_yxdomain
= 6,
/* Name exists */
196
ns_r_yxrrset
= 7,
/* RRset exists */
197
ns_r_nxrrset
= 8,
/* RRset does not exist */
198
ns_r_notauth
= 9,
/* Not authoritative for zone */
199
ns_r_notzone
= 10,
/* Zone of record different from zone section */
200
ns_r_max
= 11,
201
/* The following are TSIG extended errors */
202
ns_r_badsig
= 16,
203
ns_r_badkey
= 17,
204
ns_r_badtime
= 18
205
}
ns_rcode
;
206
207
/* BIND_UPDATE */
208
typedef
enum
__ns_update_operation
{
209
ns_uop_delete
= 0,
210
ns_uop_add
= 1,
211
ns_uop_max
= 2
212
}
ns_update_operation
;
213
214
/*
215
* This structure is used for TSIG authenticated messages
216
*/
217
struct
ns_tsig_key
{
218
char
name
[
NS_MAXDNAME
],
alg
[
NS_MAXDNAME
];
219
unsigned
char
*
data
;
220
unsigned
len
;
221
};
222
typedef
struct
ns_tsig_key
ns_tsig_key
;
223
224
/*
225
* This structure is used for TSIG authenticated TCP messages
226
*/
227
struct
ns_tcp_tsig_state
{
228
int
counter
;
229
struct
dst_key
*
key
;
230
void
*
ctx
;
231
unsigned
char
sig
[
NS_PACKETSZ
];
232
unsigned
siglen
;
233
};
234
typedef
struct
ns_tcp_tsig_state
ns_tcp_tsig_state
;
235
236
#define NS_TSIG_FUDGE 300
237
#define NS_TSIG_TCP_COUNT 100
238
#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT"
239
240
#define NS_TSIG_ERROR_NO_TSIG -10
241
#define NS_TSIG_ERROR_NO_SPACE -11
242
#define NS_TSIG_ERROR_FORMERR -12
243
244
/*
245
* Currently defined type values for resources and queries.
246
*/
247
typedef
enum
__ns_type
{
248
ns_t_invalid
= 0,
/* Cookie. */
249
ns_t_a
= 1,
/* Host address. */
250
ns_t_ns
= 2,
/* Authoritative server. */
251
ns_t_md
= 3,
/* Mail destination. */
252
ns_t_mf
= 4,
/* Mail forwarder. */
253
ns_t_cname
= 5,
/* Canonical name. */
254
ns_t_soa
= 6,
/* Start of authority zone. */
255
ns_t_mb
= 7,
/* Mailbox domain name. */
256
ns_t_mg
= 8,
/* Mail group member. */
257
ns_t_mr
= 9,
/* Mail rename name. */
258
ns_t_null
= 10,
/* Null resource record. */
259
ns_t_wks
= 11,
/* Well known service. */
260
ns_t_ptr
= 12,
/* Domain name pointer. */
261
ns_t_hinfo
= 13,
/* Host information. */
262
ns_t_minfo
= 14,
/* Mailbox information. */
263
ns_t_mx
= 15,
/* Mail routing information. */
264
ns_t_txt
= 16,
/* Text strings. */
265
ns_t_rp
= 17,
/* Responsible person. */
266
ns_t_afsdb
= 18,
/* AFS cell database. */
267
ns_t_x25
= 19,
/* X_25 calling address. */
268
ns_t_isdn
= 20,
/* ISDN calling address. */
269
ns_t_rt
= 21,
/* Router. */
270
ns_t_nsap
= 22,
/* NSAP address. */
271
ns_t_nsap_ptr
= 23,
/* Reverse NSAP lookup (deprecated). */
272
ns_t_sig
= 24,
/* Security signature. */
273
ns_t_key
= 25,
/* Security key. */
274
ns_t_px
= 26,
/* X.400 mail mapping. */
275
ns_t_gpos
= 27,
/* Geographical position (withdrawn). */
276
ns_t_aaaa
= 28,
/* Ip6 Address. */
277
ns_t_loc
= 29,
/* Location Information. */
278
ns_t_nxt
= 30,
/* Next domain (security). */
279
ns_t_eid
= 31,
/* Endpoint identifier. */
280
ns_t_nimloc
= 32,
/* Nimrod Locator. */
281
ns_t_srv
= 33,
/* Server Selection. */
282
ns_t_atma
= 34,
/* ATM Address */
283
ns_t_naptr
= 35,
/* Naming Authority PoinTeR */
284
ns_t_kx
= 36,
/* Key Exchange */
285
ns_t_cert
= 37,
/* Certification record */
286
ns_t_a6
= 38,
/* IPv6 address (deprecates AAAA) */
287
ns_t_dname
= 39,
/* Non-terminal DNAME (for IPv6) */
288
ns_t_sink
= 40,
/* Kitchen sink (experimentatl) */
289
ns_t_opt
= 41,
/* EDNS0 option (meta-RR) */
290
ns_t_tsig
= 250,
/* Transaction signature. */
291
ns_t_ixfr
= 251,
/* Incremental zone transfer. */
292
ns_t_axfr
= 252,
/* Transfer zone of authority. */
293
ns_t_mailb
= 253,
/* Transfer mailbox records. */
294
ns_t_maila
= 254,
/* Transfer mail agent records. */
295
ns_t_any
= 255,
/* Wildcard match. */
296
ns_t_zxfr
= 256,
/* BIND-specific, nonstandard. */
297
ns_t_max
= 65536
298
}
ns_type
;
299
300
/* Exclusively a QTYPE? (not also an RTYPE) */
301
#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \
302
(t) == ns_t_mailb || (t) == ns_t_maila)
303
/* Some kind of meta-RR? (not a QTYPE, but also not an RTYPE) */
304
#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
305
/* Exclusively an RTYPE? (not also a QTYPE or a meta-RR) */
306
#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t))
307
#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr)
308
#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \
309
(t) == ns_t_zxfr)
310
311
/*
312
* Values for class field
313
*/
314
typedef
enum
__ns_class
{
315
ns_c_invalid
= 0,
/* Cookie. */
316
ns_c_in
= 1,
/* Internet. */
317
ns_c_2
= 2,
/* unallocated/unsupported. */
318
ns_c_chaos
= 3,
/* MIT Chaos-net. */
319
ns_c_hs
= 4,
/* MIT Hesiod. */
320
/* Query class values which do not appear in resource records */
321
ns_c_none
= 254,
/* for prereq. sections in update requests */
322
ns_c_any
= 255,
/* Wildcard match. */
323
ns_c_max
= 65536
324
}
ns_class
;
325
326
/* DNSSEC constants. */
327
328
typedef
enum
__ns_key_types
{
329
ns_kt_rsa
= 1,
/* key type RSA/MD5 */
330
ns_kt_dh
= 2,
/* Diffie Hellman */
331
ns_kt_dsa
= 3,
/* Digital Signature Standard (MANDATORY) */
332
ns_kt_private
= 254
/* Private key type starts with OID */
333
}
ns_key_types
;
334
335
typedef
enum
__ns_cert_types
{
336
cert_t_pkix
= 1,
/* PKIX (X.509v3) */
337
cert_t_spki
= 2,
/* SPKI */
338
cert_t_pgp
= 3,
/* PGP */
339
cert_t_url
= 253,
/* URL private type */
340
cert_t_oid
= 254
/* OID private type */
341
}
ns_cert_types
;
342
343
/* Flags field of the KEY RR rdata. */
344
#define NS_KEY_TYPEMASK 0xC000
/* Mask for "type" bits */
345
#define NS_KEY_TYPE_AUTH_CONF 0x0000
/* Key usable for both */
346
#define NS_KEY_TYPE_CONF_ONLY 0x8000
/* Key usable for confidentiality */
347
#define NS_KEY_TYPE_AUTH_ONLY 0x4000
/* Key usable for authentication */
348
#define NS_KEY_TYPE_NO_KEY 0xC000
/* No key usable for either; no key */
349
/* The type bits can also be interpreted independently, as single bits: */
350
#define NS_KEY_NO_AUTH 0x8000
/* Key unusable for authentication */
351
#define NS_KEY_NO_CONF 0x4000
/* Key unusable for confidentiality */
352
#define NS_KEY_RESERVED2 0x2000
/* Security is *mandatory* if bit=0 */
353
#define NS_KEY_EXTENDED_FLAGS 0x1000
/* reserved - must be zero */
354
#define NS_KEY_RESERVED4 0x0800
/* reserved - must be zero */
355
#define NS_KEY_RESERVED5 0x0400
/* reserved - must be zero */
356
#define NS_KEY_NAME_TYPE 0x0300
/* these bits determine the type */
357
#define NS_KEY_NAME_USER 0x0000
/* key is assoc. with user */
358
#define NS_KEY_NAME_ENTITY 0x0200
/* key is assoc. with entity eg host */
359
#define NS_KEY_NAME_ZONE 0x0100
/* key is zone key */
360
#define NS_KEY_NAME_RESERVED 0x0300
/* reserved meaning */
361
#define NS_KEY_RESERVED8 0x0080
/* reserved - must be zero */
362
#define NS_KEY_RESERVED9 0x0040
/* reserved - must be zero */
363
#define NS_KEY_RESERVED10 0x0020
/* reserved - must be zero */
364
#define NS_KEY_RESERVED11 0x0010
/* reserved - must be zero */
365
#define NS_KEY_SIGNATORYMASK 0x000F
/* key can sign RR's of same name */
366
#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \
367
NS_KEY_RESERVED4 | \
368
NS_KEY_RESERVED5 | \
369
NS_KEY_RESERVED8 | \
370
NS_KEY_RESERVED9 | \
371
NS_KEY_RESERVED10 | \
372
NS_KEY_RESERVED11 )
373
#define NS_KEY_RESERVED_BITMASK2 0xFFFF
/* no bits defined here */
374
375
/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */
376
#define NS_ALG_MD5RSA 1
/* MD5 with RSA */
377
#define NS_ALG_DH 2
/* Diffie Hellman KEY */
378
#define NS_ALG_DSA 3
/* DSA KEY */
379
#define NS_ALG_DSS NS_ALG_DSA
380
#define NS_ALG_EXPIRE_ONLY 253
/* No alg, no security */
381
#define NS_ALG_PRIVATE_OID 254
/* Key begins with OID giving alg */
382
383
/* Protocol values */
384
/* value 0 is reserved */
385
#define NS_KEY_PROT_TLS 1
386
#define NS_KEY_PROT_EMAIL 2
387
#define NS_KEY_PROT_DNSSEC 3
388
#define NS_KEY_PROT_IPSEC 4
389
#define NS_KEY_PROT_ANY 255
390
391
/* Signatures */
392
#define NS_MD5RSA_MIN_BITS 512
/* Size of a mod or exp in bits */
393
#define NS_MD5RSA_MAX_BITS 2552
394
/* Total of binary mod and exp */
395
#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3)
396
/* Max length of text sig block */
397
#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4)
398
#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8)
399
#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8)
400
401
#define NS_DSA_SIG_SIZE 41
402
#define NS_DSA_MIN_SIZE 213
403
#define NS_DSA_MAX_BYTES 405
404
405
/* Offsets into SIG record rdata to find various values */
406
#define NS_SIG_TYPE 0
/* Type flags */
407
#define NS_SIG_ALG 2
/* Algorithm */
408
#define NS_SIG_LABELS 3
/* How many labels in name */
409
#define NS_SIG_OTTL 4
/* Original TTL */
410
#define NS_SIG_EXPIR 8
/* Expiration time */
411
#define NS_SIG_SIGNED 12
/* Signature time */
412
#define NS_SIG_FOOT 16
/* Key footprint */
413
#define NS_SIG_SIGNER 18
/* Domain name of who signed it */
414
415
/* How RR types are represented as bit-flags in NXT records */
416
#define NS_NXT_BITS 8
417
#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS)))
418
#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS)))
419
#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS)))
420
#define NS_NXT_MAX 127
421
422
/*
423
* Inline versions of get/put short/long. Pointer is advanced.
424
*/
425
#define NS_GET16(s, cp) do { \
426
register u_int8_t *t_cp = (u_int8_t *)(cp); \
427
(s) = ((u_int16_t)t_cp[0] << 8) \
428
| ((u_int16_t)t_cp[1]) \
429
; \
430
(cp) += NS_INT16SZ; \
431
} while (0)
432
433
#define NS_GET32(l, cp) do { \
434
register u_int8_t *t_cp = (u_int8_t *)(cp); \
435
(l) = ((u_int32_t)t_cp[0] << 24) \
436
| ((u_int32_t)t_cp[1] << 16) \
437
| ((u_int32_t)t_cp[2] << 8) \
438
| ((u_int32_t)t_cp[3]) \
439
; \
440
(cp) += NS_INT32SZ; \
441
} while (0)
442
443
#define NS_PUT16(s, cp) do { \
444
register u_int16_t t_s = (u_int16_t)(s); \
445
register u_int8_t *t_cp = (u_int8_t *)(cp); \
446
*t_cp++ = t_s >> 8; \
447
*t_cp = t_s; \
448
(cp) += NS_INT16SZ; \
449
} while (0)
450
451
#define NS_PUT32(l, cp) do { \
452
register u_int32_t t_l = (u_int32_t)(l); \
453
register u_int8_t *t_cp = (u_int8_t *)(cp); \
454
*t_cp++ = t_l >> 24; \
455
*t_cp++ = t_l >> 16; \
456
*t_cp++ = t_l >> 8; \
457
*t_cp = t_l; \
458
(cp) += NS_INT32SZ; \
459
} while (0)
460
461
#include <
arpa/nameser_compat.h
>
462
463
#endif
/* !_ARPA_NAMESER_H_ */
ns_rcode
enum __ns_rcode ns_rcode
ns_t_a6
@ ns_t_a6
Definition:
nameser.h:286
ns_t_x25
@ ns_t_x25
Definition:
nameser.h:267
__ns_msg::_ptr
const u_int8_t * _ptr
Definition:
nameser.h:114
ns_t_key
@ ns_t_key
Definition:
nameser.h:273
ns_f_rcode
@ ns_f_rcode
Definition:
nameser.h:167
__ns_flag
__ns_flag
Definition:
nameser.h:157
ns_f_tc
@ ns_f_tc
Definition:
nameser.h:161
ns_t_mf
@ ns_t_mf
Definition:
nameser.h:252
ns_s_qd
@ ns_s_qd
Definition:
nameser.h:93
ns_t_afsdb
@ ns_t_afsdb
Definition:
nameser.h:266
ns_t_zxfr
@ ns_t_zxfr
Definition:
nameser.h:296
ns_t_dname
@ ns_t_dname
Definition:
nameser.h:287
ns_t_cert
@ ns_t_cert
Definition:
nameser.h:285
NS_PACKETSZ
#define NS_PACKETSZ
Definition:
nameser.h:73
ns_s_ns
@ ns_s_ns
Definition:
nameser.h:97
__ns_msg::_id
u_int16_t _id
Definition:
nameser.h:110
ns_r_nxdomain
@ ns_r_nxdomain
Definition:
nameser.h:191
ns_t_opt
@ ns_t_opt
Definition:
nameser.h:289
__ns_rr
Definition:
nameser.h:135
ns_t_ns
@ ns_t_ns
Definition:
nameser.h:250
ns_t_nsap
@ ns_t_nsap
Definition:
nameser.h:270
ns_msg
struct __ns_msg ns_msg
ns_type
enum __ns_type ns_type
__ns_sect
__ns_sect
Definition:
nameser.h:92
ns_t_nxt
@ ns_t_nxt
Definition:
nameser.h:278
ns_t_minfo
@ ns_t_minfo
Definition:
nameser.h:262
ns_flag
enum __ns_flag ns_flag
ns_c_in
@ ns_c_in
Definition:
nameser.h:316
ns_o_max
@ ns_o_max
Definition:
nameser.h:181
ns_t_tsig
@ ns_t_tsig
Definition:
nameser.h:290
ns_t_rt
@ ns_t_rt
Definition:
nameser.h:269
ns_o_iquery
@ ns_o_iquery
Definition:
nameser.h:176
ns_t_isdn
@ ns_t_isdn
Definition:
nameser.h:268
__ns_rcode
__ns_rcode
Definition:
nameser.h:187
ns_t_mb
@ ns_t_mb
Definition:
nameser.h:255
__ns_msg::_counts
u_int16_t _counts[ns_s_max]
Definition:
nameser.h:110
ns_t_axfr
@ ns_t_axfr
Definition:
nameser.h:292
__ns_msg::_flags
u_int16_t _flags
Definition:
nameser.h:110
cert_t_oid
@ cert_t_oid
Definition:
nameser.h:340
ns_t_mx
@ ns_t_mx
Definition:
nameser.h:263
__ns_msg::_eom
const u_int8_t * _eom
Definition:
nameser.h:109
ns_t_invalid
@ ns_t_invalid
Definition:
nameser.h:248
ns_tcp_tsig_state::sig
unsigned char sig[NS_PACKETSZ]
Definition:
nameser.h:231
__ns_msg::_sect
ns_sect _sect
Definition:
nameser.h:112
ns_uop_add
@ ns_uop_add
Definition:
nameser.h:210
cert_t_pgp
@ cert_t_pgp
Definition:
nameser.h:338
NS_MAXDNAME
#define NS_MAXDNAME
Definition:
nameser.h:74
_ns_flagdata::shift
int shift
Definition:
nameser.h:118
ns_r_refused
@ ns_r_refused
Definition:
nameser.h:193
ns_t_naptr
@ ns_t_naptr
Definition:
nameser.h:283
ns_t_wks
@ ns_t_wks
Definition:
nameser.h:259
ns_f_cd
@ ns_f_cd
Definition:
nameser.h:166
ns_opcode
enum __ns_opcode ns_opcode
ns_kt_private
@ ns_kt_private
Definition:
nameser.h:332
__ns_update_operation
__ns_update_operation
Definition:
nameser.h:208
__ns_rr::rr_class
u_int16_t rr_class
Definition:
nameser.h:138
ns_f_ad
@ ns_f_ad
Definition:
nameser.h:165
ns_t_hinfo
@ ns_t_hinfo
Definition:
nameser.h:261
ns_r_formerr
@ ns_r_formerr
Definition:
nameser.h:189
ns_r_max
@ ns_r_max
Definition:
nameser.h:200
ns_r_servfail
@ ns_r_servfail
Definition:
nameser.h:190
ns_tsig_key::alg
char alg[NS_MAXDNAME]
Definition:
nameser.h:218
ns_r_notimpl
@ ns_r_notimpl
Definition:
nameser.h:192
ns_s_an
@ ns_s_an
Definition:
nameser.h:95
ns_t_ixfr
@ ns_t_ixfr
Definition:
nameser.h:291
ns_class
enum __ns_class ns_class
ns_t_sig
@ ns_t_sig
Definition:
nameser.h:272
ns_t_px
@ ns_t_px
Definition:
nameser.h:274
__ns_rr::ttl
u_int32_t ttl
Definition:
nameser.h:139
__ns_msg
Definition:
nameser.h:108
__ns_type
__ns_type
Definition:
nameser.h:247
ns_t_srv
@ ns_t_srv
Definition:
nameser.h:281
ns_tcp_tsig_state::siglen
unsigned siglen
Definition:
nameser.h:232
ns_tsig_key
Definition:
nameser.h:217
ns_t_maila
@ ns_t_maila
Definition:
nameser.h:294
ns_r_noerror
@ ns_r_noerror
Definition:
nameser.h:188
ns_c_max
@ ns_c_max
Definition:
nameser.h:323
ns_kt_rsa
@ ns_kt_rsa
Definition:
nameser.h:329
ns_tsig_key::name
char name[NS_MAXDNAME]
Definition:
nameser.h:218
ns_t_soa
@ ns_t_soa
Definition:
nameser.h:254
__ns_rr::name
char name[NS_MAXDNAME]
Definition:
nameser.h:136
ns_kt_dsa
@ ns_kt_dsa
Definition:
nameser.h:331
ns_c_hs
@ ns_c_hs
Definition:
nameser.h:319
ns_tcp_tsig_state::key
struct dst_key * key
Definition:
nameser.h:229
ns_f_z
@ ns_f_z
Definition:
nameser.h:164
ns_f_aa
@ ns_f_aa
Definition:
nameser.h:160
ns_t_ptr
@ ns_t_ptr
Definition:
nameser.h:260
ns_s_ar
@ ns_s_ar
Definition:
nameser.h:99
ns_t_any
@ ns_t_any
Definition:
nameser.h:295
ns_r_notzone
@ ns_r_notzone
Definition:
nameser.h:199
__ns_rr::rdlength
u_int16_t rdlength
Definition:
nameser.h:140
ns_s_ud
@ ns_s_ud
Definition:
nameser.h:98
ns_t_loc
@ ns_t_loc
Definition:
nameser.h:277
cert_t_pkix
@ cert_t_pkix
Definition:
nameser.h:336
ns_r_notauth
@ ns_r_notauth
Definition:
nameser.h:198
_ns_flagdata
Definition:
nameser.h:118
ns_r_nxrrset
@ ns_r_nxrrset
Definition:
nameser.h:197
ns_t_a
@ ns_t_a
Definition:
nameser.h:249
__ns_msg::_rrnum
int _rrnum
Definition:
nameser.h:113
nameser_compat.h
ns_t_sink
@ ns_t_sink
Definition:
nameser.h:288
ns_r_badtime
@ ns_r_badtime
Definition:
nameser.h:204
ns_t_gpos
@ ns_t_gpos
Definition:
nameser.h:275
__ns_rr::rdata
const u_int8_t * rdata
Definition:
nameser.h:141
ns_t_null
@ ns_t_null
Definition:
nameser.h:258
ns_t_txt
@ ns_t_txt
Definition:
nameser.h:264
ns_cert_types
enum __ns_cert_types ns_cert_types
ns_t_cname
@ ns_t_cname
Definition:
nameser.h:253
__ns_opcode
__ns_opcode
Definition:
nameser.h:174
ns_t_mg
@ ns_t_mg
Definition:
nameser.h:256
ns_c_none
@ ns_c_none
Definition:
nameser.h:321
ns_tsig_key::data
unsigned char * data
Definition:
nameser.h:219
ns_t_atma
@ ns_t_atma
Definition:
nameser.h:282
ns_t_max
@ ns_t_max
Definition:
nameser.h:297
dst_key
Definition:
dst.h:5
ns_r_yxrrset
@ ns_r_yxrrset
Definition:
nameser.h:196
ns_f_qr
@ ns_f_qr
Definition:
nameser.h:158
ns_t_md
@ ns_t_md
Definition:
nameser.h:251
ns_t_eid
@ ns_t_eid
Definition:
nameser.h:279
cert_t_spki
@ cert_t_spki
Definition:
nameser.h:337
__ns_key_types
__ns_key_types
Definition:
nameser.h:328
ns_c_2
@ ns_c_2
Definition:
nameser.h:317
__ns_msg::_sections
const u_int8_t * _sections[ns_s_max]
Definition:
nameser.h:111
ns_s_pr
@ ns_s_pr
Definition:
nameser.h:96
ns_tcp_tsig_state::counter
int counter
Definition:
nameser.h:228
ns_c_invalid
@ ns_c_invalid
Definition:
nameser.h:315
ns_tcp_tsig_state::ctx
void * ctx
Definition:
nameser.h:230
ns_o_update
@ ns_o_update
Definition:
nameser.h:180
ns_rr
struct __ns_rr ns_rr
ns_t_mr
@ ns_t_mr
Definition:
nameser.h:257
ns_s_max
@ ns_s_max
Definition:
nameser.h:100
ns_o_status
@ ns_o_status
Definition:
nameser.h:177
ns_r_yxdomain
@ ns_r_yxdomain
Definition:
nameser.h:195
__ns_class
__ns_class
Definition:
nameser.h:314
ns_t_nsap_ptr
@ ns_t_nsap_ptr
Definition:
nameser.h:271
ns_uop_max
@ ns_uop_max
Definition:
nameser.h:211
ns_f_max
@ ns_f_max
Definition:
nameser.h:168
ns_o_query
@ ns_o_query
Definition:
nameser.h:175
ns_key_types
enum __ns_key_types ns_key_types
ns_r_badsig
@ ns_r_badsig
Definition:
nameser.h:202
ns_c_any
@ ns_c_any
Definition:
nameser.h:322
ns_t_mailb
@ ns_t_mailb
Definition:
nameser.h:293
ns_kt_dh
@ ns_kt_dh
Definition:
nameser.h:330
ns_t_kx
@ ns_t_kx
Definition:
nameser.h:284
ns_s_zn
@ ns_s_zn
Definition:
nameser.h:94
ns_f_rd
@ ns_f_rd
Definition:
nameser.h:162
ns_update_operation
enum __ns_update_operation ns_update_operation
ns_c_chaos
@ ns_c_chaos
Definition:
nameser.h:318
ns_uop_delete
@ ns_uop_delete
Definition:
nameser.h:209
ns_f_ra
@ ns_f_ra
Definition:
nameser.h:163
cert_t_url
@ cert_t_url
Definition:
nameser.h:339
__ns_cert_types
__ns_cert_types
Definition:
nameser.h:335
ns_r_badkey
@ ns_r_badkey
Definition:
nameser.h:203
ns_f_opcode
@ ns_f_opcode
Definition:
nameser.h:159
_ns_flagdata::mask
int mask
Definition:
nameser.h:118
ns_t_nimloc
@ ns_t_nimloc
Definition:
nameser.h:280
ns_t_rp
@ ns_t_rp
Definition:
nameser.h:265
__ns_msg::_msg
const u_int8_t * _msg
Definition:
nameser.h:109
ns_o_notify
@ ns_o_notify
Definition:
nameser.h:179
ns_sect
enum __ns_sect ns_sect
ns_t_aaaa
@ ns_t_aaaa
Definition:
nameser.h:276
ns_tsig_key::len
unsigned len
Definition:
nameser.h:220
ns_tcp_tsig_state
Definition:
nameser.h:227
__ns_rr::type
u_int16_t type
Definition:
nameser.h:137
includes
arpa
nameser.h
Generated on Wed Dec 9 2020 15:23:26 for ISC DHCP by
1.8.20