]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-vrrp.c
Handle very large -f files by rejecting them.
[tcpdump] / print-vrrp.c
index f739d1ed71659cfebc69f3f63a02a8da0e682890..a39766767e40d7a054cae8f3d2c96789172ed317 100644 (file)
  * FOR A PARTICULAR PURPOSE.
  */
 
-#define NETDISSECT_REWORKED
+/* \summary: Virtual Router Redundancy Protocol (VRRP) printer */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
 
-#include "interface.h"
+#include "netdissect.h"
 #include "extract.h"
 #include "addrtoname.h"
 
@@ -141,17 +142,21 @@ vrrp_print(netdissect_options *ndo,
 
                        vec[0].ptr = bp;
                        vec[0].len = len;
-                       if (in_cksum(vec, 1))
+                       if (in_cksum(vec, 1)) {
+                               ND_TCHECK_16BITS(&bp[6]);
                                ND_PRINT((ndo, ", (bad vrrp cksum %x)",
                                        EXTRACT_16BITS(&bp[6])));
+                       }
                }
 
                if (version == 3 && ND_TTEST2(bp[0], len)) {
-                       uint16_t cksum = nextproto4_cksum(ndo, (struct ip *)bp2, bp,
+                       uint16_t cksum = nextproto4_cksum(ndo, (const struct ip *)bp2, bp,
                                len, len, IPPROTO_VRRP);
-                       if (cksum)
+                       if (cksum) {
+                               ND_TCHECK_16BITS(&bp[6]);
                                ND_PRINT((ndo, ", (bad vrrp cksum %x)",
                                        EXTRACT_16BITS(&bp[6])));
+                       }
                }
 
                ND_PRINT((ndo, ", addrs"));