[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH] Add nameserver headers from musl.
Thanks! Reviewed-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx> On 09.12.2019 12:49, Felipe Huici wrote: > Copied as is from the official musl git mirror > git://git.musl-libc.org/musl, 51eb2084 . > > Signed-off-by: Felipe Huici <felipe.huici@xxxxxxxxx> > --- > musl-imported/include/arpa/nameser.h | 456 ++++++++++++++++++++ > musl-imported/include/arpa/nameser_compat.h | 2 + > 2 files changed, 458 insertions(+) > create mode 100644 musl-imported/include/arpa/nameser.h > create mode 100644 musl-imported/include/arpa/nameser_compat.h > > diff --git a/musl-imported/include/arpa/nameser.h > b/musl-imported/include/arpa/nameser.h > new file mode 100644 > index 0000000..b315e0f > --- /dev/null > +++ b/musl-imported/include/arpa/nameser.h > @@ -0,0 +1,456 @@ > +#ifndef _ARPA_NAMESER_H > +#define _ARPA_NAMESER_H > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#include <stddef.h> > +#include <stdint.h> > +#include <endian.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 > diff --git a/musl-imported/include/arpa/nameser_compat.h > b/musl-imported/include/arpa/nameser_compat.h > new file mode 100644 > index 0000000..3aac25c > --- /dev/null > +++ b/musl-imported/include/arpa/nameser_compat.h > @@ -0,0 +1,2 @@ > +#include <arpa/nameser.h> > + _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |