X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/b3794ce8b7fa7d19fe5fcec5acbe85a800417a91..75390cf6e7d50d6719821098d6b3069ef308ba7c:/print-igmp.c diff --git a/print-igmp.c b/print-igmp.c index 6a70d023..dbafcd3f 100644 --- a/print-igmp.c +++ b/print-igmp.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-igmp.c,v 1.3 2001-01-09 08:01:18 fenner Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-igmp.c,v 1.4 2001-05-11 02:13:19 fenner Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -196,6 +196,7 @@ static void print_igmpv3_query(register const u_char *bp, register u_int len, register const u_char *bp2) { + int mrt, mrc; int nsrcs; register int i; @@ -205,6 +206,17 @@ print_igmpv3_query(register const u_char *bp, register u_int len, (void)printf(" [invalid len %d]", len); return; } + mrc = bp[1]; + if (mrc < 128) { + mrt = mrc; + } else { + mrt = ((mrc & 0x0f) | 0x10) << (((mrc & 0x70) >> 4) + 3); + } + if (mrc != 100) { + (void)printf(" [max resp time "); + relts_print(mrt); + (void)printf("]"); + } TCHECK2(bp[4], 4); if (EXTRACT_32BITS(&bp[4]) == 0) return;