home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / utilities / utilss / sockets / include / arpa / h / nameser < prev    next >
Encoding:
Text File  |  1995-01-11  |  7.1 KB  |  176 lines

  1. /*
  2.  * $Header: /ax/networking:include/arpa/nameser.h:networking  1.1  $
  3.  * $Source: /ax/networking:include/arpa/nameser.h: $
  4.  *
  5.  * Copyright (c) 1988 Acorn Computers Ltd., Cambridge, England
  6.  *
  7.  * $Log:    nameser.h,v $
  8.  * Revision 1.1  95/01/11  10:14:20  kwelton
  9.  * Initial revision
  10.  * 
  11.  * Revision 1.4  88/08/19  10:55:50  keith
  12.  * Fix1102: Arm was in the BigEndian set of processors!
  13.  * 
  14.  * Revision 1.3  88/06/19  15:20:09  beta
  15.  * Acorn Unix initial beta version
  16.  * 
  17.  */
  18. /*
  19.  * Copyright (c) 1983 Regents of the University of California.
  20.  * All rights reserved.  The Berkeley software License Agreement
  21.  * specifies the terms and conditions for redistribution.
  22.  *
  23.  *      @(#)nameser.h   5.11 (Berkeley) 2/14/86
  24.  */
  25.  
  26. /*
  27.  * Define constants based on rfc883
  28.  */
  29. #define PACKETSZ        512             /* maximum packet size */
  30. #define MAXDNAME        256             /* maximum domain name */
  31. #define MAXCDNAME       255             /* maximum compressed domain name */
  32. #define MAXLABEL        63              /* maximum length of domain label */
  33.         /* Number of bytes of fixed size data in query structure */
  34. #define QFIXEDSZ        4
  35.         /* number of bytes of fixed size data in resource record */
  36. #define RRFIXEDSZ       10
  37.  
  38. /*
  39.  * Internet nameserver port number
  40.  */
  41. #define NAMESERVER_PORT 53
  42.  
  43. /*
  44.  * Currently defined opcodes
  45.  */
  46. #define QUERY           0               /* standard query */
  47. #define IQUERY          1               /* inverse query */
  48. #define CQUERYM         2               /* completion query (multiple) */
  49. #define CQUERYU         3               /* completion query (unique) */
  50.         /* non standard */
  51. #define UPDATEA         100             /* add resource record */
  52. #define UPDATED         101             /* delete resource record */
  53. #define UPDATEM         102             /* modify resource record */
  54. #define ZONEINIT        103             /* initial zone transfer */
  55. #define ZONEREF         104             /* incremental zone referesh */
  56.  
  57. /*
  58.  * Currently defined response codes
  59.  */
  60. #define NOERROR         0               /* no error */
  61. #define FORMERR         1               /* format error */
  62. #define SERVFAIL        2               /* server failure */
  63. #define NXDOMAIN        3               /* non existent domain */
  64. #define NOTIMP          4               /* not implemented */
  65. #define REFUSED         5               /* query refused */
  66.         /* non standard */
  67. #define NOCHANGE        100             /* update failed to change db */
  68.  
  69. /*
  70.  * Type values for resources and queries
  71.  */
  72. #define T_A             1               /* host address */
  73. #define T_NS            2               /* authoritative server */
  74. #define T_MD            3               /* mail destination */
  75. #define T_MF            4               /* mail forwarder */
  76. #define T_CNAME         5               /* connonical name */
  77. #define T_SOA           6               /* start of authority zone */
  78. #define T_MB            7               /* mailbox domain name */
  79. #define T_MG            8               /* mail group member */
  80. #define T_MR            9               /* mail rename name */
  81. #define T_NULL          10              /* null resource record */
  82. #define T_WKS           11              /* well known service */
  83. #define T_PTR           12              /* domain name pointer */
  84. #define T_HINFO         13              /* host information */
  85. #define T_MINFO         14              /* mailbox information */
  86. #define T_MX            15              /* mail routing information */
  87.         /* non standard */
  88. #define T_UINFO         100             /* user (finger) information */
  89. #define T_UID           101             /* user ID */
  90. #define T_GID           102             /* group ID */
  91.         /* Query type values which do not appear in resource records */
  92. #define T_AXFR          252             /* transfer zone of authority */
  93. #define T_MAILB         253             /* transfer mailbox records */
  94. #define T_MAILA         254             /* transfer mail agent records */
  95. #define T_ANY           255             /* wildcard match */
  96.  
  97. /*
  98.  * Values for class field
  99.  */
  100.  
  101. #define C_IN            1               /* the arpa internet */
  102. #define C_CHAOS         3               /* for chaos net at MIT */
  103.         /* Query class values which do not appear in resource records */
  104. #define C_ANY           255             /* wildcard match */
  105.  
  106. /*
  107.  * Structure for query header, the order of the fields is machine and
  108.  * compiler dependent, in our case, the bits within a byte are assignd 
  109.  * least significant first, while the order of transmition is most 
  110.  * significant first.  This requires a somewhat confusing rearrangement.
  111.  */
  112.  
  113. typedef struct {
  114.         u_short id;             /* query identification number */
  115. #if defined (sun) || defined (sel) || defined (pyr) || defined (is68k) \
  116. || defined (tahoe) || defined (BIT_ZERO_ON_LEFT)
  117.         /* Bit zero on left:  Gould and similar architectures */
  118.                         /* fields in third byte */
  119.         u_char  qr:1;           /* response flag */
  120.         u_char  opcode:4;       /* purpose of message */
  121.         u_char  aa:1;           /* authoritive answer */
  122.         u_char  tc:1;           /* truncated message */
  123.         u_char  rd:1;           /* recursion desired */
  124.                         /* fields in fourth byte */
  125.         u_char  ra:1;           /* recursion available */
  126.         u_char  pr:1;           /* primary server required (non standard) */
  127.         u_char  unused:2;       /* unused bits */
  128.         u_char  rcode:4;        /* response code */
  129. #else
  130. #if defined(arm) || defined (vax) || defined (BIT_ZERO_ON_RIGHT)
  131.         /* Bit zero on right:  VAX */
  132.                         /* fields in third byte */
  133.         u_char  rd:1;           /* recursion desired */
  134.         u_char  tc:1;           /* truncated message */
  135.         u_char  aa:1;           /* authoritive answer */
  136.         u_char  opcode:4;       /* purpose of message */
  137.         u_char  qr:1;           /* response flag */
  138.                         /* fields in fourth byte */
  139.         u_char  rcode:4;        /* response code */
  140.         u_char  unused:2;       /* unused bits */
  141.         u_char  pr:1;           /* primary server required (non standard) */
  142.         u_char  ra:1;           /* recursion available */
  143. #else
  144.         /* you must determine what the correct bit order is for your compiler */
  145.         UNDEFINED_BIT_ORDER;
  146. #endif
  147. #endif
  148.                         /* remaining bytes */
  149.         u_short qdcount;        /* number of question entries */
  150.         u_short ancount;        /* number of answer entries */
  151.         u_short nscount;        /* number of authority entries */
  152.         u_short arcount;        /* number of resource entries */
  153. } HEADER;
  154.  
  155. /*
  156.  * Defines for handling compressed domain names
  157.  */
  158. #define INDIR_MASK      0xc0
  159.  
  160. /*
  161.  * Structure for passing resource records around.
  162.  */
  163. struct rrec {
  164.         short   r_zone;                 /* zone number */
  165.         short   r_class;                /* class number */
  166.         short   r_type;                 /* type number */
  167.         u_long  r_ttl;                  /* time to live */
  168.         int     r_size;                 /* size of data area */
  169.         char    *r_data;                /* pointer to data */
  170. };
  171.  
  172. extern  u_short getshort();
  173. extern  u_long  getlong();
  174.  
  175. /* EOF nameser.h */
  176.