|
|
1.1 ! root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.