]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-pim.c
print-mobile: mobile_print(): variable 'cp' is assigned a value that is never used
[tcpdump] / print-pim.c
index 774096e2f934d10354210165fb92724ca54c764b..792dd224c7a6560382c3dce3b53bd89f9d25ae67 100644 (file)
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#ifndef lint
-static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.49 2006-02-13 01:31:35 hannes Exp $ (LBL)";
-#endif
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
 #include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
 #include "interface.h"
+#include "addrtoname.h"
+#include "extract.h"
+
+#include "ip.h"
 
 #define PIMV2_TYPE_HELLO         0
 #define PIMV2_TYPE_REGISTER      1
@@ -42,7 +45,7 @@ static const char rcsid[] _U_ =
 #define PIMV2_TYPE_CANDIDATE_RP  8
 #define PIMV2_TYPE_PRUNE_REFRESH 9
 
-static struct tok pimv2_type_values[] = {
+static const struct tok pimv2_type_values[] = {
     { PIMV2_TYPE_HELLO,         "Hello" },
     { PIMV2_TYPE_REGISTER,      "Register" },
     { PIMV2_TYPE_REGISTER_STOP, "Register Stop" },
@@ -66,7 +69,7 @@ static struct tok pimv2_type_values[] = {
 #define PIMV2_HELLO_OPTION_ADDRESS_LIST        24
 #define PIMV2_HELLO_OPTION_ADDRESS_LIST_OLD 65001
 
-static struct tok pimv2_hello_option_values[] = {
+static const struct tok pimv2_hello_option_values[] = {
     { PIMV2_HELLO_OPTION_HOLDTIME,         "Hold Time" },
     { PIMV2_HELLO_OPTION_LANPRUNEDELAY,    "LAN Prune Delay" },
     { PIMV2_HELLO_OPTION_DR_PRIORITY_OLD,  "DR Priority (Old)" },
@@ -83,11 +86,11 @@ static struct tok pimv2_hello_option_values[] = {
 #define PIMV2_REGISTER_FLAG_BORDER 0x80000000
 #define PIMV2_REGISTER_FLAG_NULL   0x40000000
 
-static struct tok pimv2_register_flag_values[] = {
+static const struct tok pimv2_register_flag_values[] = {
     { PIMV2_REGISTER_FLAG_BORDER, "Border" },
     { PIMV2_REGISTER_FLAG_NULL, "Null" },
     { 0, NULL}
-};    
+};
 
 /*
  * XXX: We consider a case where IPv6 is not ready yet for portability,
@@ -108,22 +111,12 @@ struct pim {
        u_short pim_cksum;      /* IP style check sum */
 };
 
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "extract.h"
-
-#include "ip.h"
-
-static void pimv2_print(register const u_char *bp, register u_int len);
+static void pimv2_print(register const u_char *bp, register u_int len, u_int cksum);
 
 static void
 pimv1_join_prune_print(register const u_char *bp, register u_int len)
 {
-       int maddrlen, addrlen, ngroups, njoin, nprune;
+       int ngroups, njoin, nprune;
        int njp;
 
        /* If it's a single group and a single source, use 1-line output. */
@@ -164,8 +157,6 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
        len -= 8;
 
        TCHECK2(bp[0], 4);
-       maddrlen = bp[1];
-       addrlen = bp[2];
        ngroups = bp[3];
        bp += 4;
        len -= 4;
@@ -399,8 +390,12 @@ 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);
+                       if (bp[0] & 0x02) {
+                           (void)printf(" bidir");
+                       }
+                       if (bp[0] & 0xfc) {
+                           (void)printf("[rsvd=0x%02x]", bp[0] & 0xfc);
+                       }
                        s = ',';
                        bp += 6; len -= 6;
                }
@@ -413,7 +408,7 @@ trunc:
 }
 
 void
-pim_print(register const u_char *bp, register u_int len)
+pim_print(register const u_char *bp, register u_int len, u_int cksum)
 {
        register const u_char *ep;
        register struct pim *pim = (struct pim *)bp;
@@ -438,7 +433,7 @@ pim_print(register const u_char *bp, register u_int len)
                        PIM_VER(pim->pim_typever),
                        len,
                        tok2str(pimv2_type_values,"Unknown Type",PIM_TYPE(pim->pim_typever)));
-                pimv2_print(bp, len);
+                pimv2_print(bp, len, cksum);
             }
             break;
        default:
@@ -618,7 +613,7 @@ trunc:
 }
 
 static void
-pimv2_print(register const u_char *bp, register u_int len)
+pimv2_print(register const u_char *bp, register u_int len, u_int cksum)
 {
        register const u_char *ep;
        register struct pim *pim = (struct pim *)bp;
@@ -638,9 +633,7 @@ pimv2_print(register const u_char *bp, register u_int len)
         if (EXTRACT_16BITS(&pim->pim_cksum) == 0) {
                 printf("(unverified)");
         } else {
-                printf("(%scorrect)",
-                       TTEST2(bp[0], len) &&
-                       in_cksum((const u_short*)bp, len, 0) ? "in" : "" );
+                printf("(%scorrect)", TTEST2(bp[0], len) && cksum ? "in" : "" );
         }
 
        switch (PIM_TYPE(pim->pim_typever)) {
@@ -667,7 +660,7 @@ pimv2_print(register const u_char *bp, register u_int len)
 
                        case PIMV2_HELLO_OPTION_LANPRUNEDELAY:
                                if (olen != 4) {
-                                       (void)printf("ERROR: Option Lenght != 4 Bytes (%u)", olen);
+                                       (void)printf("ERROR: Option Length != 4 Bytes (%u)", olen);
                                } else {
                                        char t_bit;
                                        u_int16_t lan_delay, override_interval;
@@ -690,7 +683,7 @@ pimv2_print(register const u_char *bp, register u_int len)
                                     printf("%u", EXTRACT_32BITS(bp));
                                     break;
                                 default:
-                                    printf("ERROR: Option Lenght != 4 Bytes (%u)", olen);
+                                    printf("ERROR: Option Length != 4 Bytes (%u)", olen);
                                     break;
                                 }
                                 break;
@@ -732,12 +725,12 @@ pimv2_print(register const u_char *bp, register u_int len)
                                break;
                        default:
                                 if (vflag <= 1)
-                                    print_unknown_data(bp,"\n\t    ",olen);
+                                    print_unknown_data(gndo,bp,"\n\t    ",olen);
                                 break;
                        }
                         /* do we want to see an additionally hexdump ? */
                         if (vflag> 1)
-                            print_unknown_data(bp,"\n\t    ",olen);
+                            print_unknown_data(gndo,bp,"\n\t    ",olen);
                        bp += olen;
                }
                break;
@@ -770,7 +763,7 @@ pimv2_print(register const u_char *bp, register u_int len)
                        break;
 #ifdef INET6
                case 6: /* IPv6 */
-                       ip6_print(bp, len);
+                       ip6_print(gndo, bp, len);
                        break;
 #endif
                 default: