don't declare h_errno
[unix-history] / usr / src / include / arpa / nameser.h
index 1b15a3b..b8c714a 100644 (file)
@@ -1,4 +1,11 @@
-/*     nameser.h       4.3     85/03/27        */
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ *     @(#)nameser.h   5.17 (Berkeley) %G%
+ */
+
 /*
  * Define constants based on rfc883
  */
 /*
  * Define constants based on rfc883
  */
        /* number of bytes of fixed size data in resource record */
 #define RRFIXEDSZ      10
 
        /* number of bytes of fixed size data in resource record */
 #define RRFIXEDSZ      10
 
-#ifdef vax
-#define HTONS(s)       (((s >> 8) & 0xff) | ((s & 0xff) << 8))
-#else
-#define HTONS(s)
-#endif
-
 /*
  * Internet nameserver port number
  */
 /*
  * Internet nameserver port number
  */
 /*
  * Currently defined opcodes
  */
 /*
  * Currently defined opcodes
  */
-#define QUERY          0               /* standard query */
-#define IQUERY         1               /* inverse query */
-#define CQUERYM                2               /* completion query (multiple) */
-#define CQUERYU                3               /* completion query (unique) */
+#define QUERY          0x0             /* standard query */
+#define IQUERY         0x1             /* inverse query */
+#define STATUS         0x2             /* nameserver status query */
+/*#define xxx          0x3             /* 0x3 reserved */
        /* non standard */
        /* non standard */
-#define UPDATEA                11              /* add resource record */
-#define UPDATED                12              /* delete resource record */
-#define UPDATEM                13              /* modify resource record */
-#define ZONEINIT       14              /* initial zone transfer */
-#define ZONEREF                15              /* incremental zone referesh */
+#define UPDATEA                0x9             /* add resource record */
+#define UPDATED                0xa             /* delete a specific resource record */
+#define UPDATEDA       0xb             /* delete all nemed resource record */
+#define UPDATEM                0xc             /* modify a specific resource record */
+#define UPDATEMA       0xd             /* modify all named resource record */
+
+#define ZONEINIT       0xe             /* initial zone transfer */
+#define ZONEREF                0xf             /* incremental zone referesh */
 
 /*
  * Currently defined response codes
 
 /*
  * Currently defined response codes
@@ -46,7 +50,7 @@
 #define NOTIMP         4               /* not implemented */
 #define REFUSED                5               /* query refused */
        /* non standard */
 #define NOTIMP         4               /* not implemented */
 #define REFUSED                5               /* query refused */
        /* non standard */
-#define NOCHANGE       15              /* update failed to change db */
+#define NOCHANGE       0xf             /* update failed to change db */
 
 /*
  * Type values for resources and queries
 
 /*
  * Type values for resources and queries
 #define T_PTR          12              /* domain name pointer */
 #define T_HINFO                13              /* host information */
 #define T_MINFO                14              /* mailbox information */
 #define T_PTR          12              /* domain name pointer */
 #define T_HINFO                13              /* host information */
 #define T_MINFO                14              /* mailbox information */
+#define T_MX           15              /* mail routing information */
        /* non standard */
        /* non standard */
-#define T_UINFO                15              /* user (finger) information */
-#define T_UID          16              /* user ID */
-#define T_GID          17              /* group ID */
+#define T_UINFO                100             /* user (finger) information */
+#define T_UID          101             /* user ID */
+#define T_GID          102             /* group ID */
+#define T_UNSPEC       103             /* Unspecified format (binary data) */
        /* Query type values which do not appear in resource records */
 #define T_AXFR         252             /* transfer zone of authority */
 #define T_MAILB                253             /* transfer mailbox records */
        /* Query type values which do not appear in resource records */
 #define T_AXFR         252             /* transfer zone of authority */
 #define T_MAILB                253             /* transfer mailbox records */
  */
 
 #define C_IN           1               /* the arpa internet */
  */
 
 #define C_IN           1               /* the arpa internet */
-#define C_CS           2               /* the computer science network */
+#define C_CHAOS                3               /* for chaos net at MIT */
        /* Query class values which do not appear in resource records */
 #define C_ANY          255             /* wildcard match */
 
        /* Query class values which do not appear in resource records */
 #define C_ANY          255             /* wildcard match */
 
+/*
+ * Status return codes for T_UNSPEC conversion routines
+ */
+#define CONV_SUCCESS 0
+#define CONV_OVERFLOW -1
+#define CONV_BADFMT -2
+#define CONV_BADCKSUM -3
+#define CONV_BADBUFLEN -4
+
 /*
  * Structure for query header, the order of the fields is machine and
  * compiler dependent, in our case, the bits within a byte are assignd 
 /*
  * Structure for query header, the order of the fields is machine and
  * compiler dependent, in our case, the bits within a byte are assignd 
 
 typedef struct {
        u_short id;             /* query identification number */
 
 typedef struct {
        u_short id;             /* query identification number */
+#if defined (sun) || defined (sel) || defined (pyr) || defined (is68k) \
+|| defined (tahoe) || defined (BIT_ZERO_ON_LEFT)
+       /* Bit zero on left:  Gould and similar architectures */
+                       /* fields in third byte */
+       u_char  qr:1;           /* response flag */
+       u_char  opcode:4;       /* purpose of message */
+       u_char  aa:1;           /* authoritive answer */
+       u_char  tc:1;           /* truncated message */
+       u_char  rd:1;           /* recursion desired */
+                       /* fields in fourth byte */
+       u_char  ra:1;           /* recursion available */
+       u_char  pr:1;           /* primary server required (non standard) */
+       u_char  unused:2;       /* unused bits */
+       u_char  rcode:4;        /* response code */
+#else
+#if defined (vax) || defined(ns32000) || defined (BIT_ZERO_ON_RIGHT)
+       /* Bit zero on right:  VAX */
                        /* fields in third byte */
        u_char  rd:1;           /* recursion desired */
        u_char  tc:1;           /* truncated message */
        u_char  aa:1;           /* authoritive answer */
        u_char  opcode:4;       /* purpose of message */
        u_char  qr:1;           /* response flag */
                        /* fields in third byte */
        u_char  rd:1;           /* recursion desired */
        u_char  tc:1;           /* truncated message */
        u_char  aa:1;           /* authoritive answer */
        u_char  opcode:4;       /* purpose of message */
        u_char  qr:1;           /* response flag */
-                       /* fields in forth byte */
+                       /* fields in fourth byte */
        u_char  rcode:4;        /* response code */
        u_char  unused:2;       /* unused bits */
        u_char  pr:1;           /* primary server required (non standard) */
        u_char  ra:1;           /* recursion available */
        u_char  rcode:4;        /* response code */
        u_char  unused:2;       /* unused bits */
        u_char  pr:1;           /* primary server required (non standard) */
        u_char  ra:1;           /* recursion available */
+#else
+       /* you must determine what the correct bit order is for your compiler */
+       UNDEFINED_BIT_ORDER;
+#endif
+#endif
                        /* remaining bytes */
        u_short qdcount;        /* number of question entries */
        u_short ancount;        /* number of answer entries */
                        /* remaining bytes */
        u_short qdcount;        /* number of question entries */
        u_short ancount;        /* number of answer entries */
@@ -128,5 +165,40 @@ struct rrec {
        char    *r_data;                /* pointer to data */
 };
 
        char    *r_data;                /* pointer to data */
 };
 
-extern u_short getshort();
-extern u_long  getlong();
+extern u_short _getshort();
+extern u_long  _getlong();
+
+/*
+ * Inline versions of get/put short/long.
+ * Pointer is advanced; we assume that both arguments
+ * are lvalues and will already be in registers.
+ * cp MUST be u_char *.
+ */
+#define GETSHORT(s, cp) { \
+       (s) = *(cp)++ << 8; \
+       (s) |= *(cp)++; \
+}
+
+#define GETLONG(l, cp) { \
+       (l) = *(cp)++ << 8; \
+       (l) |= *(cp)++; (l) <<= 8; \
+       (l) |= *(cp)++; (l) <<= 8; \
+       (l) |= *(cp)++; \
+}
+
+
+#define PUTSHORT(s, cp) { \
+       *(cp)++ = (s) >> 8; \
+       *(cp)++ = (s); \
+}
+
+/*
+ * Warning: PUTLONG destroys its first argument.
+ */
+#define PUTLONG(l, cp) { \
+       (cp)[3] = l; \
+       (cp)[2] = (l >>= 8); \
+       (cp)[1] = (l >>= 8); \
+       (cp)[0] = l >> 8; \
+       (cp) += sizeof(u_long); \
+}