Skip to content

Commit c8d2dd0

Browse files
committed
Support both "igrp" and "eigrp" in filters.
Use our own header to define IPPROTO_ values, rather than leaving them up to the OS for which we're building. Always use IP protocol 9 for "igrp", and use IP protocol 88 for "eigrp". 9 is assigned to "any private Internet gateway protocol", and is mainly used for Cisco's IGRP. 88 is for Cisco's EIGRP, which is not compatible on-the-wire with IGRP. FreeBSD, DragonFly BSD and macOS define IPPROTO_IGRP as 88, rather than as 9, and their libpcaps use IP protocol 88 for "igrp". Everybody else uses IP protocol 9 for "igrp".
1 parent b33f396 commit c8d2dd0

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed

ipproto.h

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/*
2+
* Copyright (c) 1982, 1986, 1990, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. All advertising materials mentioning features or use of this software
14+
* must display the following acknowledgement:
15+
* This product includes software developed by the University of
16+
* California, Berkeley and its contributors.
17+
* 4. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)in.h 8.3 (Berkeley) 1/3/94
35+
* $FreeBSD: src/sys/netinet/in.h,v 1.38.2.3 1999/08/29 16:29:34 peter Exp $
36+
*/
37+
38+
#ifndef IPPROTO_IP
39+
#define IPPROTO_IP 0 /* dummy for IP */
40+
#endif
41+
#ifndef IPPROTO_HOPOPTS
42+
#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
43+
#endif
44+
#ifndef IPPROTO_ICMP
45+
#define IPPROTO_ICMP 1 /* control message protocol */
46+
#endif
47+
#ifndef IPPROTO_IGMP
48+
#define IPPROTO_IGMP 2 /* group mgmt protocol */
49+
#endif
50+
#ifndef IPPROTO_IPV4
51+
#define IPPROTO_IPV4 4
52+
#endif
53+
#ifndef IPPROTO_TCP
54+
#define IPPROTO_TCP 6 /* tcp */
55+
#endif
56+
#ifndef IPPROTO_EGP
57+
#define IPPROTO_EGP 8 /* exterior gateway protocol */
58+
#endif
59+
/*
60+
* XXX - the current IANA protocol number assignments page lists 9 as
61+
* "any private interior gateway (used by Cisco for their IGRP)" and
62+
* 88 as "EIGRP" from Cisco.
63+
*
64+
* Recent FreeBSD and DragonFly BSD <netinet/in.h> headers define
65+
* IP_PROTO_IGRP as 9 and IP_PROTO_IGRP as 88. We define IP_PROTO_PIGP
66+
* ("private interior gateway protocol") as 9 and IP_PROTO_EIGRP as 88;
67+
* those names* better match what the current protocol number
68+
* assignments say.
69+
*/
70+
#ifndef IPPROTO_PIGP
71+
#define IPPROTO_PIGP 9
72+
#endif
73+
#ifndef IPPROTO_UDP
74+
#define IPPROTO_UDP 17 /* user datagram protocol */
75+
#endif
76+
#ifndef IPPROTO_DCCP
77+
#define IPPROTO_DCCP 33 /* datagram congestion control protocol */
78+
#endif
79+
#ifndef IPPROTO_IPV6
80+
#define IPPROTO_IPV6 41
81+
#endif
82+
#ifndef IPPROTO_ROUTING
83+
#define IPPROTO_ROUTING 43 /* IPv6 routing header */
84+
#endif
85+
#ifndef IPPROTO_FRAGMENT
86+
#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
87+
#endif
88+
#ifndef IPPROTO_RSVP
89+
#define IPPROTO_RSVP 46 /* resource reservation */
90+
#endif
91+
#ifndef IPPROTO_GRE
92+
#define IPPROTO_GRE 47 /* General Routing Encap. */
93+
#endif
94+
#ifndef IPPROTO_ESP
95+
#define IPPROTO_ESP 50 /* SIPP Encap Sec. Payload */
96+
#endif
97+
#ifndef IPPROTO_AH
98+
#define IPPROTO_AH 51 /* SIPP Auth Header */
99+
#endif
100+
#ifndef IPPROTO_NHRP
101+
#define IPPROTO_NHRP 54 /* Next Hop Resolution */
102+
#endif
103+
#ifndef IPPROTO_MOBILE
104+
#define IPPROTO_MOBILE 55
105+
#endif
106+
#ifndef IPPROTO_ICMPV6
107+
#define IPPROTO_ICMPV6 58 /* ICMPv6 */
108+
#endif
109+
#ifndef IPPROTO_NONE
110+
#define IPPROTO_NONE 59 /* IPv6 no next header */
111+
#endif
112+
#ifndef IPPROTO_DSTOPTS
113+
#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
114+
#endif
115+
#ifndef IPPROTO_MOBILITY_OLD
116+
/*
117+
* The current Protocol Numbers list says that the IP protocol number for
118+
* mobility headers is 135; it cites RFC 6275 (obsoletes RFC 3775).
119+
*
120+
* It appears that 62 used to be used, even though that's assigned to
121+
* a protocol called CFTP; however, the only reference for CFTP is a
122+
* Network Message from BBN back in 1982, so, for now, we support 62,
123+
* as well as 135, as a protocol number for mobility headers.
124+
*/
125+
#define IPPROTO_MOBILITY_OLD 62
126+
#endif
127+
#ifndef IPPROTO_ND
128+
#define IPPROTO_ND 77 /* Sun net disk proto (temp.) */
129+
#endif
130+
#ifndef IPPROTO_EIGRP
131+
#define IPPROTO_EIGRP 88 /* Cisco/GXS IGRP */
132+
#endif
133+
#ifndef IPPROTO_OSPF
134+
#define IPPROTO_OSPF 89
135+
#endif
136+
#ifndef IPPROTO_PIM
137+
#define IPPROTO_PIM 103
138+
#endif
139+
#ifndef IPPROTO_IPCOMP
140+
#define IPPROTO_IPCOMP 108
141+
#endif
142+
#ifndef IPPROTO_VRRP
143+
#define IPPROTO_VRRP 112 /* See also CARP. */
144+
#endif
145+
#ifndef IPPROTO_CARP
146+
#define IPPROTO_CARP 112
147+
#endif
148+
#ifndef IPPROTO_PGM
149+
#define IPPROTO_PGM 113
150+
#endif
151+
#ifndef IPPROTO_SCTP
152+
#define IPPROTO_SCTP 132
153+
#endif
154+
#ifndef IPPROTO_MOBILITY
155+
#define IPPROTO_MOBILITY 135
156+
#endif
157+
#ifndef IPPROTO_ETHERNET
158+
#define IPPROTO_ETHERNET 143 /* TEMPORARY - registered 2020-01-31, expires 2021-01-31 */
159+
#endif

0 commit comments

Comments
 (0)