]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Implement exponential Max Response Code->Max Response Time mapping for IGMPv3
authorfenner <fenner>
Fri, 11 May 2001 02:13:19 +0000 (02:13 +0000)
committerfenner <fenner>
Fri, 11 May 2001 02:13:19 +0000 (02:13 +0000)
print-igmp.c

index 6a70d023c06fde8838d0c03a5230306f4c80ffb7..dbafcd3f633544b319998db8fcc0df7ef127f4fc 100644 (file)
@@ -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;