summaryrefslogtreecommitdiff
path: root/print-ip.c
diff options
context:
space:
mode:
authorguy <guy>2004-04-28 22:02:23 +0000
committerguy <guy>2004-04-28 22:02:23 +0000
commitf06770b12d09d364109c6886d99bf022311b1ea0 (patch)
tree2557ca560154c87bfcb637778f63c89fe0af96e6 /print-ip.c
parent19670ba07cefc8c96211e26cfe485f489bc5ea26 (diff)
downloadtcpdump-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.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/print-ip.c b/print-ip.c
index d56c0bd8..af173853 100644
--- a/print-ip.c
+++ b/print-ip.c
@@ -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;