#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.131 2003-11-19 00:17:32 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.133 2004-03-17 13:24:09 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
* For unfragmented datagrams, note the don't fragment flag.
*/
- (void)printf(", id %u, offset %u, flags [%s]",
+ (void)printf(", id %u, offset %u, flags [%s], proto %u",
EXTRACT_16BITS(&ip->ip_id),
(off & 0x1fff) * 8,
- bittok2str(ip_frag_values, "none", off & 0xe000 ));
+ bittok2str(ip_frag_values, "none", off & 0xe000 ),
+ ip->ip_p);
(void)printf(", length: %u", EXTRACT_16BITS(&ip->ip_len));
case IPPROTO_AH:
nh = *cp;
advance = ah_print(cp);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance;
goto again;
{
int enh, padlen;
advance = esp_print(cp, (const u_char *)ip, &enh, &padlen);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance + padlen;
- if (enh < 0)
- break;
nh = enh & 0xff;
goto again;
}
{
int enh;
advance = ipcomp_print(cp, &enh);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance;
- if (enh < 0)
- break;
nh = enh & 0xff;
goto again;
}