SCTP support from Armando L. Caro Jr. <acaro@mail.eecis.udel.edu>
This commit is contained in:
parent
e1de1941ed
commit
283da6d726
1
CREDITS
1
CREDITS
|
@ -13,6 +13,7 @@ The current maintainers:
|
|||
Additional people who have contributed patches:
|
||||
|
||||
Arkadiusz Miskiewicz <misiek@pld.org.pl>
|
||||
Armando L. Caro Jr. <acaro@mail.eecis.udel.edu>
|
||||
Fulvio Risso <risso@polito.it>
|
||||
Charles M. Hannum <mycroft@netbsd.org>
|
||||
Chris G. Demetriou <cgd@netbsd.org>
|
||||
|
|
51
gencode.c
51
gencode.c
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
#ifndef lint
|
||||
static const char rcsid[] =
|
||||
"@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.151 2001-04-17 08:25:21 guy Exp $ (LBL)";
|
||||
"@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.152 2001-05-10 14:48:01 fenner Exp $ (LBL)";
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -64,6 +64,10 @@ struct rtentry;
|
|||
|
||||
#define ETHERMTU 1500
|
||||
|
||||
#ifndef IPPROTO_SCTP
|
||||
#define IPPROTO_SCTP 132
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OS_PROTO_H
|
||||
#include "os-proto.h"
|
||||
#endif
|
||||
|
@ -1734,6 +1738,9 @@ gen_host(addr, mask, proto, dir)
|
|||
case Q_TCP:
|
||||
bpf_error("'tcp' modifier applied to host");
|
||||
|
||||
case Q_SCTP:
|
||||
bpf_error("'sctp' modifier applied to host");
|
||||
|
||||
case Q_UDP:
|
||||
bpf_error("'udp' modifier applied to host");
|
||||
|
||||
|
@ -1836,6 +1843,9 @@ gen_host6(addr, mask, proto, dir)
|
|||
case Q_ARP:
|
||||
bpf_error("'arp' modifier applied to ip6 host");
|
||||
|
||||
case Q_SCTP:
|
||||
bpf_error("'sctp' modifier applied to host");
|
||||
|
||||
case Q_TCP:
|
||||
bpf_error("'tcp' modifier applied to host");
|
||||
|
||||
|
@ -1973,6 +1983,14 @@ gen_proto_abbrev(proto)
|
|||
|
||||
switch (proto) {
|
||||
|
||||
case Q_SCTP:
|
||||
b1 = gen_proto(IPPROTO_SCTP, Q_IP, Q_DEFAULT);
|
||||
#ifdef INET6
|
||||
b0 = gen_proto(IPPROTO_SCTP, Q_IPV6, Q_DEFAULT);
|
||||
gen_or(b0, b1);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case Q_TCP:
|
||||
b1 = gen_proto(IPPROTO_TCP, Q_IP, Q_DEFAULT);
|
||||
#ifdef INET6
|
||||
|
@ -2243,6 +2261,7 @@ gen_port(port, ip_proto, dir)
|
|||
switch (ip_proto) {
|
||||
case IPPROTO_UDP:
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_SCTP:
|
||||
b1 = gen_portop(port, ip_proto, dir);
|
||||
break;
|
||||
|
||||
|
@ -2250,6 +2269,8 @@ gen_port(port, ip_proto, dir)
|
|||
tmp = gen_portop(port, IPPROTO_TCP, dir);
|
||||
b1 = gen_portop(port, IPPROTO_UDP, dir);
|
||||
gen_or(tmp, b1);
|
||||
tmp = gen_portop(port, IPPROTO_SCTP, dir);
|
||||
gen_or(tmp, b1);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2313,6 +2334,7 @@ gen_port6(port, ip_proto, dir)
|
|||
switch (ip_proto) {
|
||||
case IPPROTO_UDP:
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_SCTP:
|
||||
b1 = gen_portop6(port, ip_proto, dir);
|
||||
break;
|
||||
|
||||
|
@ -2320,6 +2342,8 @@ gen_port6(port, ip_proto, dir)
|
|||
tmp = gen_portop6(port, IPPROTO_TCP, dir);
|
||||
b1 = gen_portop6(port, IPPROTO_UDP, dir);
|
||||
gen_or(tmp, b1);
|
||||
tmp = gen_portop6(port, IPPROTO_SCTP, dir);
|
||||
gen_or(tmp, b1);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2753,6 +2777,10 @@ gen_proto(v, proto, dir)
|
|||
bpf_error("'tcp proto' is bogus");
|
||||
/* NOTREACHED */
|
||||
|
||||
case Q_SCTP:
|
||||
bpf_error("'sctp proto' is bogus");
|
||||
/* NOTREACHED */
|
||||
|
||||
case Q_ICMP:
|
||||
bpf_error("'icmp proto' is bogus");
|
||||
/* NOTREACHED */
|
||||
|
@ -2950,13 +2978,16 @@ gen_scode(name, q)
|
|||
}
|
||||
|
||||
case Q_PORT:
|
||||
if (proto != Q_DEFAULT && proto != Q_UDP && proto != Q_TCP)
|
||||
if (proto != Q_DEFAULT &&
|
||||
proto != Q_UDP && proto != Q_TCP && proto != Q_SCTP)
|
||||
bpf_error("illegal qualifier of 'port'");
|
||||
if (pcap_nametoport(name, &port, &real_proto) == 0)
|
||||
bpf_error("unknown port '%s'", name);
|
||||
if (proto == Q_UDP) {
|
||||
if (real_proto == IPPROTO_TCP)
|
||||
bpf_error("port '%s' is tcp", name);
|
||||
else if (real_proto == IPPROTO_SCTP)
|
||||
bpf_error("port '%s' is sctp", name);
|
||||
else
|
||||
/* override PROTO_UNDEF */
|
||||
real_proto = IPPROTO_UDP;
|
||||
|
@ -2964,10 +2995,23 @@ gen_scode(name, q)
|
|||
if (proto == Q_TCP) {
|
||||
if (real_proto == IPPROTO_UDP)
|
||||
bpf_error("port '%s' is udp", name);
|
||||
|
||||
else if (real_proto == IPPROTO_SCTP)
|
||||
bpf_error("port '%s' is sctp", name);
|
||||
else
|
||||
/* override PROTO_UNDEF */
|
||||
real_proto = IPPROTO_TCP;
|
||||
}
|
||||
if (proto == Q_SCTP) {
|
||||
if (real_proto == IPPROTO_UDP)
|
||||
bpf_error("port '%s' is udp", name);
|
||||
|
||||
else if (real_proto == IPPROTO_TCP)
|
||||
bpf_error("port '%s' is tcp", name);
|
||||
else
|
||||
/* override PROTO_UNDEF */
|
||||
real_proto = IPPROTO_SCTP;
|
||||
}
|
||||
#ifndef INET6
|
||||
return gen_port(port, real_proto, dir);
|
||||
#else
|
||||
|
@ -3105,6 +3149,8 @@ gen_ncode(s, v, q)
|
|||
proto = IPPROTO_UDP;
|
||||
else if (proto == Q_TCP)
|
||||
proto = IPPROTO_TCP;
|
||||
else if (proto == Q_SCTP)
|
||||
proto = IPPROTO_SCTP;
|
||||
else if (proto == Q_DEFAULT)
|
||||
proto = PROTO_UNDEF;
|
||||
else
|
||||
|
@ -3317,6 +3363,7 @@ gen_load(proto, index, size)
|
|||
index->b = b;
|
||||
break;
|
||||
|
||||
case Q_SCTP:
|
||||
case Q_TCP:
|
||||
case Q_UDP:
|
||||
case Q_ICMP:
|
||||
|
|
53
gencode.h
53
gencode.h
|
@ -18,7 +18,7 @@
|
|||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.52 2001-04-17 08:25:22 guy Exp $ (LBL)
|
||||
* @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.53 2001-05-10 14:48:02 fenner Exp $ (LBL)
|
||||
*/
|
||||
|
||||
/* Address qualifiers. */
|
||||
|
@ -36,41 +36,42 @@
|
|||
#define Q_IP 2
|
||||
#define Q_ARP 3
|
||||
#define Q_RARP 4
|
||||
#define Q_TCP 5
|
||||
#define Q_UDP 6
|
||||
#define Q_ICMP 7
|
||||
#define Q_IGMP 8
|
||||
#define Q_IGRP 9
|
||||
#define Q_SCTP 5
|
||||
#define Q_TCP 6
|
||||
#define Q_UDP 7
|
||||
#define Q_ICMP 8
|
||||
#define Q_IGMP 9
|
||||
#define Q_IGRP 10
|
||||
|
||||
|
||||
#define Q_ATALK 10
|
||||
#define Q_DECNET 11
|
||||
#define Q_LAT 12
|
||||
#define Q_SCA 13
|
||||
#define Q_MOPRC 14
|
||||
#define Q_MOPDL 15
|
||||
#define Q_ATALK 11
|
||||
#define Q_DECNET 12
|
||||
#define Q_LAT 13
|
||||
#define Q_SCA 14
|
||||
#define Q_MOPRC 15
|
||||
#define Q_MOPDL 16
|
||||
|
||||
|
||||
#define Q_IPV6 16
|
||||
#define Q_ICMPV6 17
|
||||
#define Q_AH 18
|
||||
#define Q_ESP 19
|
||||
#define Q_IPV6 17
|
||||
#define Q_ICMPV6 18
|
||||
#define Q_AH 19
|
||||
#define Q_ESP 20
|
||||
|
||||
#define Q_PIM 20
|
||||
#define Q_VRRP 21
|
||||
#define Q_PIM 21
|
||||
#define Q_VRRP 22
|
||||
|
||||
#define Q_AARP 22
|
||||
#define Q_AARP 23
|
||||
|
||||
#define Q_ISO 23
|
||||
#define Q_ESIS 24
|
||||
#define Q_ISIS 25
|
||||
#define Q_CLNP 26
|
||||
#define Q_ISO 24
|
||||
#define Q_ESIS 25
|
||||
#define Q_ISIS 26
|
||||
#define Q_CLNP 27
|
||||
|
||||
#define Q_STP 27
|
||||
#define Q_STP 28
|
||||
|
||||
#define Q_IPX 28
|
||||
#define Q_IPX 29
|
||||
|
||||
#define Q_NETBEUI 29
|
||||
#define Q_NETBEUI 30
|
||||
|
||||
/* Directional qualifiers. */
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
#ifndef lint
|
||||
static const char rcsid[] =
|
||||
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.69 2001-04-17 08:25:23 guy Exp $ (LBL)";
|
||||
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.70 2001-05-10 14:48:03 fenner Exp $ (LBL)";
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -106,7 +106,7 @@ pcap_parse()
|
|||
|
||||
%token DST SRC HOST GATEWAY
|
||||
%token NET MASK PORT LESS GREATER PROTO PROTOCHAIN BYTE
|
||||
%token ARP RARP IP TCP UDP ICMP IGMP IGRP PIM VRRP
|
||||
%token ARP RARP IP SCTP TCP UDP ICMP IGMP IGRP PIM VRRP
|
||||
%token ATALK AARP DECNET LAT SCA MOPRC MOPDL
|
||||
%token TK_BROADCAST TK_MULTICAST
|
||||
%token NUM INBOUND OUTBOUND
|
||||
|
@ -247,6 +247,7 @@ pname: LINK { $$ = Q_LINK; }
|
|||
| IP { $$ = Q_IP; }
|
||||
| ARP { $$ = Q_ARP; }
|
||||
| RARP { $$ = Q_RARP; }
|
||||
| SCTP { $$ = Q_SCTP; }
|
||||
| TCP { $$ = Q_TCP; }
|
||||
| UDP { $$ = Q_UDP; }
|
||||
| ICMP { $$ = Q_ICMP; }
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#ifndef lint
|
||||
static const char rcsid[] =
|
||||
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.76 2001-04-17 08:25:23 guy Exp $ (LBL)";
|
||||
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.77 2001-05-10 14:48:03 fenner Exp $ (LBL)";
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -170,6 +170,7 @@ fddi|tr return LINK;
|
|||
arp return ARP;
|
||||
rarp return RARP;
|
||||
ip return IP;
|
||||
sctp return SCTP;
|
||||
tcp return TCP;
|
||||
udp return UDP;
|
||||
icmp return ICMP;
|
||||
|
|
Reference in New Issue