]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-domain.c
bugfix from Aaron Campbel <[email protected]>:
[tcpdump] / print-domain.c
index a50e591830ffad7e6247fd41f3d476b42e0ef850..3db942720f73e901237df5f80f482dadc9e61644 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-domain.c,v 1.89.2.1 2005-04-20 20:59:00 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-domain.c,v 1.89.2.3 2006-04-07 08:58:43 guy Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -278,9 +278,20 @@ struct tok ns_type2str[] = {
        { T_SRV,        "SRV" },                /* RFC 2782 */
        { T_ATMA,       "ATMA" },               /* ATM Forum */
        { T_NAPTR,      "NAPTR" },              /* RFC 2168, RFC 2915 */
+       { T_KX,         "KX" },                 /* RFC 2230 */
+       { T_CERT,       "CERT" },               /* RFC 2538 */
        { T_A6,         "A6" },                 /* RFC 2874 */
        { T_DNAME,      "DNAME" },              /* RFC 2672 */
+       { T_SINK,       "SINK" },
        { T_OPT,        "OPT" },                /* RFC 2671 */
+       { T_APL,        "APL" },                /* RFC 3123 */
+       { T_DS,         "DS" },                 /* RFC 4034 */
+       { T_SSHFP,      "SSHFP" },              /* RFC 4255 */
+       { T_IPSECKEY,   "IPSECKEY" },           /* RFC 4025 */
+       { T_RRSIG,      "RRSIG" },              /* RFC 4034 */
+       { T_NSEC,       "NSEC" },               /* RFC 4034 */
+       { T_DNSKEY,     "DNSKEY" },             /* RFC 4034 */
+       { T_SPF,        "SPF" },                /* RFC-schlitt-spf-classic-02.txt */
        { T_UINFO,      "UINFO" },
        { T_UID,        "UID" },
        { T_GID,        "GID" },
@@ -336,7 +347,7 @@ ns_qprint(register const u_char *cp, register const u_char *bp, int is_mdns)
 static const u_char *
 ns_rprint(register const u_char *cp, register const u_char *bp, int is_mdns)
 {
-       register u_int class;
+       register u_int class, opt_flags = 0;
        register u_short typ, len;
        register const u_char *rp;
 
@@ -361,7 +372,12 @@ ns_rprint(register const u_char *cp, register const u_char *bp, int is_mdns)
                printf(" %s", tok2str(ns_class2str, "(Class %d)", class));
 
        /* ignore ttl */
-       cp += 4;
+       cp += 2;
+       /* if T_OPT, save opt_flags */
+       if (typ == T_OPT)
+               opt_flags = EXTRACT_16BITS(cp);
+       /* ignore rest of ttl */
+       cp += 2;
 
        len = EXTRACT_16BITS(cp);
        cp += 2;
@@ -478,6 +494,8 @@ ns_rprint(register const u_char *cp, register const u_char *bp, int is_mdns)
 
        case T_OPT:
                printf(" UDPsize=%u", class);
+               if (opt_flags & 0x8000)
+                       printf(" OK");
                break;
 
        case T_UNSPECA:         /* One long string */