Annotation of 43BSD/etc/named/ns.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.