]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-pim.c
There's no link-layer header on Linux ARPHRD_ATM packets; there's
[tcpdump] / print-pim.c
index 52096e2e3458b328c387118fff96d3670d6452c9..39128eba1618a2c6c4db549813104e498982b21c 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.26 2001-05-10 05:30:21 fenner Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.29 2001-07-04 21:36:15 fenner Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -258,7 +258,9 @@ trunc:
 
 /*
  * auto-RP is a cisco protocol, documented at
- * ftp://ftpeng.cisco.com/ipmulticast/pim-autorp-spec01.txt
+ * ftp://ftpeng.cisco.com/ipmulticast/specs/pim-autorp-spec01.txt
+ *
+ * This implements version 1+, dated Sept 9, 1998.
  */
 void
 cisco_autorp_print(register const u_char *bp, register u_int len)
@@ -327,6 +329,8 @@ cisco_autorp_print(register const u_char *bp, register u_int len)
                case 3: printf(" PIMv1+2");
                        break;
                }
+               if (bp[4] & 0xfc)
+                       (void)printf(" [rsvd=0x%02x]", bp[4] & 0xfc);
                TCHECK(bp[5]);
                nentries = bp[5];
                bp += 6; len -= 6;
@@ -335,6 +339,8 @@ cisco_autorp_print(register const u_char *bp, register u_int len)
                        TCHECK2(bp[0], 6);
                        (void)printf("%c%s%s/%d", s, bp[0] & 1 ? "!" : "",
                            ipaddr_string(&bp[2]), bp[1]);
+                       if (bp[0] & 0xfe)
+                               (void)printf("[rsvd=0x%02x]", bp[0] & 0xfe);
                        s = ',';
                        bp += 6; len -= 6;
                }
@@ -416,11 +422,6 @@ static int pimv2_addr_len;
 enum pimv2_addrtype {
        pimv2_unicast, pimv2_group, pimv2_source
 };
-#if 0
-static char *addrtypestr[] = {
-       "unicast", "group", "source"
-};
-#endif
 
 /*  0                   1                   2                   3
  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@@ -597,9 +598,13 @@ pimv2_print(register const u_char *bp, register u_int len)
                                break;
 
                        case 21:
-                               (void)printf(" (State Refresh Capable");
-                               if (EXTRACT_32BITS(&bp[4]) != 1) {
-                                       (void)printf(" ?0x%x?", EXTRACT_32BITS(&bp[4]));
+                               (void)printf(" (State Refresh Capable; v%d", bp[4]);
+                               if (bp[5] != 0) {
+                                       (void)printf(" interval ");
+                                       relts_print(bp[5]);
+                               }
+                               if (EXTRACT_16BITS(&bp[6]) != 0) {
+                                       (void)printf(" ?0x%04x?", EXTRACT_16BITS(&bp[6]));
                                }
                                (void)printf(")");
                                break;