1570af302Sopenharmony_ci#ifndef _ARPA_NAMESER_H 2570af302Sopenharmony_ci#define _ARPA_NAMESER_H 3570af302Sopenharmony_ci 4570af302Sopenharmony_ci#ifdef __cplusplus 5570af302Sopenharmony_ciextern "C" { 6570af302Sopenharmony_ci#endif 7570af302Sopenharmony_ci 8570af302Sopenharmony_ci#include <stddef.h> 9570af302Sopenharmony_ci#include <stdint.h> 10570af302Sopenharmony_ci 11570af302Sopenharmony_ci#define __NAMESER 19991006 12570af302Sopenharmony_ci#define NS_PACKETSZ 512 13570af302Sopenharmony_ci#define NS_MAXDNAME 1025 14570af302Sopenharmony_ci#define NS_MAXMSG 65535 15570af302Sopenharmony_ci#define NS_MAXCDNAME 255 16570af302Sopenharmony_ci#define NS_MAXLABEL 63 17570af302Sopenharmony_ci#define NS_HFIXEDSZ 12 18570af302Sopenharmony_ci#define NS_QFIXEDSZ 4 19570af302Sopenharmony_ci#define NS_RRFIXEDSZ 10 20570af302Sopenharmony_ci#define NS_INT32SZ 4 21570af302Sopenharmony_ci#define NS_INT16SZ 2 22570af302Sopenharmony_ci#define NS_INT8SZ 1 23570af302Sopenharmony_ci#define NS_INADDRSZ 4 24570af302Sopenharmony_ci#define NS_IN6ADDRSZ 16 25570af302Sopenharmony_ci#define NS_CMPRSFLGS 0xc0 26570af302Sopenharmony_ci#define NS_DEFAULTPORT 53 27570af302Sopenharmony_ci 28570af302Sopenharmony_citypedef enum __ns_sect { 29570af302Sopenharmony_ci ns_s_qd = 0, 30570af302Sopenharmony_ci ns_s_zn = 0, 31570af302Sopenharmony_ci ns_s_an = 1, 32570af302Sopenharmony_ci ns_s_pr = 1, 33570af302Sopenharmony_ci ns_s_ns = 2, 34570af302Sopenharmony_ci ns_s_ud = 2, 35570af302Sopenharmony_ci ns_s_ar = 3, 36570af302Sopenharmony_ci ns_s_max = 4 37570af302Sopenharmony_ci} ns_sect; 38570af302Sopenharmony_ci 39570af302Sopenharmony_citypedef struct __ns_msg { 40570af302Sopenharmony_ci const unsigned char *_msg, *_eom; 41570af302Sopenharmony_ci uint16_t _id, _flags, _counts[ns_s_max]; 42570af302Sopenharmony_ci const unsigned char *_sections[ns_s_max]; 43570af302Sopenharmony_ci ns_sect _sect; 44570af302Sopenharmony_ci int _rrnum; 45570af302Sopenharmony_ci const unsigned char *_msg_ptr; 46570af302Sopenharmony_ci} ns_msg; 47570af302Sopenharmony_ci 48570af302Sopenharmony_cistruct _ns_flagdata { int mask, shift; }; 49570af302Sopenharmony_ciextern const struct _ns_flagdata _ns_flagdata[]; 50570af302Sopenharmony_ci 51570af302Sopenharmony_ci#define ns_msg_id(handle) ((handle)._id + 0) 52570af302Sopenharmony_ci#define ns_msg_base(handle) ((handle)._msg + 0) 53570af302Sopenharmony_ci#define ns_msg_end(handle) ((handle)._eom + 0) 54570af302Sopenharmony_ci#define ns_msg_size(handle) ((handle)._eom - (handle)._msg) 55570af302Sopenharmony_ci#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) 56570af302Sopenharmony_ci#define ns_msg_getflag(handle, flag) \ 57570af302Sopenharmony_ci (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift) 58570af302Sopenharmony_ci 59570af302Sopenharmony_citypedef struct __ns_rr { 60570af302Sopenharmony_ci char name[NS_MAXDNAME]; 61570af302Sopenharmony_ci uint16_t type; 62570af302Sopenharmony_ci uint16_t rr_class; 63570af302Sopenharmony_ci uint32_t ttl; 64570af302Sopenharmony_ci uint16_t rdlength; 65570af302Sopenharmony_ci const unsigned char *rdata; 66570af302Sopenharmony_ci} ns_rr; 67570af302Sopenharmony_ci 68570af302Sopenharmony_ci#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") 69570af302Sopenharmony_ci#define ns_rr_type(rr) ((ns_type)((rr).type + 0)) 70570af302Sopenharmony_ci#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) 71570af302Sopenharmony_ci#define ns_rr_ttl(rr) ((rr).ttl + 0) 72570af302Sopenharmony_ci#define ns_rr_rdlen(rr) ((rr).rdlength + 0) 73570af302Sopenharmony_ci#define ns_rr_rdata(rr) ((rr).rdata + 0) 74570af302Sopenharmony_ci 75570af302Sopenharmony_citypedef enum __ns_flag { 76570af302Sopenharmony_ci ns_f_qr, 77570af302Sopenharmony_ci ns_f_opcode, 78570af302Sopenharmony_ci ns_f_aa, 79570af302Sopenharmony_ci ns_f_tc, 80570af302Sopenharmony_ci ns_f_rd, 81570af302Sopenharmony_ci ns_f_ra, 82570af302Sopenharmony_ci ns_f_z, 83570af302Sopenharmony_ci ns_f_ad, 84570af302Sopenharmony_ci ns_f_cd, 85570af302Sopenharmony_ci ns_f_rcode, 86570af302Sopenharmony_ci ns_f_max 87570af302Sopenharmony_ci} ns_flag; 88570af302Sopenharmony_ci 89570af302Sopenharmony_citypedef enum __ns_opcode { 90570af302Sopenharmony_ci ns_o_query = 0, 91570af302Sopenharmony_ci ns_o_iquery = 1, 92570af302Sopenharmony_ci ns_o_status = 2, 93570af302Sopenharmony_ci ns_o_notify = 4, 94570af302Sopenharmony_ci ns_o_update = 5, 95570af302Sopenharmony_ci ns_o_max = 6 96570af302Sopenharmony_ci} ns_opcode; 97570af302Sopenharmony_ci 98570af302Sopenharmony_citypedef enum __ns_rcode { 99570af302Sopenharmony_ci ns_r_noerror = 0, 100570af302Sopenharmony_ci ns_r_formerr = 1, 101570af302Sopenharmony_ci ns_r_servfail = 2, 102570af302Sopenharmony_ci ns_r_nxdomain = 3, 103570af302Sopenharmony_ci ns_r_notimpl = 4, 104570af302Sopenharmony_ci ns_r_refused = 5, 105570af302Sopenharmony_ci ns_r_yxdomain = 6, 106570af302Sopenharmony_ci ns_r_yxrrset = 7, 107570af302Sopenharmony_ci ns_r_nxrrset = 8, 108570af302Sopenharmony_ci ns_r_notauth = 9, 109570af302Sopenharmony_ci ns_r_notzone = 10, 110570af302Sopenharmony_ci ns_r_max = 11, 111570af302Sopenharmony_ci ns_r_badvers = 16, 112570af302Sopenharmony_ci ns_r_badsig = 16, 113570af302Sopenharmony_ci ns_r_badkey = 17, 114570af302Sopenharmony_ci ns_r_badtime = 18 115570af302Sopenharmony_ci} ns_rcode; 116570af302Sopenharmony_ci 117570af302Sopenharmony_citypedef enum __ns_update_operation { 118570af302Sopenharmony_ci ns_uop_delete = 0, 119570af302Sopenharmony_ci ns_uop_add = 1, 120570af302Sopenharmony_ci ns_uop_max = 2 121570af302Sopenharmony_ci} ns_update_operation; 122570af302Sopenharmony_ci 123570af302Sopenharmony_cistruct ns_tsig_key { 124570af302Sopenharmony_ci char name[NS_MAXDNAME], alg[NS_MAXDNAME]; 125570af302Sopenharmony_ci unsigned char *data; 126570af302Sopenharmony_ci int len; 127570af302Sopenharmony_ci}; 128570af302Sopenharmony_citypedef struct ns_tsig_key ns_tsig_key; 129570af302Sopenharmony_ci 130570af302Sopenharmony_cistruct ns_tcp_tsig_state { 131570af302Sopenharmony_ci int counter; 132570af302Sopenharmony_ci struct dst_key *key; 133570af302Sopenharmony_ci void *ctx; 134570af302Sopenharmony_ci unsigned char sig[NS_PACKETSZ]; 135570af302Sopenharmony_ci int siglen; 136570af302Sopenharmony_ci}; 137570af302Sopenharmony_citypedef struct ns_tcp_tsig_state ns_tcp_tsig_state; 138570af302Sopenharmony_ci 139570af302Sopenharmony_ci#define NS_TSIG_FUDGE 300 140570af302Sopenharmony_ci#define NS_TSIG_TCP_COUNT 100 141570af302Sopenharmony_ci#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" 142570af302Sopenharmony_ci 143570af302Sopenharmony_ci#define NS_TSIG_ERROR_NO_TSIG -10 144570af302Sopenharmony_ci#define NS_TSIG_ERROR_NO_SPACE -11 145570af302Sopenharmony_ci#define NS_TSIG_ERROR_FORMERR -12 146570af302Sopenharmony_ci 147570af302Sopenharmony_citypedef enum __ns_type { 148570af302Sopenharmony_ci ns_t_invalid = 0, 149570af302Sopenharmony_ci ns_t_a = 1, 150570af302Sopenharmony_ci ns_t_ns = 2, 151570af302Sopenharmony_ci ns_t_md = 3, 152570af302Sopenharmony_ci ns_t_mf = 4, 153570af302Sopenharmony_ci ns_t_cname = 5, 154570af302Sopenharmony_ci ns_t_soa = 6, 155570af302Sopenharmony_ci ns_t_mb = 7, 156570af302Sopenharmony_ci ns_t_mg = 8, 157570af302Sopenharmony_ci ns_t_mr = 9, 158570af302Sopenharmony_ci ns_t_null = 10, 159570af302Sopenharmony_ci ns_t_wks = 11, 160570af302Sopenharmony_ci ns_t_ptr = 12, 161570af302Sopenharmony_ci ns_t_hinfo = 13, 162570af302Sopenharmony_ci ns_t_minfo = 14, 163570af302Sopenharmony_ci ns_t_mx = 15, 164570af302Sopenharmony_ci ns_t_txt = 16, 165570af302Sopenharmony_ci ns_t_rp = 17, 166570af302Sopenharmony_ci ns_t_afsdb = 18, 167570af302Sopenharmony_ci ns_t_x25 = 19, 168570af302Sopenharmony_ci ns_t_isdn = 20, 169570af302Sopenharmony_ci ns_t_rt = 21, 170570af302Sopenharmony_ci ns_t_nsap = 22, 171570af302Sopenharmony_ci ns_t_nsap_ptr = 23, 172570af302Sopenharmony_ci ns_t_sig = 24, 173570af302Sopenharmony_ci ns_t_key = 25, 174570af302Sopenharmony_ci ns_t_px = 26, 175570af302Sopenharmony_ci ns_t_gpos = 27, 176570af302Sopenharmony_ci ns_t_aaaa = 28, 177570af302Sopenharmony_ci ns_t_loc = 29, 178570af302Sopenharmony_ci ns_t_nxt = 30, 179570af302Sopenharmony_ci ns_t_eid = 31, 180570af302Sopenharmony_ci ns_t_nimloc = 32, 181570af302Sopenharmony_ci ns_t_srv = 33, 182570af302Sopenharmony_ci ns_t_atma = 34, 183570af302Sopenharmony_ci ns_t_naptr = 35, 184570af302Sopenharmony_ci ns_t_kx = 36, 185570af302Sopenharmony_ci ns_t_cert = 37, 186570af302Sopenharmony_ci ns_t_a6 = 38, 187570af302Sopenharmony_ci ns_t_dname = 39, 188570af302Sopenharmony_ci ns_t_sink = 40, 189570af302Sopenharmony_ci ns_t_opt = 41, 190570af302Sopenharmony_ci ns_t_apl = 42, 191570af302Sopenharmony_ci ns_t_ds = 43, 192570af302Sopenharmony_ci ns_t_sshfp = 44, 193570af302Sopenharmony_ci ns_t_ipseckey = 45, 194570af302Sopenharmony_ci ns_t_rrsig = 46, 195570af302Sopenharmony_ci ns_t_nsec = 47, 196570af302Sopenharmony_ci ns_t_dnskey = 48, 197570af302Sopenharmony_ci ns_t_dhcid = 49, 198570af302Sopenharmony_ci ns_t_nsec3 = 50, 199570af302Sopenharmony_ci ns_t_nsec3param = 51, 200570af302Sopenharmony_ci ns_t_tlsa = 52, 201570af302Sopenharmony_ci ns_t_smimea = 53, 202570af302Sopenharmony_ci ns_t_hip = 55, 203570af302Sopenharmony_ci ns_t_ninfo = 56, 204570af302Sopenharmony_ci ns_t_rkey = 57, 205570af302Sopenharmony_ci ns_t_talink = 58, 206570af302Sopenharmony_ci ns_t_cds = 59, 207570af302Sopenharmony_ci ns_t_cdnskey = 60, 208570af302Sopenharmony_ci ns_t_openpgpkey = 61, 209570af302Sopenharmony_ci ns_t_csync = 62, 210570af302Sopenharmony_ci ns_t_spf = 99, 211570af302Sopenharmony_ci ns_t_uinfo = 100, 212570af302Sopenharmony_ci ns_t_uid = 101, 213570af302Sopenharmony_ci ns_t_gid = 102, 214570af302Sopenharmony_ci ns_t_unspec = 103, 215570af302Sopenharmony_ci ns_t_nid = 104, 216570af302Sopenharmony_ci ns_t_l32 = 105, 217570af302Sopenharmony_ci ns_t_l64 = 106, 218570af302Sopenharmony_ci ns_t_lp = 107, 219570af302Sopenharmony_ci ns_t_eui48 = 108, 220570af302Sopenharmony_ci ns_t_eui64 = 109, 221570af302Sopenharmony_ci ns_t_tkey = 249, 222570af302Sopenharmony_ci ns_t_tsig = 250, 223570af302Sopenharmony_ci ns_t_ixfr = 251, 224570af302Sopenharmony_ci ns_t_axfr = 252, 225570af302Sopenharmony_ci ns_t_mailb = 253, 226570af302Sopenharmony_ci ns_t_maila = 254, 227570af302Sopenharmony_ci ns_t_any = 255, 228570af302Sopenharmony_ci ns_t_zxfr = 256, 229570af302Sopenharmony_ci ns_t_uri = 256, 230570af302Sopenharmony_ci ns_t_caa = 257, 231570af302Sopenharmony_ci ns_t_avc = 258, 232570af302Sopenharmony_ci ns_t_ta = 32768, 233570af302Sopenharmony_ci ns_t_dlv = 32769, 234570af302Sopenharmony_ci ns_t_max = 65536 235570af302Sopenharmony_ci} ns_type; 236570af302Sopenharmony_ci 237570af302Sopenharmony_ci#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ 238570af302Sopenharmony_ci (t) == ns_t_mailb || (t) == ns_t_maila) 239570af302Sopenharmony_ci#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) 240570af302Sopenharmony_ci#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) 241570af302Sopenharmony_ci#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) 242570af302Sopenharmony_ci#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ 243570af302Sopenharmony_ci (t) == ns_t_zxfr) 244570af302Sopenharmony_ci 245570af302Sopenharmony_citypedef enum __ns_class { 246570af302Sopenharmony_ci ns_c_invalid = 0, 247570af302Sopenharmony_ci ns_c_in = 1, 248570af302Sopenharmony_ci ns_c_2 = 2, 249570af302Sopenharmony_ci ns_c_chaos = 3, 250570af302Sopenharmony_ci ns_c_hs = 4, 251570af302Sopenharmony_ci ns_c_none = 254, 252570af302Sopenharmony_ci ns_c_any = 255, 253570af302Sopenharmony_ci ns_c_max = 65536 254570af302Sopenharmony_ci} ns_class; 255570af302Sopenharmony_ci 256570af302Sopenharmony_citypedef enum __ns_key_types { 257570af302Sopenharmony_ci ns_kt_rsa = 1, 258570af302Sopenharmony_ci ns_kt_dh = 2, 259570af302Sopenharmony_ci ns_kt_dsa = 3, 260570af302Sopenharmony_ci ns_kt_private = 254 261570af302Sopenharmony_ci} ns_key_types; 262570af302Sopenharmony_ci 263570af302Sopenharmony_citypedef enum __ns_cert_types { 264570af302Sopenharmony_ci cert_t_pkix = 1, 265570af302Sopenharmony_ci cert_t_spki = 2, 266570af302Sopenharmony_ci cert_t_pgp = 3, 267570af302Sopenharmony_ci cert_t_url = 253, 268570af302Sopenharmony_ci cert_t_oid = 254 269570af302Sopenharmony_ci} ns_cert_types; 270570af302Sopenharmony_ci 271570af302Sopenharmony_ci#define NS_KEY_TYPEMASK 0xC000 272570af302Sopenharmony_ci#define NS_KEY_TYPE_AUTH_CONF 0x0000 273570af302Sopenharmony_ci#define NS_KEY_TYPE_CONF_ONLY 0x8000 274570af302Sopenharmony_ci#define NS_KEY_TYPE_AUTH_ONLY 0x4000 275570af302Sopenharmony_ci#define NS_KEY_TYPE_NO_KEY 0xC000 276570af302Sopenharmony_ci#define NS_KEY_NO_AUTH 0x8000 277570af302Sopenharmony_ci#define NS_KEY_NO_CONF 0x4000 278570af302Sopenharmony_ci#define NS_KEY_RESERVED2 0x2000 279570af302Sopenharmony_ci#define NS_KEY_EXTENDED_FLAGS 0x1000 280570af302Sopenharmony_ci#define NS_KEY_RESERVED4 0x0800 281570af302Sopenharmony_ci#define NS_KEY_RESERVED5 0x0400 282570af302Sopenharmony_ci#define NS_KEY_NAME_TYPE 0x0300 283570af302Sopenharmony_ci#define NS_KEY_NAME_USER 0x0000 284570af302Sopenharmony_ci#define NS_KEY_NAME_ENTITY 0x0200 285570af302Sopenharmony_ci#define NS_KEY_NAME_ZONE 0x0100 286570af302Sopenharmony_ci#define NS_KEY_NAME_RESERVED 0x0300 287570af302Sopenharmony_ci#define NS_KEY_RESERVED8 0x0080 288570af302Sopenharmony_ci#define NS_KEY_RESERVED9 0x0040 289570af302Sopenharmony_ci#define NS_KEY_RESERVED10 0x0020 290570af302Sopenharmony_ci#define NS_KEY_RESERVED11 0x0010 291570af302Sopenharmony_ci#define NS_KEY_SIGNATORYMASK 0x000F 292570af302Sopenharmony_ci#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ 293570af302Sopenharmony_ci NS_KEY_RESERVED4 | \ 294570af302Sopenharmony_ci NS_KEY_RESERVED5 | \ 295570af302Sopenharmony_ci NS_KEY_RESERVED8 | \ 296570af302Sopenharmony_ci NS_KEY_RESERVED9 | \ 297570af302Sopenharmony_ci NS_KEY_RESERVED10 | \ 298570af302Sopenharmony_ci NS_KEY_RESERVED11 ) 299570af302Sopenharmony_ci#define NS_KEY_RESERVED_BITMASK2 0xFFFF 300570af302Sopenharmony_ci#define NS_ALG_MD5RSA 1 301570af302Sopenharmony_ci#define NS_ALG_DH 2 302570af302Sopenharmony_ci#define NS_ALG_DSA 3 303570af302Sopenharmony_ci#define NS_ALG_DSS NS_ALG_DSA 304570af302Sopenharmony_ci#define NS_ALG_EXPIRE_ONLY 253 305570af302Sopenharmony_ci#define NS_ALG_PRIVATE_OID 254 306570af302Sopenharmony_ci 307570af302Sopenharmony_ci#define NS_KEY_PROT_TLS 1 308570af302Sopenharmony_ci#define NS_KEY_PROT_EMAIL 2 309570af302Sopenharmony_ci#define NS_KEY_PROT_DNSSEC 3 310570af302Sopenharmony_ci#define NS_KEY_PROT_IPSEC 4 311570af302Sopenharmony_ci#define NS_KEY_PROT_ANY 255 312570af302Sopenharmony_ci 313570af302Sopenharmony_ci#define NS_MD5RSA_MIN_BITS 512 314570af302Sopenharmony_ci#define NS_MD5RSA_MAX_BITS 4096 315570af302Sopenharmony_ci#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) 316570af302Sopenharmony_ci#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) 317570af302Sopenharmony_ci#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) 318570af302Sopenharmony_ci#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) 319570af302Sopenharmony_ci 320570af302Sopenharmony_ci#define NS_DSA_SIG_SIZE 41 321570af302Sopenharmony_ci#define NS_DSA_MIN_SIZE 213 322570af302Sopenharmony_ci#define NS_DSA_MAX_BYTES 405 323570af302Sopenharmony_ci 324570af302Sopenharmony_ci#define NS_SIG_TYPE 0 325570af302Sopenharmony_ci#define NS_SIG_ALG 2 326570af302Sopenharmony_ci#define NS_SIG_LABELS 3 327570af302Sopenharmony_ci#define NS_SIG_OTTL 4 328570af302Sopenharmony_ci#define NS_SIG_EXPIR 8 329570af302Sopenharmony_ci#define NS_SIG_SIGNED 12 330570af302Sopenharmony_ci#define NS_SIG_FOOT 16 331570af302Sopenharmony_ci#define NS_SIG_SIGNER 18 332570af302Sopenharmony_ci#define NS_NXT_BITS 8 333570af302Sopenharmony_ci#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) 334570af302Sopenharmony_ci#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) 335570af302Sopenharmony_ci#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) 336570af302Sopenharmony_ci#define NS_NXT_MAX 127 337570af302Sopenharmony_ci 338570af302Sopenharmony_ci#define NS_OPT_DNSSEC_OK 0x8000U 339570af302Sopenharmony_ci#define NS_OPT_NSID 3 340570af302Sopenharmony_ci 341570af302Sopenharmony_ci#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2)) 342570af302Sopenharmony_ci#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4)) 343570af302Sopenharmony_ci#define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2) 344570af302Sopenharmony_ci#define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4) 345570af302Sopenharmony_ci 346570af302Sopenharmony_ciunsigned ns_get16(const unsigned char *); 347570af302Sopenharmony_ciunsigned long ns_get32(const unsigned char *); 348570af302Sopenharmony_civoid ns_put16(unsigned, unsigned char *); 349570af302Sopenharmony_civoid ns_put32(unsigned long, unsigned char *); 350570af302Sopenharmony_ci 351570af302Sopenharmony_ciint ns_initparse(const unsigned char *, int, ns_msg *); 352570af302Sopenharmony_ciint ns_parserr(ns_msg *, ns_sect, int, ns_rr *); 353570af302Sopenharmony_ciint ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int); 354570af302Sopenharmony_ciint ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t); 355570af302Sopenharmony_ci 356570af302Sopenharmony_ci 357570af302Sopenharmony_ci#define __BIND 19950621 358570af302Sopenharmony_ci 359570af302Sopenharmony_citypedef struct { 360570af302Sopenharmony_ci unsigned id :16; 361570af302Sopenharmony_ci#if __BYTE_ORDER == __BIG_ENDIAN 362570af302Sopenharmony_ci unsigned qr: 1; 363570af302Sopenharmony_ci unsigned opcode: 4; 364570af302Sopenharmony_ci unsigned aa: 1; 365570af302Sopenharmony_ci unsigned tc: 1; 366570af302Sopenharmony_ci unsigned rd: 1; 367570af302Sopenharmony_ci unsigned ra: 1; 368570af302Sopenharmony_ci unsigned unused :1; 369570af302Sopenharmony_ci unsigned ad: 1; 370570af302Sopenharmony_ci unsigned cd: 1; 371570af302Sopenharmony_ci unsigned rcode :4; 372570af302Sopenharmony_ci#else 373570af302Sopenharmony_ci unsigned rd :1; 374570af302Sopenharmony_ci unsigned tc :1; 375570af302Sopenharmony_ci unsigned aa :1; 376570af302Sopenharmony_ci unsigned opcode :4; 377570af302Sopenharmony_ci unsigned qr :1; 378570af302Sopenharmony_ci unsigned rcode :4; 379570af302Sopenharmony_ci unsigned cd: 1; 380570af302Sopenharmony_ci unsigned ad: 1; 381570af302Sopenharmony_ci unsigned unused :1; 382570af302Sopenharmony_ci unsigned ra :1; 383570af302Sopenharmony_ci#endif 384570af302Sopenharmony_ci unsigned qdcount :16; 385570af302Sopenharmony_ci unsigned ancount :16; 386570af302Sopenharmony_ci unsigned nscount :16; 387570af302Sopenharmony_ci unsigned arcount :16; 388570af302Sopenharmony_ci} HEADER; 389570af302Sopenharmony_ci 390570af302Sopenharmony_ci#define PACKETSZ NS_PACKETSZ 391570af302Sopenharmony_ci#define MAXDNAME NS_MAXDNAME 392570af302Sopenharmony_ci#define MAXCDNAME NS_MAXCDNAME 393570af302Sopenharmony_ci#define MAXLABEL NS_MAXLABEL 394570af302Sopenharmony_ci#define HFIXEDSZ NS_HFIXEDSZ 395570af302Sopenharmony_ci#define QFIXEDSZ NS_QFIXEDSZ 396570af302Sopenharmony_ci#define RRFIXEDSZ NS_RRFIXEDSZ 397570af302Sopenharmony_ci#define INT32SZ NS_INT32SZ 398570af302Sopenharmony_ci#define INT16SZ NS_INT16SZ 399570af302Sopenharmony_ci#define INT8SZ NS_INT8SZ 400570af302Sopenharmony_ci#define INADDRSZ NS_INADDRSZ 401570af302Sopenharmony_ci#define IN6ADDRSZ NS_IN6ADDRSZ 402570af302Sopenharmony_ci#define INDIR_MASK NS_CMPRSFLGS 403570af302Sopenharmony_ci#define NAMESERVER_PORT NS_DEFAULTPORT 404570af302Sopenharmony_ci 405570af302Sopenharmony_ci#define S_ZONE ns_s_zn 406570af302Sopenharmony_ci#define S_PREREQ ns_s_pr 407570af302Sopenharmony_ci#define S_UPDATE ns_s_ud 408570af302Sopenharmony_ci#define S_ADDT ns_s_ar 409570af302Sopenharmony_ci 410570af302Sopenharmony_ci#define QUERY ns_o_query 411570af302Sopenharmony_ci#define IQUERY ns_o_iquery 412570af302Sopenharmony_ci#define STATUS ns_o_status 413570af302Sopenharmony_ci#define NS_NOTIFY_OP ns_o_notify 414570af302Sopenharmony_ci#define NS_UPDATE_OP ns_o_update 415570af302Sopenharmony_ci 416570af302Sopenharmony_ci#define NOERROR ns_r_noerror 417570af302Sopenharmony_ci#define FORMERR ns_r_formerr 418570af302Sopenharmony_ci#define SERVFAIL ns_r_servfail 419570af302Sopenharmony_ci#define NXDOMAIN ns_r_nxdomain 420570af302Sopenharmony_ci#define NOTIMP ns_r_notimpl 421570af302Sopenharmony_ci#define REFUSED ns_r_refused 422570af302Sopenharmony_ci#define YXDOMAIN ns_r_yxdomain 423570af302Sopenharmony_ci#define YXRRSET ns_r_yxrrset 424570af302Sopenharmony_ci#define NXRRSET ns_r_nxrrset 425570af302Sopenharmony_ci#define NOTAUTH ns_r_notauth 426570af302Sopenharmony_ci#define NOTZONE ns_r_notzone 427570af302Sopenharmony_ci 428570af302Sopenharmony_ci#define DELETE ns_uop_delete 429570af302Sopenharmony_ci#define ADD ns_uop_add 430570af302Sopenharmony_ci 431570af302Sopenharmony_ci#define T_A ns_t_a 432570af302Sopenharmony_ci#define T_NS ns_t_ns 433570af302Sopenharmony_ci#define T_MD ns_t_md 434570af302Sopenharmony_ci#define T_MF ns_t_mf 435570af302Sopenharmony_ci#define T_CNAME ns_t_cname 436570af302Sopenharmony_ci#define T_SOA ns_t_soa 437570af302Sopenharmony_ci#define T_MB ns_t_mb 438570af302Sopenharmony_ci#define T_MG ns_t_mg 439570af302Sopenharmony_ci#define T_MR ns_t_mr 440570af302Sopenharmony_ci#define T_NULL ns_t_null 441570af302Sopenharmony_ci#define T_WKS ns_t_wks 442570af302Sopenharmony_ci#define T_PTR ns_t_ptr 443570af302Sopenharmony_ci#define T_HINFO ns_t_hinfo 444570af302Sopenharmony_ci#define T_MINFO ns_t_minfo 445570af302Sopenharmony_ci#define T_MX ns_t_mx 446570af302Sopenharmony_ci#define T_TXT ns_t_txt 447570af302Sopenharmony_ci#define T_RP ns_t_rp 448570af302Sopenharmony_ci#define T_AFSDB ns_t_afsdb 449570af302Sopenharmony_ci#define T_X25 ns_t_x25 450570af302Sopenharmony_ci#define T_ISDN ns_t_isdn 451570af302Sopenharmony_ci#define T_RT ns_t_rt 452570af302Sopenharmony_ci#define T_NSAP ns_t_nsap 453570af302Sopenharmony_ci#define T_NSAP_PTR ns_t_nsap_ptr 454570af302Sopenharmony_ci#define T_SIG ns_t_sig 455570af302Sopenharmony_ci#define T_KEY ns_t_key 456570af302Sopenharmony_ci#define T_PX ns_t_px 457570af302Sopenharmony_ci#define T_GPOS ns_t_gpos 458570af302Sopenharmony_ci#define T_AAAA ns_t_aaaa 459570af302Sopenharmony_ci#define T_LOC ns_t_loc 460570af302Sopenharmony_ci#define T_NXT ns_t_nxt 461570af302Sopenharmony_ci#define T_EID ns_t_eid 462570af302Sopenharmony_ci#define T_NIMLOC ns_t_nimloc 463570af302Sopenharmony_ci#define T_SRV ns_t_srv 464570af302Sopenharmony_ci#define T_ATMA ns_t_atma 465570af302Sopenharmony_ci#define T_NAPTR ns_t_naptr 466570af302Sopenharmony_ci#define T_A6 ns_t_a6 467570af302Sopenharmony_ci#define T_DNAME ns_t_dname 468570af302Sopenharmony_ci#define T_DS ns_t_ds 469570af302Sopenharmony_ci#define T_SSHFP ns_t_sshfp 470570af302Sopenharmony_ci#define T_IPSECKEY ns_t_ipseckey 471570af302Sopenharmony_ci#define T_RRSIG ns_t_rrsig 472570af302Sopenharmony_ci#define T_NSEC ns_t_nsec 473570af302Sopenharmony_ci#define T_DNSKEY ns_t_dnskey 474570af302Sopenharmony_ci#define T_DHCID ns_t_dhcid 475570af302Sopenharmony_ci#define T_NSEC3 ns_t_nsec3 476570af302Sopenharmony_ci#define T_NSEC3PARAM ns_t_nsec3param 477570af302Sopenharmony_ci#define T_TLSA ns_t_tlsa 478570af302Sopenharmony_ci#define T_SMIMEA ns_t_smimea 479570af302Sopenharmony_ci#define T_HIP ns_t_hip 480570af302Sopenharmony_ci#define T_NINFO ns_t_ninfo 481570af302Sopenharmony_ci#define T_RKEY ns_t_rkey 482570af302Sopenharmony_ci#define T_TALINK ns_t_talink 483570af302Sopenharmony_ci#define T_CDS ns_t_cds 484570af302Sopenharmony_ci#define T_CDNSKEY ns_t_cdnskey 485570af302Sopenharmony_ci#define T_OPENPGPKEY ns_t_openpgpkey 486570af302Sopenharmony_ci#define T_CSYNC ns_t_csync 487570af302Sopenharmony_ci#define T_SPF ns_t_spf 488570af302Sopenharmony_ci#define T_UINFO ns_t_uinfo 489570af302Sopenharmony_ci#define T_UID ns_t_uid 490570af302Sopenharmony_ci#define T_GID ns_t_gid 491570af302Sopenharmony_ci#define T_UNSPEC ns_t_unspec 492570af302Sopenharmony_ci#define T_NID ns_t_nid 493570af302Sopenharmony_ci#define T_L32 ns_t_l32 494570af302Sopenharmony_ci#define T_L64 ns_t_l64 495570af302Sopenharmony_ci#define T_LP ns_t_lp 496570af302Sopenharmony_ci#define T_EUI48 ns_t_eui48 497570af302Sopenharmony_ci#define T_EUI64 ns_t_eui64 498570af302Sopenharmony_ci#define T_TKEY ns_t_tkey 499570af302Sopenharmony_ci#define T_TSIG ns_t_tsig 500570af302Sopenharmony_ci#define T_IXFR ns_t_ixfr 501570af302Sopenharmony_ci#define T_AXFR ns_t_axfr 502570af302Sopenharmony_ci#define T_MAILB ns_t_mailb 503570af302Sopenharmony_ci#define T_MAILA ns_t_maila 504570af302Sopenharmony_ci#define T_ANY ns_t_any 505570af302Sopenharmony_ci#define T_URI ns_t_uri 506570af302Sopenharmony_ci#define T_CAA ns_t_caa 507570af302Sopenharmony_ci#define T_AVC ns_t_avc 508570af302Sopenharmony_ci#define T_TA ns_t_ta 509570af302Sopenharmony_ci#define T_DLV ns_t_dlv 510570af302Sopenharmony_ci 511570af302Sopenharmony_ci#define C_IN ns_c_in 512570af302Sopenharmony_ci#define C_CHAOS ns_c_chaos 513570af302Sopenharmony_ci#define C_HS ns_c_hs 514570af302Sopenharmony_ci#define C_NONE ns_c_none 515570af302Sopenharmony_ci#define C_ANY ns_c_any 516570af302Sopenharmony_ci 517570af302Sopenharmony_ci#define GETSHORT NS_GET16 518570af302Sopenharmony_ci#define GETLONG NS_GET32 519570af302Sopenharmony_ci#define PUTSHORT NS_PUT16 520570af302Sopenharmony_ci#define PUTLONG NS_PUT32 521570af302Sopenharmony_ci 522570af302Sopenharmony_ci#ifdef __cplusplus 523570af302Sopenharmony_ci} 524570af302Sopenharmony_ci#endif 525570af302Sopenharmony_ci 526570af302Sopenharmony_ci#endif 527