]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-ah.c
There's no link-layer header on Linux ARPHRD_ATM packets; there's
[tcpdump] / print-ah.c
index be1e67ce8ea0f2d60943fd49b4b56aeb750d7ea1..6450295b7cf092ffe7dc54cd0394f19806e4ac53 100644 (file)
@@ -23,7 +23,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.13 2000-10-06 11:32:18 itojun Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.15 2001-09-17 21:57:54 fenner Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -52,19 +52,18 @@ ah_print(register const u_char *bp, register const u_char *bp2)
        int sumlen;
        u_int32_t spi;
 
-       ah = (struct ah *)bp;
+       ah = (const struct ah *)bp;
        ep = snapend;           /* 'ep' points to the end of available data. */
 
-       if ((u_char *)(ah + 1) >= ep - sizeof(struct ah))
-               goto trunc;
+       TCHECK(*ah);
 
        sumlen = ah->ah_len << 2;
        spi = (u_int32_t)ntohl(ah->ah_spi);
 
-       printf("AH(spi=%u", spi);
+       printf("AH(spi=0x%08x", spi);
        if (vflag)
                printf(",sumlen=%d", sumlen);
-       printf(",seq=0x%x", (u_int32_t)ntohl(*(u_int32_t *)(ah + 1)));
+       printf(",seq=0x%x", (u_int32_t)ntohl(*(const u_int32_t *)(ah + 1)));
        if (bp + sizeof(struct ah) + sumlen > ep)
                fputs("[truncated]", stdout);
        fputs("): ", stdout);