]> The Tcpdump Group git mirrors - tcpdump/blobdiff - nameser.h
Handle very large -f files by rejecting them.
[tcpdump] / nameser.h
index 7a9e6113595dc1c96c934614176d504495dd5d59..808ac9d081b49430fb1a8a70118efd3e500717e0 100644 (file)
--- a/nameser.h
+++ b/nameser.h
@@ -1,4 +1,3 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/nameser.h,v 1.14 2003-11-05 06:02:59 guy Exp $ (LBL) */
 /*
  * Copyright (c) 1983, 1989, 1993
  *     The Regents of the University of California.  All rights reserved.
        /* number of bytes of fixed size data in resource record */
 #define RRFIXEDSZ      10
 
-/*
- * Internet nameserver port number
- */
-#define NAMESERVER_PORT        53
-#define MULTICASTDNS_PORT      5353
-
 /*
  * Currently defined opcodes
  */
 #define T_SRV          33              /* Server selection */
 #define T_ATMA         34              /* ATM Address */
 #define T_NAPTR                35              /* Naming Authority PoinTeR */
+#define T_KX           36              /* Key Exchanger */
+#define T_CERT         37              /* Certificates in the DNS */
 #define T_A6           38              /* IP6 address */
 #define T_DNAME                39              /* non-terminal redirection */
+#define T_SINK         40              /* unknown */
 #define T_OPT          41              /* EDNS0 option (meta-RR) */
+#define T_APL          42              /* lists of address prefixes */
+#define T_DS           43              /* Delegation Signer */
+#define T_SSHFP                44              /* SSH Fingerprint */
+#define T_IPSECKEY     45              /* IPsec keying material */
+#define T_RRSIG                46              /* new security signature */
+#define T_NSEC         47              /* provable insecure information */
+#define T_DNSKEY       48              /* new security key */
        /* non standard */
+#define T_SPF          99              /* sender policy framework */
 #define T_UINFO                100             /* user (finger) information */
 #define T_UID          101             /* user ID */
 #define T_GID          102             /* group ID */
 #define C_HS           4               /* for Hesiod name server (MIT) (XXX) */
        /* Query class values which do not appear in resource records */
 #define C_ANY          255             /* wildcard match */
-#define C_CACHE_FLUSH  0x8000          /* mDNS cache flush flag */
+#define C_QU           0x8000          /* mDNS QU flag in queries */
+#define C_CACHE_FLUSH  0x8000          /* mDNS cache flush flag in replies */
 
 /*
  * Status return codes for T_UNSPEC conversion routines
  * Structure for query header.
  */
 typedef struct {
-       u_int16_t id;           /* query identification number */
-       u_int8_t  flags1;       /* first byte of flags */
-       u_int8_t  flags2;       /* second byte of flags */
-       u_int16_t qdcount;      /* number of question entries */
-       u_int16_t ancount;      /* number of answer entries */
-       u_int16_t nscount;      /* number of authority entries */
-       u_int16_t arcount;      /* number of resource entries */
+       uint16_t id;            /* query identification number */
+       uint8_t  flags1;        /* first byte of flags */
+       uint8_t  flags2;        /* second byte of flags */
+       uint16_t qdcount;       /* number of question entries */
+       uint16_t ancount;       /* number of answer entries */
+       uint16_t nscount;       /* number of authority entries */
+       uint16_t arcount;       /* number of resource entries */
 } HEADER;
 
 /*
@@ -231,8 +236,11 @@ typedef struct {
 /*
  * Defines for handling compressed domain names, EDNS0 labels, etc.
  */
-#define INDIR_MASK     0xc0    /* 11.... */
-#define EDNS0_MASK     0x40    /* 01.... */
+#define TYPE_MASK      0xc0    /* mask for the type bits of the item */
+#define TYPE_INDIR     0xc0    /* 11.... - pointer */
+#define TYPE_RESERVED  0x80    /* 10.... - reserved */
+#define TYPE_EDNS0     0x40    /* 01.... - EDNS(0) label */
+#define TYPE_LABEL     0x00    /* 00.... - regular label */
 #  define EDNS0_ELT_BITLABEL 0x01
 
 /*
@@ -242,36 +250,36 @@ struct rrec {
        int16_t r_zone;                 /* zone number */
        int16_t r_class;                /* class number */
        int16_t r_type;                 /* type number */
-       u_int32_t       r_ttl;                  /* time to live */
+       uint32_t        r_ttl;                  /* time to live */
        int     r_size;                 /* size of data area */
        char    *r_data;                /* pointer to data */
 };
 
 /*
  * Inline versions of get/put short/long.  Pointer is advanced.
- * We also assume that a "u_int16_t" holds 2 "chars"
- * and that a "u_int32_t" holds 4 "chars".
+ * We also assume that a "uint16_t" holds 2 "chars"
+ * and that a "uint32_t" holds 4 "chars".
  *
  * These macros demonstrate the property of C whereby it can be
  * portable or it can be elegant but never both.
  */
 #define GETSHORT(s, cp) { \
        register u_char *t_cp = (u_char *)(cp); \
-       (s) = ((u_int16_t)t_cp[0] << 8) | (u_int16_t)t_cp[1]; \
+       (s) = ((uint16_t)t_cp[0] << 8) | (uint16_t)t_cp[1]; \
        (cp) += 2; \
 }
 
 #define GETLONG(l, cp) { \
        register u_char *t_cp = (u_char *)(cp); \
-       (l) = (((u_int32_t)t_cp[0]) << 24) \
-           | (((u_int32_t)t_cp[1]) << 16) \
-           | (((u_int32_t)t_cp[2]) << 8) \
-           | (((u_int32_t)t_cp[3])); \
+       (l) = (((uint32_t)t_cp[0]) << 24) \
+           | (((uint32_t)t_cp[1]) << 16) \
+           | (((uint32_t)t_cp[2]) << 8) \
+           | (((uint32_t)t_cp[3])); \
        (cp) += 4; \
 }
 
 #define PUTSHORT(s, cp) { \
-       register u_int16_t t_s = (u_int16_t)(s); \
+       register uint16_t t_s = (uint16_t)(s); \
        register u_char *t_cp = (u_char *)(cp); \
        *t_cp++ = t_s >> 8; \
        *t_cp   = t_s; \
@@ -283,7 +291,7 @@ struct rrec {
  * were depending on this "feature", you will lose.
  */
 #define PUTLONG(l, cp) { \
-       register u_int32_t t_l = (u_int32_t)(l); \
+       register uint32_t t_l = (uint32_t)(l); \
        register u_char *t_cp = (u_char *)(cp); \
        *t_cp++ = t_l >> 24; \
        *t_cp++ = t_l >> 16; \