#ifndef SYSROOT_ARPA_NAMESER_H_
#define SYSROOT_ARPA_NAMESER_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <stddef.h>
#include <stdint.h>

#define __NAMESER 19991006
#define NS_PACKETSZ 512
#define NS_MAXDNAME 1025
#define NS_MAXMSG 65535
#define NS_MAXCDNAME 255
#define NS_MAXLABEL 63
#define NS_HFIXEDSZ 12
#define NS_QFIXEDSZ 4
#define NS_RRFIXEDSZ 10
#define NS_INT32SZ 4
#define NS_INT16SZ 2
#define NS_INT8SZ 1
#define NS_INADDRSZ 4
#define NS_IN6ADDRSZ 16
#define NS_CMPRSFLGS 0xc0
#define NS_DEFAULTPORT 53

typedef enum __ns_sect {
  ns_s_qd = 0,
  ns_s_zn = 0,
  ns_s_an = 1,
  ns_s_pr = 1,
  ns_s_ns = 2,
  ns_s_ud = 2,
  ns_s_ar = 3,
  ns_s_max = 4
} ns_sect;

typedef struct __ns_msg {
  const unsigned char *_msg, *_eom;
  uint16_t _id, _flags, _counts[ns_s_max];
  const unsigned char* _sections[ns_s_max];
  ns_sect _sect;
  int _rrnum;
  const unsigned char* _msg_ptr;
} ns_msg;

struct _ns_flagdata {
  int mask, shift;
};
extern const struct _ns_flagdata _ns_flagdata[];

#define ns_msg_id(handle) ((handle)._id + 0)
#define ns_msg_base(handle) ((handle)._msg + 0)
#define ns_msg_end(handle) ((handle)._eom + 0)
#define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
#define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
#define ns_msg_getflag(handle, flag) \
  (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift)

typedef struct __ns_rr {
  char name[NS_MAXDNAME];
  uint16_t type;
  uint16_t rr_class;
  uint32_t ttl;
  uint16_t rdlength;
  const unsigned char* rdata;
} ns_rr;

#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".")
#define ns_rr_type(rr) ((ns_type)((rr).type + 0))
#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0))
#define ns_rr_ttl(rr) ((rr).ttl + 0)
#define ns_rr_rdlen(rr) ((rr).rdlength + 0)
#define ns_rr_rdata(rr) ((rr).rdata + 0)

typedef enum __ns_flag {
  ns_f_qr,
  ns_f_opcode,
  ns_f_aa,
  ns_f_tc,
  ns_f_rd,
  ns_f_ra,
  ns_f_z,
  ns_f_ad,
  ns_f_cd,
  ns_f_rcode,
  ns_f_max
} ns_flag;

typedef enum __ns_opcode {
  ns_o_query = 0,
  ns_o_iquery = 1,
  ns_o_status = 2,
  ns_o_notify = 4,
  ns_o_update = 5,
  ns_o_max = 6
} ns_opcode;

typedef enum __ns_rcode {
  ns_r_noerror = 0,
  ns_r_formerr = 1,
  ns_r_servfail = 2,
  ns_r_nxdomain = 3,
  ns_r_notimpl = 4,
  ns_r_refused = 5,
  ns_r_yxdomain = 6,
  ns_r_yxrrset = 7,
  ns_r_nxrrset = 8,
  ns_r_notauth = 9,
  ns_r_notzone = 10,
  ns_r_max = 11,
  ns_r_badvers = 16,
  ns_r_badsig = 16,
  ns_r_badkey = 17,
  ns_r_badtime = 18
} ns_rcode;

typedef enum __ns_update_operation {
  ns_uop_delete = 0,
  ns_uop_add = 1,
  ns_uop_max = 2
} ns_update_operation;

struct ns_tsig_key {
  char name[NS_MAXDNAME], alg[NS_MAXDNAME];
  unsigned char* data;
  int len;
};
typedef struct ns_tsig_key ns_tsig_key;

struct ns_tcp_tsig_state {
  int counter;
  struct dst_key* key;
  void* ctx;
  unsigned char sig[NS_PACKETSZ];
  int siglen;
};
typedef struct ns_tcp_tsig_state ns_tcp_tsig_state;

#define NS_TSIG_FUDGE 300
#define NS_TSIG_TCP_COUNT 100
#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT"

#define NS_TSIG_ERROR_NO_TSIG -10
#define NS_TSIG_ERROR_NO_SPACE -11
#define NS_TSIG_ERROR_FORMERR -12

typedef enum __ns_type {
  ns_t_invalid = 0,
  ns_t_a = 1,
  ns_t_ns = 2,
  ns_t_md = 3,
  ns_t_mf = 4,
  ns_t_cname = 5,
  ns_t_soa = 6,
  ns_t_mb = 7,
  ns_t_mg = 8,
  ns_t_mr = 9,
  ns_t_null = 10,
  ns_t_wks = 11,
  ns_t_ptr = 12,
  ns_t_hinfo = 13,
  ns_t_minfo = 14,
  ns_t_mx = 15,
  ns_t_txt = 16,
  ns_t_rp = 17,
  ns_t_afsdb = 18,
  ns_t_x25 = 19,
  ns_t_isdn = 20,
  ns_t_rt = 21,
  ns_t_nsap = 22,
  ns_t_nsap_ptr = 23,
  ns_t_sig = 24,
  ns_t_key = 25,
  ns_t_px = 26,
  ns_t_gpos = 27,
  ns_t_aaaa = 28,
  ns_t_loc = 29,
  ns_t_nxt = 30,
  ns_t_eid = 31,
  ns_t_nimloc = 32,
  ns_t_srv = 33,
  ns_t_atma = 34,
  ns_t_naptr = 35,
  ns_t_kx = 36,
  ns_t_cert = 37,
  ns_t_a6 = 38,
  ns_t_dname = 39,
  ns_t_sink = 40,
  ns_t_opt = 41,
  ns_t_apl = 42,
  ns_t_tkey = 249,
  ns_t_tsig = 250,
  ns_t_ixfr = 251,
  ns_t_axfr = 252,
  ns_t_mailb = 253,
  ns_t_maila = 254,
  ns_t_any = 255,
  ns_t_zxfr = 256,
  ns_t_max = 65536
} ns_type;

#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || (t) == ns_t_mailb || (t) == ns_t_maila)
#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t))
#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr)
#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || (t) == ns_t_zxfr)

typedef enum __ns_class {
  ns_c_invalid = 0,
  ns_c_in = 1,
  ns_c_2 = 2,
  ns_c_chaos = 3,
  ns_c_hs = 4,
  ns_c_none = 254,
  ns_c_any = 255,
  ns_c_max = 65536
} ns_class;

typedef enum __ns_key_types {
  ns_kt_rsa = 1,
  ns_kt_dh = 2,
  ns_kt_dsa = 3,
  ns_kt_private = 254
} ns_key_types;

typedef enum __ns_cert_types {
  cert_t_pkix = 1,
  cert_t_spki = 2,
  cert_t_pgp = 3,
  cert_t_url = 253,
  cert_t_oid = 254
} ns_cert_types;

#define NS_KEY_TYPEMASK 0xC000
#define NS_KEY_TYPE_AUTH_CONF 0x0000
#define NS_KEY_TYPE_CONF_ONLY 0x8000
#define NS_KEY_TYPE_AUTH_ONLY 0x4000
#define NS_KEY_TYPE_NO_KEY 0xC000
#define NS_KEY_NO_AUTH 0x8000
#define NS_KEY_NO_CONF 0x4000
#define NS_KEY_RESERVED2 0x2000
#define NS_KEY_EXTENDED_FLAGS 0x1000
#define NS_KEY_RESERVED4 0x0800
#define NS_KEY_RESERVED5 0x0400
#define NS_KEY_NAME_TYPE 0x0300
#define NS_KEY_NAME_USER 0x0000
#define NS_KEY_NAME_ENTITY 0x0200
#define NS_KEY_NAME_ZONE 0x0100
#define NS_KEY_NAME_RESERVED 0x0300
#define NS_KEY_RESERVED8 0x0080
#define NS_KEY_RESERVED9 0x0040
#define NS_KEY_RESERVED10 0x0020
#define NS_KEY_RESERVED11 0x0010
#define NS_KEY_SIGNATORYMASK 0x000F
#define NS_KEY_RESERVED_BITMASK                                                                   \
  (NS_KEY_RESERVED2 | NS_KEY_RESERVED4 | NS_KEY_RESERVED5 | NS_KEY_RESERVED8 | NS_KEY_RESERVED9 | \
   NS_KEY_RESERVED10 | NS_KEY_RESERVED11)
#define NS_KEY_RESERVED_BITMASK2 0xFFFF
#define NS_ALG_MD5RSA 1
#define NS_ALG_DH 2
#define NS_ALG_DSA 3
#define NS_ALG_DSS NS_ALG_DSA
#define NS_ALG_EXPIRE_ONLY 253
#define NS_ALG_PRIVATE_OID 254

#define NS_KEY_PROT_TLS 1
#define NS_KEY_PROT_EMAIL 2
#define NS_KEY_PROT_DNSSEC 3
#define NS_KEY_PROT_IPSEC 4
#define NS_KEY_PROT_ANY 255

#define NS_MD5RSA_MIN_BITS 512
#define NS_MD5RSA_MAX_BITS 4096
#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS + 7 / 8) * 2 + 3)
#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES + 2) / 3) * 4)
#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS + 7) / 8)
#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS + 7) / 8)

#define NS_DSA_SIG_SIZE 41
#define NS_DSA_MIN_SIZE 213
#define NS_DSA_MAX_BYTES 405

#define NS_SIG_TYPE 0
#define NS_SIG_ALG 2
#define NS_SIG_LABELS 3
#define NS_SIG_OTTL 4
#define NS_SIG_EXPIR 8
#define NS_SIG_SIGNED 12
#define NS_SIG_FOOT 16
#define NS_SIG_SIGNER 18
#define NS_NXT_BITS 8
#define NS_NXT_BIT_SET(n, p) (p[(n) / NS_NXT_BITS] |= (0x80 >> ((n) % NS_NXT_BITS)))
#define NS_NXT_BIT_CLEAR(n, p) (p[(n) / NS_NXT_BITS] &= ~(0x80 >> ((n) % NS_NXT_BITS)))
#define NS_NXT_BIT_ISSET(n, p) (p[(n) / NS_NXT_BITS] & (0x80 >> ((n) % NS_NXT_BITS)))
#define NS_NXT_MAX 127

#define NS_OPT_DNSSEC_OK 0x8000U
#define NS_OPT_NSID 3

#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp) += 2) - 2))
#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp) += 4) - 4))
#define NS_PUT16(s, cp) ns_put16((s), ((cp) += 2) - 2)
#define NS_PUT32(l, cp) ns_put32((l), ((cp) += 4) - 4)

unsigned ns_get16(const unsigned char*);
unsigned long ns_get32(const unsigned char*);
void ns_put16(unsigned, unsigned char*);
void ns_put32(unsigned long, unsigned char*);

int ns_initparse(const unsigned char*, int, ns_msg*);
int ns_parserr(ns_msg*, ns_sect, int, ns_rr*);
int ns_skiprr(const unsigned char*, const unsigned char*, ns_sect, int);
int ns_name_uncompress(const unsigned char*, const unsigned char*, const unsigned char*, char*,
                       size_t);

#define __BIND 19950621

typedef struct {
  unsigned id : 16;
#if __BYTE_ORDER == __BIG_ENDIAN
  unsigned qr : 1;
  unsigned opcode : 4;
  unsigned aa : 1;
  unsigned tc : 1;
  unsigned rd : 1;
  unsigned ra : 1;
  unsigned unused : 1;
  unsigned ad : 1;
  unsigned cd : 1;
  unsigned rcode : 4;
#else
  unsigned rd : 1;
  unsigned tc : 1;
  unsigned aa : 1;
  unsigned opcode : 4;
  unsigned qr : 1;
  unsigned rcode : 4;
  unsigned cd : 1;
  unsigned ad : 1;
  unsigned unused : 1;
  unsigned ra : 1;
#endif
  unsigned qdcount : 16;
  unsigned ancount : 16;
  unsigned nscount : 16;
  unsigned arcount : 16;
} HEADER;

#define PACKETSZ NS_PACKETSZ
#define MAXDNAME NS_MAXDNAME
#define MAXCDNAME NS_MAXCDNAME
#define MAXLABEL NS_MAXLABEL
#define HFIXEDSZ NS_HFIXEDSZ
#define QFIXEDSZ NS_QFIXEDSZ
#define RRFIXEDSZ NS_RRFIXEDSZ
#define INT32SZ NS_INT32SZ
#define INT16SZ NS_INT16SZ
#define INT8SZ NS_INT8SZ
#define INADDRSZ NS_INADDRSZ
#define IN6ADDRSZ NS_IN6ADDRSZ
#define INDIR_MASK NS_CMPRSFLGS
#define NAMESERVER_PORT NS_DEFAULTPORT

#define S_ZONE ns_s_zn
#define S_PREREQ ns_s_pr
#define S_UPDATE ns_s_ud
#define S_ADDT ns_s_ar

#define QUERY ns_o_query
#define IQUERY ns_o_iquery
#define STATUS ns_o_status
#define NS_NOTIFY_OP ns_o_notify
#define NS_UPDATE_OP ns_o_update

#define NOERROR ns_r_noerror
#define FORMERR ns_r_formerr
#define SERVFAIL ns_r_servfail
#define NXDOMAIN ns_r_nxdomain
#define NOTIMP ns_r_notimpl
#define REFUSED ns_r_refused
#define YXDOMAIN ns_r_yxdomain
#define YXRRSET ns_r_yxrrset
#define NXRRSET ns_r_nxrrset
#define NOTAUTH ns_r_notauth
#define NOTZONE ns_r_notzone

#define DELETE ns_uop_delete
#define ADD ns_uop_add

#define T_A ns_t_a
#define T_NS ns_t_ns
#define T_MD ns_t_md
#define T_MF ns_t_mf
#define T_CNAME ns_t_cname
#define T_SOA ns_t_soa
#define T_MB ns_t_mb
#define T_MG ns_t_mg
#define T_MR ns_t_mr
#define T_NULL ns_t_null
#define T_WKS ns_t_wks
#define T_PTR ns_t_ptr
#define T_HINFO ns_t_hinfo
#define T_MINFO ns_t_minfo
#define T_MX ns_t_mx
#define T_TXT ns_t_txt
#define T_RP ns_t_rp
#define T_AFSDB ns_t_afsdb
#define T_X25 ns_t_x25
#define T_ISDN ns_t_isdn
#define T_RT ns_t_rt
#define T_NSAP ns_t_nsap
#define T_NSAP_PTR ns_t_nsap_ptr
#define T_SIG ns_t_sig
#define T_KEY ns_t_key
#define T_PX ns_t_px
#define T_GPOS ns_t_gpos
#define T_AAAA ns_t_aaaa
#define T_LOC ns_t_loc
#define T_NXT ns_t_nxt
#define T_EID ns_t_eid
#define T_NIMLOC ns_t_nimloc
#define T_SRV ns_t_srv
#define T_ATMA ns_t_atma
#define T_NAPTR ns_t_naptr
#define T_A6 ns_t_a6
#define T_DNAME ns_t_dname
#define T_TSIG ns_t_tsig
#define T_IXFR ns_t_ixfr
#define T_AXFR ns_t_axfr
#define T_MAILB ns_t_mailb
#define T_MAILA ns_t_maila
#define T_ANY ns_t_any

#define C_IN ns_c_in
#define C_CHAOS ns_c_chaos
#define C_HS ns_c_hs
#define C_NONE ns_c_none
#define C_ANY ns_c_any

#define GETSHORT NS_GET16
#define GETLONG NS_GET32
#define PUTSHORT NS_PUT16
#define PUTLONG NS_PUT32

#ifdef __cplusplus
}
#endif

#endif  // SYSROOT_ARPA_NAMESER_H_
