17777dab0Sopenharmony_ci#ifndef _RESOLV_H 27777dab0Sopenharmony_ci#define _RESOLV_H 37777dab0Sopenharmony_ci 47777dab0Sopenharmony_ci#include <stdint.h> 57777dab0Sopenharmony_ci#include <arpa/nameser.h> 67777dab0Sopenharmony_ci#include <netinet/in.h> 77777dab0Sopenharmony_ci 87777dab0Sopenharmony_ci#ifdef __cplusplus 97777dab0Sopenharmony_ciextern "C" { 107777dab0Sopenharmony_ci#endif 117777dab0Sopenharmony_ci 127777dab0Sopenharmony_ci#define MAXNS 3 137777dab0Sopenharmony_ci#define MAXDFLSRCH 3 147777dab0Sopenharmony_ci#define MAXDNSRCH 6 157777dab0Sopenharmony_ci#define LOCALDOMAINPARTS 2 167777dab0Sopenharmony_ci 177777dab0Sopenharmony_ci#define RES_TIMEOUT 5 187777dab0Sopenharmony_ci#define MAXRESOLVSORT 10 197777dab0Sopenharmony_ci#define RES_MAXNDOTS 15 207777dab0Sopenharmony_ci#define RES_MAXRETRANS 30 217777dab0Sopenharmony_ci#define RES_MAXRETRY 5 227777dab0Sopenharmony_ci#define RES_DFLRETRY 2 237777dab0Sopenharmony_ci#define RES_MAXTIME 65535 247777dab0Sopenharmony_ci 257777dab0Sopenharmony_ci/* unused; purely for broken apps */ 267777dab0Sopenharmony_citypedef struct __res_state { 277777dab0Sopenharmony_ci int retrans; 287777dab0Sopenharmony_ci int retry; 297777dab0Sopenharmony_ci unsigned long options; 307777dab0Sopenharmony_ci int nscount; 317777dab0Sopenharmony_ci struct sockaddr_in nsaddr_list[MAXNS]; 327777dab0Sopenharmony_ci# define nsaddr nsaddr_list[0] 337777dab0Sopenharmony_ci unsigned short id; 347777dab0Sopenharmony_ci char *dnsrch[MAXDNSRCH+1]; 357777dab0Sopenharmony_ci char defdname[256]; 367777dab0Sopenharmony_ci unsigned long pfcode; 377777dab0Sopenharmony_ci unsigned ndots:4; 387777dab0Sopenharmony_ci unsigned nsort:4; 397777dab0Sopenharmony_ci unsigned ipv6_unavail:1; 407777dab0Sopenharmony_ci unsigned unused:23; 417777dab0Sopenharmony_ci struct { 427777dab0Sopenharmony_ci struct in_addr addr; 437777dab0Sopenharmony_ci uint32_t mask; 447777dab0Sopenharmony_ci } sort_list[MAXRESOLVSORT]; 457777dab0Sopenharmony_ci void *qhook; 467777dab0Sopenharmony_ci void *rhook; 477777dab0Sopenharmony_ci int res_h_errno; 487777dab0Sopenharmony_ci int _vcsock; 497777dab0Sopenharmony_ci unsigned _flags; 507777dab0Sopenharmony_ci union { 517777dab0Sopenharmony_ci char pad[52]; 527777dab0Sopenharmony_ci struct { 537777dab0Sopenharmony_ci uint16_t nscount; 547777dab0Sopenharmony_ci uint16_t nsmap[MAXNS]; 557777dab0Sopenharmony_ci int nssocks[MAXNS]; 567777dab0Sopenharmony_ci uint16_t nscount6; 577777dab0Sopenharmony_ci uint16_t nsinit; 587777dab0Sopenharmony_ci struct sockaddr_in6 *nsaddrs[MAXNS]; 597777dab0Sopenharmony_ci unsigned int _initstamp[2]; 607777dab0Sopenharmony_ci } _ext; 617777dab0Sopenharmony_ci } _u; 627777dab0Sopenharmony_ci} *res_state; 637777dab0Sopenharmony_ci 647777dab0Sopenharmony_ci#define __RES 19960801 657777dab0Sopenharmony_ci 667777dab0Sopenharmony_ci#ifndef _PATH_RESCONF 677777dab0Sopenharmony_ci#define _PATH_RESCONF "/etc/resolv.conf" 687777dab0Sopenharmony_ci#endif 697777dab0Sopenharmony_ci 707777dab0Sopenharmony_cistruct res_sym { 717777dab0Sopenharmony_ci int number; 727777dab0Sopenharmony_ci char *name; 737777dab0Sopenharmony_ci char *humanname; 747777dab0Sopenharmony_ci}; 757777dab0Sopenharmony_ci 767777dab0Sopenharmony_ci#define RES_F_VC 0x00000001 777777dab0Sopenharmony_ci#define RES_F_CONN 0x00000002 787777dab0Sopenharmony_ci#define RES_F_EDNS0ERR 0x00000004 797777dab0Sopenharmony_ci 807777dab0Sopenharmony_ci#define RES_EXHAUSTIVE 0x00000001 817777dab0Sopenharmony_ci 827777dab0Sopenharmony_ci#define RES_INIT 0x00000001 837777dab0Sopenharmony_ci#define RES_DEBUG 0x00000002 847777dab0Sopenharmony_ci#define RES_AAONLY 0x00000004 857777dab0Sopenharmony_ci#define RES_USEVC 0x00000008 867777dab0Sopenharmony_ci#define RES_PRIMARY 0x00000010 877777dab0Sopenharmony_ci#define RES_IGNTC 0x00000020 887777dab0Sopenharmony_ci#define RES_RECURSE 0x00000040 897777dab0Sopenharmony_ci#define RES_DEFNAMES 0x00000080 907777dab0Sopenharmony_ci#define RES_STAYOPEN 0x00000100 917777dab0Sopenharmony_ci#define RES_DNSRCH 0x00000200 927777dab0Sopenharmony_ci#define RES_INSECURE1 0x00000400 937777dab0Sopenharmony_ci#define RES_INSECURE2 0x00000800 947777dab0Sopenharmony_ci#define RES_NOALIASES 0x00001000 957777dab0Sopenharmony_ci#define RES_USE_INET6 0x00002000 967777dab0Sopenharmony_ci#define RES_ROTATE 0x00004000 977777dab0Sopenharmony_ci#define RES_NOCHECKNAME 0x00008000 987777dab0Sopenharmony_ci#define RES_KEEPTSIG 0x00010000 997777dab0Sopenharmony_ci#define RES_BLAST 0x00020000 1007777dab0Sopenharmony_ci#define RES_USEBSTRING 0x00040000 1017777dab0Sopenharmony_ci#define RES_NOIP6DOTINT 0x00080000 1027777dab0Sopenharmony_ci#define RES_USE_EDNS0 0x00100000 1037777dab0Sopenharmony_ci#define RES_SNGLKUP 0x00200000 1047777dab0Sopenharmony_ci#define RES_SNGLKUPREOP 0x00400000 1057777dab0Sopenharmony_ci#define RES_USE_DNSSEC 0x00800000 1067777dab0Sopenharmony_ci 1077777dab0Sopenharmony_ci#define RES_DEFAULT (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT) 1087777dab0Sopenharmony_ci 1097777dab0Sopenharmony_ci#define RES_PRF_STATS 0x00000001 1107777dab0Sopenharmony_ci#define RES_PRF_UPDATE 0x00000002 1117777dab0Sopenharmony_ci#define RES_PRF_CLASS 0x00000004 1127777dab0Sopenharmony_ci#define RES_PRF_CMD 0x00000008 1137777dab0Sopenharmony_ci#define RES_PRF_QUES 0x00000010 1147777dab0Sopenharmony_ci#define RES_PRF_ANS 0x00000020 1157777dab0Sopenharmony_ci#define RES_PRF_AUTH 0x00000040 1167777dab0Sopenharmony_ci#define RES_PRF_ADD 0x00000080 1177777dab0Sopenharmony_ci#define RES_PRF_HEAD1 0x00000100 1187777dab0Sopenharmony_ci#define RES_PRF_HEAD2 0x00000200 1197777dab0Sopenharmony_ci#define RES_PRF_TTLID 0x00000400 1207777dab0Sopenharmony_ci#define RES_PRF_HEADX 0x00000800 1217777dab0Sopenharmony_ci#define RES_PRF_QUERY 0x00001000 1227777dab0Sopenharmony_ci#define RES_PRF_REPLY 0x00002000 1237777dab0Sopenharmony_ci#define RES_PRF_INIT 0x00004000 1247777dab0Sopenharmony_ci 1257777dab0Sopenharmony_ciint res_init(void); 1267777dab0Sopenharmony_ciint res_query(const char *, int, int, unsigned char *, int); 1277777dab0Sopenharmony_ciint res_querydomain(const char *, const char *, int, int, unsigned char *, int); 1287777dab0Sopenharmony_ciint res_search(const char *, int, int, unsigned char *, int); 1297777dab0Sopenharmony_ciint res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int); 1307777dab0Sopenharmony_ciint res_send(const unsigned char *, int, unsigned char *, int); 1317777dab0Sopenharmony_ciint dn_comp(const char *, unsigned char *, int, unsigned char **, unsigned char **); 1327777dab0Sopenharmony_ciint dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int); 1337777dab0Sopenharmony_ciint dn_skipname(const unsigned char *, const unsigned char *); 1347777dab0Sopenharmony_ci 1357777dab0Sopenharmony_ci#ifdef __cplusplus 1367777dab0Sopenharmony_ci} 1377777dab0Sopenharmony_ci#endif 1387777dab0Sopenharmony_ci 1397777dab0Sopenharmony_ci#endif 140