1: /* ns.h 4.3 86/06/04 */
2:
3: /*
4: * Copyright (c) 1985 Regents of the University of California
5: * All Rights Reserved
6: */
7:
8: /*
9: * Global definitions and variables for the name server.
10: */
11:
12: #include <strings.h>
13: #include <arpa/inet.h>
14:
15: /* MAXRETRY * RETRYTIME * #ns should be less than 1 minute or so */
16: /* 3 * 8 * 3 = 72 seconds for 3 root domain servers */
17: #define MAXNS 10 /* max number of NS's to try */
18: #define RETRYTIME 8 /* time between retries */
19: #define MAXRETRY 3 /* max number of retries per addr */
20: #define MAXCNAMES 8 /* max # of CNAMES tried per addr */
21:
22: #define MAXZONES 32
23:
24: struct zoneinfo {
25: int z_type; /* type of zone */
26: char *z_origin; /* root domain name of zone */
27: time_t z_time; /* time left before refresh */
28: u_long z_refresh; /* refresh interval */
29: u_long z_retry; /* refresh retry interval */
30: u_long z_expire; /* expiriation time for cached info */
31: u_long z_minimum; /* minimum TTL value */
32: u_long z_serial; /* changes if zone modified */
33: char *z_source; /* source location of data */
34: int z_addrcnt; /* address count */
35: struct in_addr z_addr[MAXNS]; /* list of master servers for zone */
36: };
37:
38: /* zone types (z_type) */
39: #define Z_PRIMARY 1
40: #define Z_SECONDARY 2
41: #define Z_CACHE 3
42: #define Z_DOMAIN 4
43:
44: /* Flags to ns_req() */
45: #define ISTCP 01
46: #define ISLOCAL 02
47:
48: /*
49: * Structure for recording info on forwarded queries.
50: */
51: struct qinfo {
52: u_short q_id; /* id of query */
53: u_short q_nsid; /* id of forwarded query */
54: struct sockaddr_in q_from; /* requestor's address */
55: char *q_msg; /* the message */
56: int q_msglen; /* len of message */
57: int q_naddr; /* number of addr's in q_addr */
58: int q_curaddr; /* last addr sent to */
59: time_t q_time; /* time to retry */
60: struct qinfo *q_next; /* rexmit list (sorted by time) */
61: struct qinfo *q_link; /* storage list (random order) */
62: struct sockaddr_in q_addr[MAXNS]; /* addresses of NS's */
63: int q_nretry[MAXNS]; /* # of times addr retried */
64: int q_cname; /* # of cnames found */
65: char *q_cmsg; /* the cname message */
66: int q_cmsglen; /* len of cname message */
67: struct qstream *q_stream; /* TCP stream, null if UDP */
68: };
69:
70: #define QINFO_NULL ((struct qinfo *)0)
71: extern struct qinfo *qfindid();
72: extern struct qinfo *qnew();
73: extern struct qinfo *retryqp; /* next query to retry */
74:
75: struct qstream {
76: int s_rfd; /* stream file descriptor */
77: int s_size; /* expected amount of data to recive */
78: int s_bufsize; /* amount of data recived in s_buf */
79: char *s_buf; /* buffer of recived data */
80: char *s_bufp; /* pointer into s_buf of recived data */
81: struct qstream *s_next; /* next stream */
82: struct sockaddr_in s_from; /* address query came from */
83: u_long s_time; /* time stamp of last transaction */
84: int s_refcnt; /* number of outstanding queries */
85: u_short s_tempsize; /* temporary for size from net */
86: };
87:
88: #define QSTREAM_NULL ((struct qstream *)0)
89: extern struct qstream *streamq; /* stream queue */
90:
91: #ifdef DEBUG
92: extern int debug; /* debug flag */
93: extern FILE *ddt; /* debug file discriptor */
94: #endif
95: extern int ds; /* datagram socket */
96: extern struct timeval tt; /* place to store time */
97:
98: extern struct itimerval ival; /* maintenance interval */
99: extern struct zoneinfo zones[MAXZONES]; /* zone information */
100: extern int nzones; /* number of zones in use */
101:
102: #ifdef vax
103: extern u_short htons(), ntohs();
104: extern u_long htonl(), ntohl();
105: #endif
Defined struct's
qinfo
defined in line
51; used 52 times
- in line 60-61(4),
71-73(6)
- in /usr/src/etc/named/ns_forw.c line
20-21(4),
36(2),
107(2),
192-195(4),
222-224(4),
249(2),
315(2),
328-332(4),
349-354(8),
372-374(4)
- in /usr/src/etc/named/ns_req.c line
61-63(4)
- in /usr/src/etc/named/ns_resp.c line
32(2)
Defined macros
ISTCP
defined in line
45;
never used
MAXNS
defined in line
17; used 14 times
Usage of this include