Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/include/arpa/nameser_compat.h
39476 views
1
/*-
2
* SPDX-License-Identifier: BSD-3-Clause
3
*
4
* Copyright (c) 1983, 1989
5
* The Regents of the University of California. All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
* 3. Neither the name of the University nor the names of its contributors
16
* may be used to endorse or promote products derived from this software
17
* without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
* SUCH DAMAGE.
30
*/
31
32
/*%
33
* from nameser.h 8.1 (Berkeley) 6/2/93
34
* $Id: nameser_compat.h,v 1.8 2006/05/19 02:33:40 marka Exp $
35
*/
36
37
#ifndef _ARPA_NAMESER_COMPAT_
38
#define _ARPA_NAMESER_COMPAT_
39
40
#define __BIND 19950621 /*%< (DEAD) interface version stamp. */
41
42
#include <machine/endian.h>
43
44
#if !defined(_BYTE_ORDER) || \
45
(_BYTE_ORDER != _BIG_ENDIAN && _BYTE_ORDER != _LITTLE_ENDIAN && \
46
_BYTE_ORDER != _PDP_ENDIAN)
47
/* you must determine what the correct bit order is for
48
* your compiler - the next line is an intentional error
49
* which will force your compiles to bomb until you fix
50
* the above macros.
51
*/
52
#error "Undefined or invalid _BYTE_ORDER";
53
#endif
54
55
/*%
56
* Structure for query header. The order of the fields is machine- and
57
* compiler-dependent, depending on the byte/bit order and the layout
58
* of bit fields. We use bit fields only in int variables, as this
59
* is all ANSI requires. This requires a somewhat confusing rearrangement.
60
*/
61
62
typedef struct {
63
unsigned id :16; /*%< query identification number */
64
#if _BYTE_ORDER == _BIG_ENDIAN
65
/* fields in third byte */
66
unsigned qr: 1; /*%< response flag */
67
unsigned opcode: 4; /*%< purpose of message */
68
unsigned aa: 1; /*%< authoritative answer */
69
unsigned tc: 1; /*%< truncated message */
70
unsigned rd: 1; /*%< recursion desired */
71
/* fields in fourth byte */
72
unsigned ra: 1; /*%< recursion available */
73
unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */
74
unsigned ad: 1; /*%< authentic data from named */
75
unsigned cd: 1; /*%< checking disabled by resolver */
76
unsigned rcode :4; /*%< response code */
77
#endif
78
#if _BYTE_ORDER == _LITTLE_ENDIAN || _BYTE_ORDER == _PDP_ENDIAN
79
/* fields in third byte */
80
unsigned rd :1; /*%< recursion desired */
81
unsigned tc :1; /*%< truncated message */
82
unsigned aa :1; /*%< authoritative answer */
83
unsigned opcode :4; /*%< purpose of message */
84
unsigned qr :1; /*%< response flag */
85
/* fields in fourth byte */
86
unsigned rcode :4; /*%< response code */
87
unsigned cd: 1; /*%< checking disabled by resolver */
88
unsigned ad: 1; /*%< authentic data from named */
89
unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */
90
unsigned ra :1; /*%< recursion available */
91
#endif
92
/* remaining bytes */
93
unsigned qdcount :16; /*%< number of question entries */
94
unsigned ancount :16; /*%< number of answer entries */
95
unsigned nscount :16; /*%< number of authority entries */
96
unsigned arcount :16; /*%< number of resource entries */
97
} HEADER;
98
99
#define PACKETSZ NS_PACKETSZ
100
#define MAXDNAME NS_MAXDNAME
101
#define MAXCDNAME NS_MAXCDNAME
102
#define MAXLABEL NS_MAXLABEL
103
#define HFIXEDSZ NS_HFIXEDSZ
104
#define QFIXEDSZ NS_QFIXEDSZ
105
#define RRFIXEDSZ NS_RRFIXEDSZ
106
#define INT32SZ NS_INT32SZ
107
#define INT16SZ NS_INT16SZ
108
#define INT8SZ NS_INT8SZ
109
#define INADDRSZ NS_INADDRSZ
110
#define IN6ADDRSZ NS_IN6ADDRSZ
111
#define INDIR_MASK NS_CMPRSFLGS
112
#define NAMESERVER_PORT NS_DEFAULTPORT
113
114
#define S_ZONE ns_s_zn
115
#define S_PREREQ ns_s_pr
116
#define S_UPDATE ns_s_ud
117
#define S_ADDT ns_s_ar
118
119
#define QUERY ns_o_query
120
#define IQUERY ns_o_iquery
121
#define STATUS ns_o_status
122
#define NS_NOTIFY_OP ns_o_notify
123
#define NS_UPDATE_OP ns_o_update
124
125
#define NOERROR ns_r_noerror
126
#define FORMERR ns_r_formerr
127
#define SERVFAIL ns_r_servfail
128
#define NXDOMAIN ns_r_nxdomain
129
#define NOTIMP ns_r_notimpl
130
#define REFUSED ns_r_refused
131
#define YXDOMAIN ns_r_yxdomain
132
#define YXRRSET ns_r_yxrrset
133
#define NXRRSET ns_r_nxrrset
134
#define NOTAUTH ns_r_notauth
135
#define NOTZONE ns_r_notzone
136
/*#define BADSIG ns_r_badsig*/
137
/*#define BADKEY ns_r_badkey*/
138
/*#define BADTIME ns_r_badtime*/
139
140
141
#define DELETE ns_uop_delete
142
#define ADD ns_uop_add
143
144
#define T_A ns_t_a
145
#define T_NS ns_t_ns
146
#define T_MD ns_t_md
147
#define T_MF ns_t_mf
148
#define T_CNAME ns_t_cname
149
#define T_SOA ns_t_soa
150
#define T_MB ns_t_mb
151
#define T_MG ns_t_mg
152
#define T_MR ns_t_mr
153
#define T_NULL ns_t_null
154
#define T_WKS ns_t_wks
155
#define T_PTR ns_t_ptr
156
#define T_HINFO ns_t_hinfo
157
#define T_MINFO ns_t_minfo
158
#define T_MX ns_t_mx
159
#define T_TXT ns_t_txt
160
#define T_RP ns_t_rp
161
#define T_AFSDB ns_t_afsdb
162
#define T_X25 ns_t_x25
163
#define T_ISDN ns_t_isdn
164
#define T_RT ns_t_rt
165
#define T_NSAP ns_t_nsap
166
#define T_NSAP_PTR ns_t_nsap_ptr
167
#define T_SIG ns_t_sig
168
#define T_KEY ns_t_key
169
#define T_PX ns_t_px
170
#define T_GPOS ns_t_gpos
171
#define T_AAAA ns_t_aaaa
172
#define T_LOC ns_t_loc
173
#define T_NXT ns_t_nxt
174
#define T_EID ns_t_eid
175
#define T_NIMLOC ns_t_nimloc
176
#define T_SRV ns_t_srv
177
#define T_ATMA ns_t_atma
178
#define T_NAPTR ns_t_naptr
179
#define T_KX ns_t_kx
180
#define T_CERT ns_t_cert
181
#define T_A6 ns_t_a6
182
#define T_DNAME ns_t_dname
183
#define T_SINK ns_t_sink
184
#define T_OPT ns_t_opt
185
#define T_APL ns_t_apl
186
#define T_DS ns_t_ds
187
#define T_SSHFP ns_t_sshfp
188
#define T_IPSECKEY ns_t_ipseckey
189
#define T_RRSIG ns_t_rrsig
190
#define T_NSEC ns_t_nsec
191
#define T_DNSKEY ns_t_dnskey
192
#define T_DHCID ns_t_dhcid
193
#define T_NSEC3 ns_t_nsec3
194
#define T_NSEC3PARAM ns_t_nsec3param
195
#define T_HIP ns_t_hip
196
#define T_SPF ns_t_spf
197
#define T_TKEY ns_t_tkey
198
#define T_TSIG ns_t_tsig
199
#define T_IXFR ns_t_ixfr
200
#define T_AXFR ns_t_axfr
201
#define T_MAILB ns_t_mailb
202
#define T_MAILA ns_t_maila
203
#define T_ANY ns_t_any
204
#define T_ZXFR ns_t_zxfr
205
#define T_DLV ns_t_dlv
206
207
#define C_IN ns_c_in
208
#define C_CHAOS ns_c_chaos
209
#define C_HS ns_c_hs
210
/* BIND_UPDATE */
211
#define C_NONE ns_c_none
212
#define C_ANY ns_c_any
213
214
#define GETSHORT NS_GET16
215
#define GETLONG NS_GET32
216
#define PUTSHORT NS_PUT16
217
#define PUTLONG NS_PUT32
218
219
#endif /* _ARPA_NAMESER_COMPAT_ */
220
/*! \file */
221
222