summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/print-pim.c
diff options
context:
space:
mode:
authorbms <bms@FreeBSD.org>2004-03-31 09:17:26 +0000
committerbms <bms@FreeBSD.org>2004-03-31 09:17:26 +0000
commit281e9d71408deb6e8c5046c746c2e97002b0e7fe (patch)
treeeb08e08f0f875c3b16f8e1aec86091f100906f1c /contrib/tcpdump/print-pim.c
parentbe6faec6d07fc3a2a54836e76d0309c36192dfad (diff)
downloadFreeBSD-src-281e9d71408deb6e8c5046c746c2e97002b0e7fe.zip
FreeBSD-src-281e9d71408deb6e8c5046c746c2e97002b0e7fe.tar.gz
Import tcpdump 3.8.3, from http://www.tcpdump.org/releases/tcpdump-3.8.3.tar.gz
Diffstat (limited to 'contrib/tcpdump/print-pim.c')
-rw-r--r--contrib/tcpdump/print-pim.c55
1 files changed, 44 insertions, 11 deletions
diff --git a/contrib/tcpdump/print-pim.c b/contrib/tcpdump/print-pim.c
index a8219dc..de3b4d5 100644
--- a/contrib/tcpdump/print-pim.c
+++ b/contrib/tcpdump/print-pim.c
@@ -20,19 +20,15 @@
*/
#ifndef lint
-static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.29.4.1 2002/05/07 18:30:19 fenner Exp $ (LBL)";
+static const char rcsid[] _U_ =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-pim.c,v 1.37.2.4 2004/03/24 02:52:37 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
+#include <tcpdump-stdinc.h>
/*
* XXX: We consider a case where IPv6 is not ready yet for portability,
@@ -56,7 +52,6 @@ struct pim {
#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
#include "interface.h"
#include "addrtoname.h"
@@ -118,6 +113,7 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
while (ngroups--) {
TCHECK2(bp[0], 4);
(void)printf("\n\tGroup: %s", ipaddr_string(bp));
+ TCHECK2(bp[4], 4);
if (EXTRACT_32BITS(&bp[4]) != 0xffffffff)
(void)printf("/%s", ipaddr_string(&bp[4]));
TCHECK2(bp[8], 4);
@@ -127,7 +123,7 @@ pimv1_join_prune_print(register const u_char *bp, register u_int len)
bp += 12;
len -= 12;
for (njp = 0; njp < (njoin + nprune); njp++) {
- char *type;
+ const char *type;
if (njp < njoin)
type = "Join ";
@@ -159,6 +155,7 @@ pimv1_print(register const u_char *bp, register u_int len)
if (bp >= ep)
return;
+ TCHECK(bp[1]);
type = bp[1];
switch (type) {
@@ -447,7 +444,7 @@ static int
pimv2_addr_print(const u_char *bp, enum pimv2_addrtype at, int silent)
{
int af;
- char *afstr;
+ const char *afstr;
int len, hdrlen;
TCHECK(bp[0]);
@@ -584,9 +581,25 @@ pimv2_print(register const u_char *bp, register u_int len)
(void)printf(")");
break;
+ case 2: /* LAN Prune Delay */
+ (void)printf(" (LAN-Prune-Delay: ");
+ if (olen != 4) {
+ (void)printf("!olen=%d!)", olen);
+ } else {
+ char t_bit;
+ u_int16_t lan_delay, override_interval;
+ lan_delay = EXTRACT_16BITS(&bp[4]);
+ override_interval = EXTRACT_16BITS(&bp[6]);
+ t_bit = (lan_delay & 0x8000)? 1 : 0;
+ lan_delay &= ~0x8000;
+ (void)printf("T-bit=%d lan-delay=%dms override-interval=%dms)",
+ t_bit, lan_delay, override_interval);
+ }
+ break;
+
case 18: /* Old DR-Priority */
if (olen == 4)
- (void)printf(" (OLD-DR-Priority: %d)",
+ (void)printf(" (OLD-DR-Priority: %d)",
EXTRACT_32BITS(&bp[4]));
else
goto unknown;
@@ -626,6 +639,26 @@ pimv2_print(register const u_char *bp, register u_int len)
(void)printf(" (bidir-capable)");
break;
+ case 24: /* Address List */
+ case 65001: /* Address List (old implementations) */
+ (void)printf(" (%saddr-list",
+ otype == 65001 ? "old" : "");
+ if (vflag > 1) {
+ const u_char *ptr = &bp[4];
+ while (ptr < &bp[4 + olen]) {
+ int advance;
+
+ printf(" ");
+ advance = pimv2_addr_print(ptr, pimv2_unicast, 0);
+ if (advance < 0) {
+ printf("...");
+ break;
+ }
+ ptr += advance;
+ }
+ }
+ (void)printf(")");
+ break;
default:
unknown:
if (vflag)
OpenPOWER on IntegriCloud