00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _NET__GEN__RESOLV_H
00022 #define _NET__GEN__RESOLV_H
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _PATH_RESCONF
00031 #define _PATH_RESCONF "/etc/resolv.conf"
00032 #endif
00033
00034
00035
00036
00037 #define MAXNS 3
00038 #define MAXDFLSRCH 3
00039 #define MAXDNSRCH 6
00040 #define LOCALDOMAINPARTS 2
00041
00042 #define RES_TIMEOUT 5
00043
00044 #define NAMESERVER_PORT 53
00045
00046 struct state {
00047 int retrans;
00048 int retry;
00049 long options;
00050 int nscount;
00051 ipaddr_t nsaddr_list[MAXNS];
00052 #define nsaddr nsaddr_list[0]
00053 u16_t nsport_list[MAXNS];
00054 u16_t id;
00055 char defdname[MAXDNAME];
00056 char *dnsrch[MAXDNSRCH+1];
00057 };
00058
00059
00060
00061
00062 #define RES_INIT 0x0001
00063 #define RES_DEBUG 0x0002
00064 #define RES_AAONLY 0x0004
00065 #define RES_USEVC 0x0008
00066 #define RES_PRIMARY 0x0010
00067 #define RES_IGNTC 0x0020
00068 #define RES_RECURSE 0x0040
00069 #define RES_DEFNAMES 0x0080
00070 #define RES_STAYOPEN 0x0100
00071 #define RES_DNSRCH 0x0200
00072
00073 #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH )
00074
00075 extern struct state _res;
00076
00077 struct rrec;
00078
00079 int res_init _ARGS(( void ));
00080 int res_mkquery _ARGS(( int op, const char *dname, int class, int type,
00081 const char *data, int datalen, const struct rrec *newrr,
00082 char *buf, int buflen ));
00083 int res_query _ARGS(( char *name, int class, int type, u8_t *answer,
00084 int anslen ));
00085 int res_querydomain _ARGS(( char *name, char *domain, int class, int type,
00086 u8_t *answer, int anslen ));
00087 int res_search _ARGS(( char *name, int class, int type, u8_t *answer,
00088 int anslen ));
00089 int res_send _ARGS(( const char *buf, int buflen, char *answer, int anslen ));
00090 void _res_close _ARGS(( void ));
00091
00092 int dn_comp _ARGS(( const u8_t *exp_dn, u8_t *comp_dn, int length,
00093 u8_t **dnptrs, u8_t **lastdnptr ));
00094 int dn_expand _ARGS(( const u8_t *msg, const u8_t *eomorig,
00095 const u8_t *comp_dn, u8_t *exp_dn, int length ));
00096 int dn_skipname _ARGS(( const u8_t *comp_dn, const u8_t *eom ));
00097
00098 char *__hostalias _ARGS(( const char *name ));
00099
00100 u16_t _getshort _ARGS(( const u8_t *msgp ));
00101 u32_t _getlong _ARGS(( const u8_t *msgp ));
00102 void __putshort _ARGS(( U16_t s, u8_t *msgp ));
00103 void __putlong _ARGS(( u32_t l, u8_t *msgp ));
00104
00105 void p_query _ARGS(( char *msg ));
00106
00107 #endif