diff options
| author | guy <guy> | 2004-04-28 22:02:23 +0000 |
|---|---|---|
| committer | guy <guy> | 2004-04-28 22:02:23 +0000 |
| commit | f06770b12d09d364109c6886d99bf022311b1ea0 (patch) | |
| tree | 2557ca560154c87bfcb637778f63c89fe0af96e6 /print-ip.c | |
| parent | 19670ba07cefc8c96211e26cfe485f489bc5ea26 (diff) | |
| download | tcpdump-f06770b12d09d364109c6886d99bf022311b1ea0.tar.gz | |
Some BSDs define IPPROTO_IGRP as 88 and don't define IPPROTO_EIGRP, so
we also define it as 88, so we can't have
case IPPROTO_IGRP:
case IPPROTO_EIGRP:
in a switch statement.
The current IANA protocol number assignments page lists 9 as "any
private interior gateway (used by Cisco for their IGRP)" and 88 as
"EIGRP" from Cisco, so we define IPPROTO_PIGP as 9 (which matches what
those BSDs do) and IPPROTO_EIGRP as 88 (so we don't bother with
IPPROTO_IGRP at all), and do
case IPPROTO_PIGP:
case IPPROTO_EIGRP:
It's not clear that we should handle both with the same print routine,
however - Cisco IGRP and Cisco EIGRP don't appear to have the same
packet format.
Diffstat (limited to 'print-ip.c')
| -rw-r--r-- | print-ip.c | 24 |
1 files changed, 22 insertions, 2 deletions
@@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.137 2004-04-26 18:27:57 hannes Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.138 2004-04-28 22:02:23 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -544,8 +544,28 @@ again: icmp_print(cp, len, (const u_char *)ip, (off & 0x3fff)); break; - case IPPROTO_IGRP: + case IPPROTO_PIGP: case IPPROTO_EIGRP: + /* + * XXX - the current IANA protocol number assignments + * page lists 9 as "any private interior gateway + * (used by Cisco for their IGRP)" and 88 as + * "EIGRP" from Cisco. + * + * Recent BSD <netinet/in.h> headers define + * IP_PROTO_PIGP as 9 and IP_PROTO_IGRP as 88. + * We define IP_PROTO_PIGP as 9 and + * IP_PROTO_EIGRP as 88; those names better + * match was the current protocol number + * assignments say. + * + * XXX - at least according to the Ethereal + * dissectors, Cisco IGRP and Cisco EIGRP are + * *not* the same, so it's not clear that both + * IPPROTO_PIGP and IPPROTO_EIGRP should be + * handed to the same print routine; "igrp_print()" + * appears to be for IGRP, not EIGRP. + */ igrp_print(cp, len, (const u_char *)ip); break; |
