1*cda5da8dSAndroid Build Coastguard Worker #ifndef _ARPA_NAMESER_H 2*cda5da8dSAndroid Build Coastguard Worker #define _ARPA_NAMESER_H 3*cda5da8dSAndroid Build Coastguard Worker 4*cda5da8dSAndroid Build Coastguard Worker #ifdef __cplusplus 5*cda5da8dSAndroid Build Coastguard Worker extern "C" { 6*cda5da8dSAndroid Build Coastguard Worker #endif 7*cda5da8dSAndroid Build Coastguard Worker 8*cda5da8dSAndroid Build Coastguard Worker #include <stddef.h> 9*cda5da8dSAndroid Build Coastguard Worker #include <stdint.h> 10*cda5da8dSAndroid Build Coastguard Worker 11*cda5da8dSAndroid Build Coastguard Worker #define __NAMESER 19991006 12*cda5da8dSAndroid Build Coastguard Worker #define NS_PACKETSZ 512 13*cda5da8dSAndroid Build Coastguard Worker #define NS_MAXDNAME 1025 14*cda5da8dSAndroid Build Coastguard Worker #define NS_MAXMSG 65535 15*cda5da8dSAndroid Build Coastguard Worker #define NS_MAXCDNAME 255 16*cda5da8dSAndroid Build Coastguard Worker #define NS_MAXLABEL 63 17*cda5da8dSAndroid Build Coastguard Worker #define NS_HFIXEDSZ 12 18*cda5da8dSAndroid Build Coastguard Worker #define NS_QFIXEDSZ 4 19*cda5da8dSAndroid Build Coastguard Worker #define NS_RRFIXEDSZ 10 20*cda5da8dSAndroid Build Coastguard Worker #define NS_INT32SZ 4 21*cda5da8dSAndroid Build Coastguard Worker #define NS_INT16SZ 2 22*cda5da8dSAndroid Build Coastguard Worker #define NS_INT8SZ 1 23*cda5da8dSAndroid Build Coastguard Worker #define NS_INADDRSZ 4 24*cda5da8dSAndroid Build Coastguard Worker #define NS_IN6ADDRSZ 16 25*cda5da8dSAndroid Build Coastguard Worker #define NS_CMPRSFLGS 0xc0 26*cda5da8dSAndroid Build Coastguard Worker #define NS_DEFAULTPORT 53 27*cda5da8dSAndroid Build Coastguard Worker 28*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_sect { 29*cda5da8dSAndroid Build Coastguard Worker ns_s_qd = 0, 30*cda5da8dSAndroid Build Coastguard Worker ns_s_zn = 0, 31*cda5da8dSAndroid Build Coastguard Worker ns_s_an = 1, 32*cda5da8dSAndroid Build Coastguard Worker ns_s_pr = 1, 33*cda5da8dSAndroid Build Coastguard Worker ns_s_ns = 2, 34*cda5da8dSAndroid Build Coastguard Worker ns_s_ud = 2, 35*cda5da8dSAndroid Build Coastguard Worker ns_s_ar = 3, 36*cda5da8dSAndroid Build Coastguard Worker ns_s_max = 4 37*cda5da8dSAndroid Build Coastguard Worker } ns_sect; 38*cda5da8dSAndroid Build Coastguard Worker 39*cda5da8dSAndroid Build Coastguard Worker typedef struct __ns_msg { 40*cda5da8dSAndroid Build Coastguard Worker const unsigned char *_msg, *_eom; 41*cda5da8dSAndroid Build Coastguard Worker uint16_t _id, _flags, _counts[ns_s_max]; 42*cda5da8dSAndroid Build Coastguard Worker const unsigned char *_sections[ns_s_max]; 43*cda5da8dSAndroid Build Coastguard Worker ns_sect _sect; 44*cda5da8dSAndroid Build Coastguard Worker int _rrnum; 45*cda5da8dSAndroid Build Coastguard Worker const unsigned char *_msg_ptr; 46*cda5da8dSAndroid Build Coastguard Worker } ns_msg; 47*cda5da8dSAndroid Build Coastguard Worker 48*cda5da8dSAndroid Build Coastguard Worker struct _ns_flagdata { int mask, shift; }; 49*cda5da8dSAndroid Build Coastguard Worker extern const struct _ns_flagdata _ns_flagdata[]; 50*cda5da8dSAndroid Build Coastguard Worker 51*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_id(handle) ((handle)._id + 0) 52*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_base(handle) ((handle)._msg + 0) 53*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_end(handle) ((handle)._eom + 0) 54*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_size(handle) ((handle)._eom - (handle)._msg) 55*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_count(handle, section) ((handle)._counts[section] + 0) 56*cda5da8dSAndroid Build Coastguard Worker #define ns_msg_getflag(handle, flag) \ 57*cda5da8dSAndroid Build Coastguard Worker (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift) 58*cda5da8dSAndroid Build Coastguard Worker 59*cda5da8dSAndroid Build Coastguard Worker typedef struct __ns_rr { 60*cda5da8dSAndroid Build Coastguard Worker char name[NS_MAXDNAME]; 61*cda5da8dSAndroid Build Coastguard Worker uint16_t type; 62*cda5da8dSAndroid Build Coastguard Worker uint16_t rr_class; 63*cda5da8dSAndroid Build Coastguard Worker uint32_t ttl; 64*cda5da8dSAndroid Build Coastguard Worker uint16_t rdlength; 65*cda5da8dSAndroid Build Coastguard Worker const unsigned char *rdata; 66*cda5da8dSAndroid Build Coastguard Worker } ns_rr; 67*cda5da8dSAndroid Build Coastguard Worker 68*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") 69*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_type(rr) ((ns_type)((rr).type + 0)) 70*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) 71*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_ttl(rr) ((rr).ttl + 0) 72*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_rdlen(rr) ((rr).rdlength + 0) 73*cda5da8dSAndroid Build Coastguard Worker #define ns_rr_rdata(rr) ((rr).rdata + 0) 74*cda5da8dSAndroid Build Coastguard Worker 75*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_flag { 76*cda5da8dSAndroid Build Coastguard Worker ns_f_qr, 77*cda5da8dSAndroid Build Coastguard Worker ns_f_opcode, 78*cda5da8dSAndroid Build Coastguard Worker ns_f_aa, 79*cda5da8dSAndroid Build Coastguard Worker ns_f_tc, 80*cda5da8dSAndroid Build Coastguard Worker ns_f_rd, 81*cda5da8dSAndroid Build Coastguard Worker ns_f_ra, 82*cda5da8dSAndroid Build Coastguard Worker ns_f_z, 83*cda5da8dSAndroid Build Coastguard Worker ns_f_ad, 84*cda5da8dSAndroid Build Coastguard Worker ns_f_cd, 85*cda5da8dSAndroid Build Coastguard Worker ns_f_rcode, 86*cda5da8dSAndroid Build Coastguard Worker ns_f_max 87*cda5da8dSAndroid Build Coastguard Worker } ns_flag; 88*cda5da8dSAndroid Build Coastguard Worker 89*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_opcode { 90*cda5da8dSAndroid Build Coastguard Worker ns_o_query = 0, 91*cda5da8dSAndroid Build Coastguard Worker ns_o_iquery = 1, 92*cda5da8dSAndroid Build Coastguard Worker ns_o_status = 2, 93*cda5da8dSAndroid Build Coastguard Worker ns_o_notify = 4, 94*cda5da8dSAndroid Build Coastguard Worker ns_o_update = 5, 95*cda5da8dSAndroid Build Coastguard Worker ns_o_max = 6 96*cda5da8dSAndroid Build Coastguard Worker } ns_opcode; 97*cda5da8dSAndroid Build Coastguard Worker 98*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_rcode { 99*cda5da8dSAndroid Build Coastguard Worker ns_r_noerror = 0, 100*cda5da8dSAndroid Build Coastguard Worker ns_r_formerr = 1, 101*cda5da8dSAndroid Build Coastguard Worker ns_r_servfail = 2, 102*cda5da8dSAndroid Build Coastguard Worker ns_r_nxdomain = 3, 103*cda5da8dSAndroid Build Coastguard Worker ns_r_notimpl = 4, 104*cda5da8dSAndroid Build Coastguard Worker ns_r_refused = 5, 105*cda5da8dSAndroid Build Coastguard Worker ns_r_yxdomain = 6, 106*cda5da8dSAndroid Build Coastguard Worker ns_r_yxrrset = 7, 107*cda5da8dSAndroid Build Coastguard Worker ns_r_nxrrset = 8, 108*cda5da8dSAndroid Build Coastguard Worker ns_r_notauth = 9, 109*cda5da8dSAndroid Build Coastguard Worker ns_r_notzone = 10, 110*cda5da8dSAndroid Build Coastguard Worker ns_r_max = 11, 111*cda5da8dSAndroid Build Coastguard Worker ns_r_badvers = 16, 112*cda5da8dSAndroid Build Coastguard Worker ns_r_badsig = 16, 113*cda5da8dSAndroid Build Coastguard Worker ns_r_badkey = 17, 114*cda5da8dSAndroid Build Coastguard Worker ns_r_badtime = 18 115*cda5da8dSAndroid Build Coastguard Worker } ns_rcode; 116*cda5da8dSAndroid Build Coastguard Worker 117*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_update_operation { 118*cda5da8dSAndroid Build Coastguard Worker ns_uop_delete = 0, 119*cda5da8dSAndroid Build Coastguard Worker ns_uop_add = 1, 120*cda5da8dSAndroid Build Coastguard Worker ns_uop_max = 2 121*cda5da8dSAndroid Build Coastguard Worker } ns_update_operation; 122*cda5da8dSAndroid Build Coastguard Worker 123*cda5da8dSAndroid Build Coastguard Worker struct ns_tsig_key { 124*cda5da8dSAndroid Build Coastguard Worker char name[NS_MAXDNAME], alg[NS_MAXDNAME]; 125*cda5da8dSAndroid Build Coastguard Worker unsigned char *data; 126*cda5da8dSAndroid Build Coastguard Worker int len; 127*cda5da8dSAndroid Build Coastguard Worker }; 128*cda5da8dSAndroid Build Coastguard Worker typedef struct ns_tsig_key ns_tsig_key; 129*cda5da8dSAndroid Build Coastguard Worker 130*cda5da8dSAndroid Build Coastguard Worker struct ns_tcp_tsig_state { 131*cda5da8dSAndroid Build Coastguard Worker int counter; 132*cda5da8dSAndroid Build Coastguard Worker struct dst_key *key; 133*cda5da8dSAndroid Build Coastguard Worker void *ctx; 134*cda5da8dSAndroid Build Coastguard Worker unsigned char sig[NS_PACKETSZ]; 135*cda5da8dSAndroid Build Coastguard Worker int siglen; 136*cda5da8dSAndroid Build Coastguard Worker }; 137*cda5da8dSAndroid Build Coastguard Worker typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; 138*cda5da8dSAndroid Build Coastguard Worker 139*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_FUDGE 300 140*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_TCP_COUNT 100 141*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" 142*cda5da8dSAndroid Build Coastguard Worker 143*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_ERROR_NO_TSIG -10 144*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_ERROR_NO_SPACE -11 145*cda5da8dSAndroid Build Coastguard Worker #define NS_TSIG_ERROR_FORMERR -12 146*cda5da8dSAndroid Build Coastguard Worker 147*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_type { 148*cda5da8dSAndroid Build Coastguard Worker ns_t_invalid = 0, 149*cda5da8dSAndroid Build Coastguard Worker ns_t_a = 1, 150*cda5da8dSAndroid Build Coastguard Worker ns_t_ns = 2, 151*cda5da8dSAndroid Build Coastguard Worker ns_t_md = 3, 152*cda5da8dSAndroid Build Coastguard Worker ns_t_mf = 4, 153*cda5da8dSAndroid Build Coastguard Worker ns_t_cname = 5, 154*cda5da8dSAndroid Build Coastguard Worker ns_t_soa = 6, 155*cda5da8dSAndroid Build Coastguard Worker ns_t_mb = 7, 156*cda5da8dSAndroid Build Coastguard Worker ns_t_mg = 8, 157*cda5da8dSAndroid Build Coastguard Worker ns_t_mr = 9, 158*cda5da8dSAndroid Build Coastguard Worker ns_t_null = 10, 159*cda5da8dSAndroid Build Coastguard Worker ns_t_wks = 11, 160*cda5da8dSAndroid Build Coastguard Worker ns_t_ptr = 12, 161*cda5da8dSAndroid Build Coastguard Worker ns_t_hinfo = 13, 162*cda5da8dSAndroid Build Coastguard Worker ns_t_minfo = 14, 163*cda5da8dSAndroid Build Coastguard Worker ns_t_mx = 15, 164*cda5da8dSAndroid Build Coastguard Worker ns_t_txt = 16, 165*cda5da8dSAndroid Build Coastguard Worker ns_t_rp = 17, 166*cda5da8dSAndroid Build Coastguard Worker ns_t_afsdb = 18, 167*cda5da8dSAndroid Build Coastguard Worker ns_t_x25 = 19, 168*cda5da8dSAndroid Build Coastguard Worker ns_t_isdn = 20, 169*cda5da8dSAndroid Build Coastguard Worker ns_t_rt = 21, 170*cda5da8dSAndroid Build Coastguard Worker ns_t_nsap = 22, 171*cda5da8dSAndroid Build Coastguard Worker ns_t_nsap_ptr = 23, 172*cda5da8dSAndroid Build Coastguard Worker ns_t_sig = 24, 173*cda5da8dSAndroid Build Coastguard Worker ns_t_key = 25, 174*cda5da8dSAndroid Build Coastguard Worker ns_t_px = 26, 175*cda5da8dSAndroid Build Coastguard Worker ns_t_gpos = 27, 176*cda5da8dSAndroid Build Coastguard Worker ns_t_aaaa = 28, 177*cda5da8dSAndroid Build Coastguard Worker ns_t_loc = 29, 178*cda5da8dSAndroid Build Coastguard Worker ns_t_nxt = 30, 179*cda5da8dSAndroid Build Coastguard Worker ns_t_eid = 31, 180*cda5da8dSAndroid Build Coastguard Worker ns_t_nimloc = 32, 181*cda5da8dSAndroid Build Coastguard Worker ns_t_srv = 33, 182*cda5da8dSAndroid Build Coastguard Worker ns_t_atma = 34, 183*cda5da8dSAndroid Build Coastguard Worker ns_t_naptr = 35, 184*cda5da8dSAndroid Build Coastguard Worker ns_t_kx = 36, 185*cda5da8dSAndroid Build Coastguard Worker ns_t_cert = 37, 186*cda5da8dSAndroid Build Coastguard Worker ns_t_a6 = 38, 187*cda5da8dSAndroid Build Coastguard Worker ns_t_dname = 39, 188*cda5da8dSAndroid Build Coastguard Worker ns_t_sink = 40, 189*cda5da8dSAndroid Build Coastguard Worker ns_t_opt = 41, 190*cda5da8dSAndroid Build Coastguard Worker ns_t_apl = 42, 191*cda5da8dSAndroid Build Coastguard Worker ns_t_ds = 43, 192*cda5da8dSAndroid Build Coastguard Worker ns_t_sshfp = 44, 193*cda5da8dSAndroid Build Coastguard Worker ns_t_ipseckey = 45, 194*cda5da8dSAndroid Build Coastguard Worker ns_t_rrsig = 46, 195*cda5da8dSAndroid Build Coastguard Worker ns_t_nsec = 47, 196*cda5da8dSAndroid Build Coastguard Worker ns_t_dnskey = 48, 197*cda5da8dSAndroid Build Coastguard Worker ns_t_dhcid = 49, 198*cda5da8dSAndroid Build Coastguard Worker ns_t_nsec3 = 50, 199*cda5da8dSAndroid Build Coastguard Worker ns_t_nsec3param = 51, 200*cda5da8dSAndroid Build Coastguard Worker ns_t_tlsa = 52, 201*cda5da8dSAndroid Build Coastguard Worker ns_t_smimea = 53, 202*cda5da8dSAndroid Build Coastguard Worker ns_t_hip = 55, 203*cda5da8dSAndroid Build Coastguard Worker ns_t_ninfo = 56, 204*cda5da8dSAndroid Build Coastguard Worker ns_t_rkey = 57, 205*cda5da8dSAndroid Build Coastguard Worker ns_t_talink = 58, 206*cda5da8dSAndroid Build Coastguard Worker ns_t_cds = 59, 207*cda5da8dSAndroid Build Coastguard Worker ns_t_cdnskey = 60, 208*cda5da8dSAndroid Build Coastguard Worker ns_t_openpgpkey = 61, 209*cda5da8dSAndroid Build Coastguard Worker ns_t_csync = 62, 210*cda5da8dSAndroid Build Coastguard Worker ns_t_spf = 99, 211*cda5da8dSAndroid Build Coastguard Worker ns_t_uinfo = 100, 212*cda5da8dSAndroid Build Coastguard Worker ns_t_uid = 101, 213*cda5da8dSAndroid Build Coastguard Worker ns_t_gid = 102, 214*cda5da8dSAndroid Build Coastguard Worker ns_t_unspec = 103, 215*cda5da8dSAndroid Build Coastguard Worker ns_t_nid = 104, 216*cda5da8dSAndroid Build Coastguard Worker ns_t_l32 = 105, 217*cda5da8dSAndroid Build Coastguard Worker ns_t_l64 = 106, 218*cda5da8dSAndroid Build Coastguard Worker ns_t_lp = 107, 219*cda5da8dSAndroid Build Coastguard Worker ns_t_eui48 = 108, 220*cda5da8dSAndroid Build Coastguard Worker ns_t_eui64 = 109, 221*cda5da8dSAndroid Build Coastguard Worker ns_t_tkey = 249, 222*cda5da8dSAndroid Build Coastguard Worker ns_t_tsig = 250, 223*cda5da8dSAndroid Build Coastguard Worker ns_t_ixfr = 251, 224*cda5da8dSAndroid Build Coastguard Worker ns_t_axfr = 252, 225*cda5da8dSAndroid Build Coastguard Worker ns_t_mailb = 253, 226*cda5da8dSAndroid Build Coastguard Worker ns_t_maila = 254, 227*cda5da8dSAndroid Build Coastguard Worker ns_t_any = 255, 228*cda5da8dSAndroid Build Coastguard Worker ns_t_zxfr = 256, 229*cda5da8dSAndroid Build Coastguard Worker ns_t_uri = 256, 230*cda5da8dSAndroid Build Coastguard Worker ns_t_caa = 257, 231*cda5da8dSAndroid Build Coastguard Worker ns_t_avc = 258, 232*cda5da8dSAndroid Build Coastguard Worker ns_t_ta = 32768, 233*cda5da8dSAndroid Build Coastguard Worker ns_t_dlv = 32769, 234*cda5da8dSAndroid Build Coastguard Worker ns_t_max = 65536 235*cda5da8dSAndroid Build Coastguard Worker } ns_type; 236*cda5da8dSAndroid Build Coastguard Worker 237*cda5da8dSAndroid Build Coastguard Worker #define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ 238*cda5da8dSAndroid Build Coastguard Worker (t) == ns_t_mailb || (t) == ns_t_maila) 239*cda5da8dSAndroid Build Coastguard Worker #define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) 240*cda5da8dSAndroid Build Coastguard Worker #define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) 241*cda5da8dSAndroid Build Coastguard Worker #define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) 242*cda5da8dSAndroid Build Coastguard Worker #define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ 243*cda5da8dSAndroid Build Coastguard Worker (t) == ns_t_zxfr) 244*cda5da8dSAndroid Build Coastguard Worker 245*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_class { 246*cda5da8dSAndroid Build Coastguard Worker ns_c_invalid = 0, 247*cda5da8dSAndroid Build Coastguard Worker ns_c_in = 1, 248*cda5da8dSAndroid Build Coastguard Worker ns_c_2 = 2, 249*cda5da8dSAndroid Build Coastguard Worker ns_c_chaos = 3, 250*cda5da8dSAndroid Build Coastguard Worker ns_c_hs = 4, 251*cda5da8dSAndroid Build Coastguard Worker ns_c_none = 254, 252*cda5da8dSAndroid Build Coastguard Worker ns_c_any = 255, 253*cda5da8dSAndroid Build Coastguard Worker ns_c_max = 65536 254*cda5da8dSAndroid Build Coastguard Worker } ns_class; 255*cda5da8dSAndroid Build Coastguard Worker 256*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_key_types { 257*cda5da8dSAndroid Build Coastguard Worker ns_kt_rsa = 1, 258*cda5da8dSAndroid Build Coastguard Worker ns_kt_dh = 2, 259*cda5da8dSAndroid Build Coastguard Worker ns_kt_dsa = 3, 260*cda5da8dSAndroid Build Coastguard Worker ns_kt_private = 254 261*cda5da8dSAndroid Build Coastguard Worker } ns_key_types; 262*cda5da8dSAndroid Build Coastguard Worker 263*cda5da8dSAndroid Build Coastguard Worker typedef enum __ns_cert_types { 264*cda5da8dSAndroid Build Coastguard Worker cert_t_pkix = 1, 265*cda5da8dSAndroid Build Coastguard Worker cert_t_spki = 2, 266*cda5da8dSAndroid Build Coastguard Worker cert_t_pgp = 3, 267*cda5da8dSAndroid Build Coastguard Worker cert_t_url = 253, 268*cda5da8dSAndroid Build Coastguard Worker cert_t_oid = 254 269*cda5da8dSAndroid Build Coastguard Worker } ns_cert_types; 270*cda5da8dSAndroid Build Coastguard Worker 271*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_TYPEMASK 0xC000 272*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_TYPE_AUTH_CONF 0x0000 273*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_TYPE_CONF_ONLY 0x8000 274*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_TYPE_AUTH_ONLY 0x4000 275*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_TYPE_NO_KEY 0xC000 276*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NO_AUTH 0x8000 277*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NO_CONF 0x4000 278*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED2 0x2000 279*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_EXTENDED_FLAGS 0x1000 280*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED4 0x0800 281*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED5 0x0400 282*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NAME_TYPE 0x0300 283*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NAME_USER 0x0000 284*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NAME_ENTITY 0x0200 285*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NAME_ZONE 0x0100 286*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_NAME_RESERVED 0x0300 287*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED8 0x0080 288*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED9 0x0040 289*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED10 0x0020 290*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED11 0x0010 291*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_SIGNATORYMASK 0x000F 292*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ 293*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED4 | \ 294*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED5 | \ 295*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED8 | \ 296*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED9 | \ 297*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED10 | \ 298*cda5da8dSAndroid Build Coastguard Worker NS_KEY_RESERVED11 ) 299*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_RESERVED_BITMASK2 0xFFFF 300*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_MD5RSA 1 301*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_DH 2 302*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_DSA 3 303*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_DSS NS_ALG_DSA 304*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_EXPIRE_ONLY 253 305*cda5da8dSAndroid Build Coastguard Worker #define NS_ALG_PRIVATE_OID 254 306*cda5da8dSAndroid Build Coastguard Worker 307*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_PROT_TLS 1 308*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_PROT_EMAIL 2 309*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_PROT_DNSSEC 3 310*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_PROT_IPSEC 4 311*cda5da8dSAndroid Build Coastguard Worker #define NS_KEY_PROT_ANY 255 312*cda5da8dSAndroid Build Coastguard Worker 313*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MIN_BITS 512 314*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MAX_BITS 4096 315*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) 316*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) 317*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) 318*cda5da8dSAndroid Build Coastguard Worker #define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) 319*cda5da8dSAndroid Build Coastguard Worker 320*cda5da8dSAndroid Build Coastguard Worker #define NS_DSA_SIG_SIZE 41 321*cda5da8dSAndroid Build Coastguard Worker #define NS_DSA_MIN_SIZE 213 322*cda5da8dSAndroid Build Coastguard Worker #define NS_DSA_MAX_BYTES 405 323*cda5da8dSAndroid Build Coastguard Worker 324*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_TYPE 0 325*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_ALG 2 326*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_LABELS 3 327*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_OTTL 4 328*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_EXPIR 8 329*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_SIGNED 12 330*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_FOOT 16 331*cda5da8dSAndroid Build Coastguard Worker #define NS_SIG_SIGNER 18 332*cda5da8dSAndroid Build Coastguard Worker #define NS_NXT_BITS 8 333*cda5da8dSAndroid Build Coastguard Worker #define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) 334*cda5da8dSAndroid Build Coastguard Worker #define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) 335*cda5da8dSAndroid Build Coastguard Worker #define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) 336*cda5da8dSAndroid Build Coastguard Worker #define NS_NXT_MAX 127 337*cda5da8dSAndroid Build Coastguard Worker 338*cda5da8dSAndroid Build Coastguard Worker #define NS_OPT_DNSSEC_OK 0x8000U 339*cda5da8dSAndroid Build Coastguard Worker #define NS_OPT_NSID 3 340*cda5da8dSAndroid Build Coastguard Worker 341*cda5da8dSAndroid Build Coastguard Worker #define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2)) 342*cda5da8dSAndroid Build Coastguard Worker #define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4)) 343*cda5da8dSAndroid Build Coastguard Worker #define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2) 344*cda5da8dSAndroid Build Coastguard Worker #define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4) 345*cda5da8dSAndroid Build Coastguard Worker 346*cda5da8dSAndroid Build Coastguard Worker unsigned ns_get16(const unsigned char *); 347*cda5da8dSAndroid Build Coastguard Worker unsigned long ns_get32(const unsigned char *); 348*cda5da8dSAndroid Build Coastguard Worker void ns_put16(unsigned, unsigned char *); 349*cda5da8dSAndroid Build Coastguard Worker void ns_put32(unsigned long, unsigned char *); 350*cda5da8dSAndroid Build Coastguard Worker 351*cda5da8dSAndroid Build Coastguard Worker int ns_initparse(const unsigned char *, int, ns_msg *); 352*cda5da8dSAndroid Build Coastguard Worker int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); 353*cda5da8dSAndroid Build Coastguard Worker int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int); 354*cda5da8dSAndroid Build Coastguard Worker int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t); 355*cda5da8dSAndroid Build Coastguard Worker 356*cda5da8dSAndroid Build Coastguard Worker 357*cda5da8dSAndroid Build Coastguard Worker #define __BIND 19950621 358*cda5da8dSAndroid Build Coastguard Worker 359*cda5da8dSAndroid Build Coastguard Worker typedef struct { 360*cda5da8dSAndroid Build Coastguard Worker unsigned id :16; 361*cda5da8dSAndroid Build Coastguard Worker #if __BYTE_ORDER == __BIG_ENDIAN 362*cda5da8dSAndroid Build Coastguard Worker unsigned qr: 1; 363*cda5da8dSAndroid Build Coastguard Worker unsigned opcode: 4; 364*cda5da8dSAndroid Build Coastguard Worker unsigned aa: 1; 365*cda5da8dSAndroid Build Coastguard Worker unsigned tc: 1; 366*cda5da8dSAndroid Build Coastguard Worker unsigned rd: 1; 367*cda5da8dSAndroid Build Coastguard Worker unsigned ra: 1; 368*cda5da8dSAndroid Build Coastguard Worker unsigned unused :1; 369*cda5da8dSAndroid Build Coastguard Worker unsigned ad: 1; 370*cda5da8dSAndroid Build Coastguard Worker unsigned cd: 1; 371*cda5da8dSAndroid Build Coastguard Worker unsigned rcode :4; 372*cda5da8dSAndroid Build Coastguard Worker #else 373*cda5da8dSAndroid Build Coastguard Worker unsigned rd :1; 374*cda5da8dSAndroid Build Coastguard Worker unsigned tc :1; 375*cda5da8dSAndroid Build Coastguard Worker unsigned aa :1; 376*cda5da8dSAndroid Build Coastguard Worker unsigned opcode :4; 377*cda5da8dSAndroid Build Coastguard Worker unsigned qr :1; 378*cda5da8dSAndroid Build Coastguard Worker unsigned rcode :4; 379*cda5da8dSAndroid Build Coastguard Worker unsigned cd: 1; 380*cda5da8dSAndroid Build Coastguard Worker unsigned ad: 1; 381*cda5da8dSAndroid Build Coastguard Worker unsigned unused :1; 382*cda5da8dSAndroid Build Coastguard Worker unsigned ra :1; 383*cda5da8dSAndroid Build Coastguard Worker #endif 384*cda5da8dSAndroid Build Coastguard Worker unsigned qdcount :16; 385*cda5da8dSAndroid Build Coastguard Worker unsigned ancount :16; 386*cda5da8dSAndroid Build Coastguard Worker unsigned nscount :16; 387*cda5da8dSAndroid Build Coastguard Worker unsigned arcount :16; 388*cda5da8dSAndroid Build Coastguard Worker } HEADER; 389*cda5da8dSAndroid Build Coastguard Worker 390*cda5da8dSAndroid Build Coastguard Worker #define PACKETSZ NS_PACKETSZ 391*cda5da8dSAndroid Build Coastguard Worker #define MAXDNAME NS_MAXDNAME 392*cda5da8dSAndroid Build Coastguard Worker #define MAXCDNAME NS_MAXCDNAME 393*cda5da8dSAndroid Build Coastguard Worker #define MAXLABEL NS_MAXLABEL 394*cda5da8dSAndroid Build Coastguard Worker #define HFIXEDSZ NS_HFIXEDSZ 395*cda5da8dSAndroid Build Coastguard Worker #define QFIXEDSZ NS_QFIXEDSZ 396*cda5da8dSAndroid Build Coastguard Worker #define RRFIXEDSZ NS_RRFIXEDSZ 397*cda5da8dSAndroid Build Coastguard Worker #define INT32SZ NS_INT32SZ 398*cda5da8dSAndroid Build Coastguard Worker #define INT16SZ NS_INT16SZ 399*cda5da8dSAndroid Build Coastguard Worker #define INT8SZ NS_INT8SZ 400*cda5da8dSAndroid Build Coastguard Worker #define INADDRSZ NS_INADDRSZ 401*cda5da8dSAndroid Build Coastguard Worker #define IN6ADDRSZ NS_IN6ADDRSZ 402*cda5da8dSAndroid Build Coastguard Worker #define INDIR_MASK NS_CMPRSFLGS 403*cda5da8dSAndroid Build Coastguard Worker #define NAMESERVER_PORT NS_DEFAULTPORT 404*cda5da8dSAndroid Build Coastguard Worker 405*cda5da8dSAndroid Build Coastguard Worker #define S_ZONE ns_s_zn 406*cda5da8dSAndroid Build Coastguard Worker #define S_PREREQ ns_s_pr 407*cda5da8dSAndroid Build Coastguard Worker #define S_UPDATE ns_s_ud 408*cda5da8dSAndroid Build Coastguard Worker #define S_ADDT ns_s_ar 409*cda5da8dSAndroid Build Coastguard Worker 410*cda5da8dSAndroid Build Coastguard Worker #define QUERY ns_o_query 411*cda5da8dSAndroid Build Coastguard Worker #define IQUERY ns_o_iquery 412*cda5da8dSAndroid Build Coastguard Worker #define STATUS ns_o_status 413*cda5da8dSAndroid Build Coastguard Worker #define NS_NOTIFY_OP ns_o_notify 414*cda5da8dSAndroid Build Coastguard Worker #define NS_UPDATE_OP ns_o_update 415*cda5da8dSAndroid Build Coastguard Worker 416*cda5da8dSAndroid Build Coastguard Worker #define NOERROR ns_r_noerror 417*cda5da8dSAndroid Build Coastguard Worker #define FORMERR ns_r_formerr 418*cda5da8dSAndroid Build Coastguard Worker #define SERVFAIL ns_r_servfail 419*cda5da8dSAndroid Build Coastguard Worker #define NXDOMAIN ns_r_nxdomain 420*cda5da8dSAndroid Build Coastguard Worker #define NOTIMP ns_r_notimpl 421*cda5da8dSAndroid Build Coastguard Worker #define REFUSED ns_r_refused 422*cda5da8dSAndroid Build Coastguard Worker #define YXDOMAIN ns_r_yxdomain 423*cda5da8dSAndroid Build Coastguard Worker #define YXRRSET ns_r_yxrrset 424*cda5da8dSAndroid Build Coastguard Worker #define NXRRSET ns_r_nxrrset 425*cda5da8dSAndroid Build Coastguard Worker #define NOTAUTH ns_r_notauth 426*cda5da8dSAndroid Build Coastguard Worker #define NOTZONE ns_r_notzone 427*cda5da8dSAndroid Build Coastguard Worker 428*cda5da8dSAndroid Build Coastguard Worker #define DELETE ns_uop_delete 429*cda5da8dSAndroid Build Coastguard Worker #define ADD ns_uop_add 430*cda5da8dSAndroid Build Coastguard Worker 431*cda5da8dSAndroid Build Coastguard Worker #define T_A ns_t_a 432*cda5da8dSAndroid Build Coastguard Worker #define T_NS ns_t_ns 433*cda5da8dSAndroid Build Coastguard Worker #define T_MD ns_t_md 434*cda5da8dSAndroid Build Coastguard Worker #define T_MF ns_t_mf 435*cda5da8dSAndroid Build Coastguard Worker #define T_CNAME ns_t_cname 436*cda5da8dSAndroid Build Coastguard Worker #define T_SOA ns_t_soa 437*cda5da8dSAndroid Build Coastguard Worker #define T_MB ns_t_mb 438*cda5da8dSAndroid Build Coastguard Worker #define T_MG ns_t_mg 439*cda5da8dSAndroid Build Coastguard Worker #define T_MR ns_t_mr 440*cda5da8dSAndroid Build Coastguard Worker #define T_NULL ns_t_null 441*cda5da8dSAndroid Build Coastguard Worker #define T_WKS ns_t_wks 442*cda5da8dSAndroid Build Coastguard Worker #define T_PTR ns_t_ptr 443*cda5da8dSAndroid Build Coastguard Worker #define T_HINFO ns_t_hinfo 444*cda5da8dSAndroid Build Coastguard Worker #define T_MINFO ns_t_minfo 445*cda5da8dSAndroid Build Coastguard Worker #define T_MX ns_t_mx 446*cda5da8dSAndroid Build Coastguard Worker #define T_TXT ns_t_txt 447*cda5da8dSAndroid Build Coastguard Worker #define T_RP ns_t_rp 448*cda5da8dSAndroid Build Coastguard Worker #define T_AFSDB ns_t_afsdb 449*cda5da8dSAndroid Build Coastguard Worker #define T_X25 ns_t_x25 450*cda5da8dSAndroid Build Coastguard Worker #define T_ISDN ns_t_isdn 451*cda5da8dSAndroid Build Coastguard Worker #define T_RT ns_t_rt 452*cda5da8dSAndroid Build Coastguard Worker #define T_NSAP ns_t_nsap 453*cda5da8dSAndroid Build Coastguard Worker #define T_NSAP_PTR ns_t_nsap_ptr 454*cda5da8dSAndroid Build Coastguard Worker #define T_SIG ns_t_sig 455*cda5da8dSAndroid Build Coastguard Worker #define T_KEY ns_t_key 456*cda5da8dSAndroid Build Coastguard Worker #define T_PX ns_t_px 457*cda5da8dSAndroid Build Coastguard Worker #define T_GPOS ns_t_gpos 458*cda5da8dSAndroid Build Coastguard Worker #define T_AAAA ns_t_aaaa 459*cda5da8dSAndroid Build Coastguard Worker #define T_LOC ns_t_loc 460*cda5da8dSAndroid Build Coastguard Worker #define T_NXT ns_t_nxt 461*cda5da8dSAndroid Build Coastguard Worker #define T_EID ns_t_eid 462*cda5da8dSAndroid Build Coastguard Worker #define T_NIMLOC ns_t_nimloc 463*cda5da8dSAndroid Build Coastguard Worker #define T_SRV ns_t_srv 464*cda5da8dSAndroid Build Coastguard Worker #define T_ATMA ns_t_atma 465*cda5da8dSAndroid Build Coastguard Worker #define T_NAPTR ns_t_naptr 466*cda5da8dSAndroid Build Coastguard Worker #define T_A6 ns_t_a6 467*cda5da8dSAndroid Build Coastguard Worker #define T_DNAME ns_t_dname 468*cda5da8dSAndroid Build Coastguard Worker #define T_DS ns_t_ds 469*cda5da8dSAndroid Build Coastguard Worker #define T_SSHFP ns_t_sshfp 470*cda5da8dSAndroid Build Coastguard Worker #define T_IPSECKEY ns_t_ipseckey 471*cda5da8dSAndroid Build Coastguard Worker #define T_RRSIG ns_t_rrsig 472*cda5da8dSAndroid Build Coastguard Worker #define T_NSEC ns_t_nsec 473*cda5da8dSAndroid Build Coastguard Worker #define T_DNSKEY ns_t_dnskey 474*cda5da8dSAndroid Build Coastguard Worker #define T_DHCID ns_t_dhcid 475*cda5da8dSAndroid Build Coastguard Worker #define T_NSEC3 ns_t_nsec3 476*cda5da8dSAndroid Build Coastguard Worker #define T_NSEC3PARAM ns_t_nsec3param 477*cda5da8dSAndroid Build Coastguard Worker #define T_TLSA ns_t_tlsa 478*cda5da8dSAndroid Build Coastguard Worker #define T_SMIMEA ns_t_smimea 479*cda5da8dSAndroid Build Coastguard Worker #define T_HIP ns_t_hip 480*cda5da8dSAndroid Build Coastguard Worker #define T_NINFO ns_t_ninfo 481*cda5da8dSAndroid Build Coastguard Worker #define T_RKEY ns_t_rkey 482*cda5da8dSAndroid Build Coastguard Worker #define T_TALINK ns_t_talink 483*cda5da8dSAndroid Build Coastguard Worker #define T_CDS ns_t_cds 484*cda5da8dSAndroid Build Coastguard Worker #define T_CDNSKEY ns_t_cdnskey 485*cda5da8dSAndroid Build Coastguard Worker #define T_OPENPGPKEY ns_t_openpgpkey 486*cda5da8dSAndroid Build Coastguard Worker #define T_CSYNC ns_t_csync 487*cda5da8dSAndroid Build Coastguard Worker #define T_SPF ns_t_spf 488*cda5da8dSAndroid Build Coastguard Worker #define T_UINFO ns_t_uinfo 489*cda5da8dSAndroid Build Coastguard Worker #define T_UID ns_t_uid 490*cda5da8dSAndroid Build Coastguard Worker #define T_GID ns_t_gid 491*cda5da8dSAndroid Build Coastguard Worker #define T_UNSPEC ns_t_unspec 492*cda5da8dSAndroid Build Coastguard Worker #define T_NID ns_t_nid 493*cda5da8dSAndroid Build Coastguard Worker #define T_L32 ns_t_l32 494*cda5da8dSAndroid Build Coastguard Worker #define T_L64 ns_t_l64 495*cda5da8dSAndroid Build Coastguard Worker #define T_LP ns_t_lp 496*cda5da8dSAndroid Build Coastguard Worker #define T_EUI48 ns_t_eui48 497*cda5da8dSAndroid Build Coastguard Worker #define T_EUI64 ns_t_eui64 498*cda5da8dSAndroid Build Coastguard Worker #define T_TKEY ns_t_tkey 499*cda5da8dSAndroid Build Coastguard Worker #define T_TSIG ns_t_tsig 500*cda5da8dSAndroid Build Coastguard Worker #define T_IXFR ns_t_ixfr 501*cda5da8dSAndroid Build Coastguard Worker #define T_AXFR ns_t_axfr 502*cda5da8dSAndroid Build Coastguard Worker #define T_MAILB ns_t_mailb 503*cda5da8dSAndroid Build Coastguard Worker #define T_MAILA ns_t_maila 504*cda5da8dSAndroid Build Coastguard Worker #define T_ANY ns_t_any 505*cda5da8dSAndroid Build Coastguard Worker #define T_URI ns_t_uri 506*cda5da8dSAndroid Build Coastguard Worker #define T_CAA ns_t_caa 507*cda5da8dSAndroid Build Coastguard Worker #define T_AVC ns_t_avc 508*cda5da8dSAndroid Build Coastguard Worker #define T_TA ns_t_ta 509*cda5da8dSAndroid Build Coastguard Worker #define T_DLV ns_t_dlv 510*cda5da8dSAndroid Build Coastguard Worker 511*cda5da8dSAndroid Build Coastguard Worker #define C_IN ns_c_in 512*cda5da8dSAndroid Build Coastguard Worker #define C_CHAOS ns_c_chaos 513*cda5da8dSAndroid Build Coastguard Worker #define C_HS ns_c_hs 514*cda5da8dSAndroid Build Coastguard Worker #define C_NONE ns_c_none 515*cda5da8dSAndroid Build Coastguard Worker #define C_ANY ns_c_any 516*cda5da8dSAndroid Build Coastguard Worker 517*cda5da8dSAndroid Build Coastguard Worker #define GETSHORT NS_GET16 518*cda5da8dSAndroid Build Coastguard Worker #define GETLONG NS_GET32 519*cda5da8dSAndroid Build Coastguard Worker #define PUTSHORT NS_PUT16 520*cda5da8dSAndroid Build Coastguard Worker #define PUTLONG NS_PUT32 521*cda5da8dSAndroid Build Coastguard Worker 522*cda5da8dSAndroid Build Coastguard Worker #ifdef __cplusplus 523*cda5da8dSAndroid Build Coastguard Worker } 524*cda5da8dSAndroid Build Coastguard Worker #endif 525*cda5da8dSAndroid Build Coastguard Worker 526*cda5da8dSAndroid Build Coastguard Worker #endif 527