mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-25 18:46:38 +02:00
7ad5f10d76
- Made async resolve-and-connect work - Added link::options::nodnscache which means Unreal will not cache the host forever for outgoing server connections, you could for example enable this if you are linking two servers with an often changing host (like dyndns.org).
84 lines
2.2 KiB
C
84 lines
2.2 KiB
C
/*
|
|
* ircd/res_def.h (C)opyright 1992 Darren Reed.
|
|
*/
|
|
|
|
#define RES_INITLIST 1
|
|
#define RES_CALLINIT 2
|
|
#define RES_INITSOCK 4
|
|
#define RES_INITDEBG 8
|
|
#define RES_INITCACH 16
|
|
|
|
#define MAXPACKET 1024
|
|
#define MAXALIASES 35
|
|
#define MAXADDRS 35
|
|
|
|
#define AR_TTL 300 /* minimum TTL in seconds for dns cache entries */
|
|
|
|
struct hent {
|
|
char *h_name; /* official name of host */
|
|
char *h_aliases[MAXALIASES]; /* alias list */
|
|
int h_addrtype; /* host address type */
|
|
int h_length; /* length of address */
|
|
/* list of addresses from name server */
|
|
struct IN_ADDR h_addr_list[MAXADDRS];
|
|
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
|
};
|
|
|
|
typedef struct reslist {
|
|
int id;
|
|
int sent; /* number of requests sent */
|
|
int srch;
|
|
time_t ttl;
|
|
char type;
|
|
char retries; /* retry counter */
|
|
char sends; /* number of sends (>1 means resent) */
|
|
char resend; /* send flag. 0 == dont resend */
|
|
time_t sentat;
|
|
time_t timeout;
|
|
struct IN_ADDR addr;
|
|
char *name;
|
|
struct reslist *next;
|
|
Link cinfo;
|
|
#ifndef _WIN32
|
|
struct hent he;
|
|
#else
|
|
struct hostent *he;
|
|
char locked;
|
|
#endif
|
|
} ResRQ;
|
|
|
|
typedef struct cache {
|
|
time_t expireat;
|
|
time_t ttl;
|
|
#ifndef _WIN32
|
|
struct hostent he;
|
|
#else
|
|
struct hostent *he;
|
|
#endif
|
|
struct cache *hname_next, *hnum_next, *list_next;
|
|
} aCache;
|
|
|
|
typedef struct cachetable {
|
|
aCache *num_list;
|
|
aCache *name_list;
|
|
} CacheTable;
|
|
|
|
#define ARES_CACSIZE 101
|
|
|
|
#define MAXCACHED 81
|
|
#ifdef _WIN32
|
|
typedef unsigned short u_int16_t;
|
|
#endif
|
|
extern struct __res_state ircd_res;
|
|
extern int ircd_res_init();
|
|
extern u_int ircd_res_randomid();
|
|
extern u_int16_t ircd_getshort(const u_char *msgp);
|
|
extern u_int32_t ircd_getlong(const u_char *msgp);
|
|
extern void ircd__putshort(register u_int16_t s, register u_char *msgp);
|
|
extern void ircd__putlong(register u_int32_t l,register u_char *msgp);
|
|
extern int ircd_dn_expand(const u_char *msg, const u_char *eom, const u_char *src, char *dst, int dstsiz);
|
|
extern int __ircd_dn_skipname(const u_char *ptr, const u_char *eom);
|
|
extern int ircd_dn_comp(const char *src, u_char *dst, int dstsiz, u_char **dnptrs, u_char **lastdnptr);
|
|
extern int ircd_res_mkquery(int op, const char *dname, int class, int type, const u_char *data,
|
|
int datalen, const u_char *newrr_in, u_char *buf, int buflen);
|