X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/26b97700bf1082c94ea5b7b6ba18f0721fd8f0f7..ba0e682364d51d69c2611850734d7ed925e5034d:/print-pim.c diff --git a/print-pim.c b/print-pim.c index 774096e2..792dd224 100644 --- a/print-pim.c +++ b/print-pim.c @@ -19,17 +19,20 @@ * 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 + +#include +#include + #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 -#include - -#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: