Add a "netbeui" keyword, which selects NetBEUI packets (LLC packets with
0xf0 as the DSAP and SSAP). Let "ipx" work on non-Ethernet 802.2 frames - we assume they're always frames with the IPX DSAP.
This commit is contained in:
parent
e191909508
commit
b0dcde29f7
54
gencode.c
54
gencode.c
|
@ -21,7 +21,7 @@
|
||||||
*/
|
*/
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.146 2001-01-15 00:03:40 guy Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.147 2001-01-28 09:44:48 guy Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -721,6 +721,20 @@ gen_linktype(proto)
|
||||||
gen_and(b0, b1);
|
gen_and(b0, b1);
|
||||||
return b1;
|
return b1;
|
||||||
|
|
||||||
|
case LLCSAP_NETBEUI:
|
||||||
|
/*
|
||||||
|
* NetBEUI always uses 802.2 encapsulation.
|
||||||
|
* XXX - should we check both the DSAP and the
|
||||||
|
* SSAP, like this, or should we check just the
|
||||||
|
* DSAP?
|
||||||
|
*/
|
||||||
|
b0 = gen_cmp_gt(off_linktype, BPF_H, ETHERMTU);
|
||||||
|
gen_not(b0);
|
||||||
|
b1 = gen_cmp(off_linktype + 2, BPF_H, (bpf_int32)
|
||||||
|
((LLCSAP_NETBEUI << 8) | LLCSAP_NETBEUI));
|
||||||
|
gen_and(b0, b1);
|
||||||
|
return b1;
|
||||||
|
|
||||||
case LLCSAP_IPX:
|
case LLCSAP_IPX:
|
||||||
/*
|
/*
|
||||||
* Check for;
|
* Check for;
|
||||||
|
@ -879,6 +893,18 @@ gen_linktype(proto)
|
||||||
return gen_cmp(off_linktype, BPF_H, (long)
|
return gen_cmp(off_linktype, BPF_H, (long)
|
||||||
((LLCSAP_ISONS << 8) | LLCSAP_ISONS));
|
((LLCSAP_ISONS << 8) | LLCSAP_ISONS));
|
||||||
|
|
||||||
|
case LLCSAP_NETBEUI:
|
||||||
|
return gen_cmp(off_linktype, BPF_H, (long)
|
||||||
|
((LLCSAP_NETBEUI << 8) | LLCSAP_NETBEUI));
|
||||||
|
|
||||||
|
case LLCSAP_IPX:
|
||||||
|
/*
|
||||||
|
* XXX - are there ever SNAP frames for IPX on
|
||||||
|
* non-Ethernet 802.x networks?
|
||||||
|
*/
|
||||||
|
return gen_cmp(off_linktype, BPF_B,
|
||||||
|
(bpf_int32)LLCSAP_IPX);
|
||||||
|
|
||||||
case ETHERTYPE_ATALK:
|
case ETHERTYPE_ATALK:
|
||||||
/*
|
/*
|
||||||
* 802.2-encapsulated ETHERTYPE_ATALK packets are
|
* 802.2-encapsulated ETHERTYPE_ATALK packets are
|
||||||
|
@ -950,6 +976,19 @@ gen_linktype(proto)
|
||||||
gen_and(b0, b1);
|
gen_and(b0, b1);
|
||||||
return b1;
|
return b1;
|
||||||
|
|
||||||
|
case LLCSAP_NETBEUI:
|
||||||
|
/*
|
||||||
|
* NetBEUI always uses 802.2 encapsulation.
|
||||||
|
* XXX - should we check both the DSAP and the
|
||||||
|
* LSAP, like this, or should we check just the
|
||||||
|
* DSAP?
|
||||||
|
*/
|
||||||
|
b0 = gen_cmp(off_linktype, BPF_H, LINUX_SLL_P_802_2);
|
||||||
|
b1 = gen_cmp(off_linktype + 2, BPF_H, (bpf_int32)
|
||||||
|
((LLCSAP_NETBEUI << 8) | LLCSAP_NETBEUI));
|
||||||
|
gen_and(b0, b1);
|
||||||
|
return b1;
|
||||||
|
|
||||||
case LLCSAP_IPX:
|
case LLCSAP_IPX:
|
||||||
/*
|
/*
|
||||||
* Ethernet_II frames, which are Ethernet
|
* Ethernet_II frames, which are Ethernet
|
||||||
|
@ -1712,6 +1751,9 @@ gen_host(addr, mask, proto, dir)
|
||||||
case Q_IPX:
|
case Q_IPX:
|
||||||
bpf_error("IPX host filtering not implemented");
|
bpf_error("IPX host filtering not implemented");
|
||||||
|
|
||||||
|
case Q_NETBEUI:
|
||||||
|
bpf_error("'netbeui' modifier applied to host");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -1810,6 +1852,9 @@ gen_host6(addr, mask, proto, dir)
|
||||||
case Q_IPX:
|
case Q_IPX:
|
||||||
bpf_error("IPX host filtering not implemented");
|
bpf_error("IPX host filtering not implemented");
|
||||||
|
|
||||||
|
case Q_NETBEUI:
|
||||||
|
bpf_error("'netbeui' modifier applied to host");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -2020,6 +2065,10 @@ gen_proto_abbrev(proto)
|
||||||
b1 = gen_linktype(LLCSAP_IPX);
|
b1 = gen_linktype(LLCSAP_IPX);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Q_NETBEUI:
|
||||||
|
b1 = gen_linktype(LLCSAP_NETBEUI);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -2682,6 +2731,9 @@ gen_proto(v, proto, dir)
|
||||||
case Q_IPX:
|
case Q_IPX:
|
||||||
bpf_error("'ipx proto' is bogus");
|
bpf_error("'ipx proto' is bogus");
|
||||||
|
|
||||||
|
case Q_NETBEUI:
|
||||||
|
bpf_error("'netbeui proto' is bogus");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.49 2001-01-14 07:57:48 guy Exp $ (LBL)
|
* @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.50 2001-01-28 09:44:49 guy Exp $ (LBL)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Address qualifiers. */
|
/* Address qualifiers. */
|
||||||
|
@ -69,6 +69,8 @@
|
||||||
|
|
||||||
#define Q_IPX 27
|
#define Q_IPX 27
|
||||||
|
|
||||||
|
#define Q_NETBEUI 28
|
||||||
|
|
||||||
/* Directional qualifiers. */
|
/* Directional qualifiers. */
|
||||||
|
|
||||||
#define Q_SRC 1
|
#define Q_SRC 1
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.66 2001-01-14 07:57:48 guy Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.67 2001-01-28 09:44:50 guy Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -120,6 +120,7 @@ pcap_parse()
|
||||||
%token ISO ESIS ISIS CLNP
|
%token ISO ESIS ISIS CLNP
|
||||||
%token STP
|
%token STP
|
||||||
%token IPX
|
%token IPX
|
||||||
|
%token NETBEUI
|
||||||
|
|
||||||
%type <s> ID
|
%type <s> ID
|
||||||
%type <e> EID
|
%type <e> EID
|
||||||
|
@ -267,6 +268,7 @@ pname: LINK { $$ = Q_LINK; }
|
||||||
| CLNP { $$ = Q_CLNP; }
|
| CLNP { $$ = Q_CLNP; }
|
||||||
| STP { $$ = Q_STP; }
|
| STP { $$ = Q_STP; }
|
||||||
| IPX { $$ = Q_IPX; }
|
| IPX { $$ = Q_IPX; }
|
||||||
|
| NETBEUI { $$ = Q_NETBEUI; }
|
||||||
;
|
;
|
||||||
other: pqual TK_BROADCAST { $$ = gen_broadcast($1); }
|
other: pqual TK_BROADCAST { $$ = gen_broadcast($1); }
|
||||||
| pqual TK_MULTICAST { $$ = gen_multicast($1); }
|
| pqual TK_MULTICAST { $$ = gen_multicast($1); }
|
||||||
|
|
11
llc.h
11
llc.h
|
@ -18,7 +18,7 @@
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* @(#) $Header: /tcpdump/master/libpcap/llc.h,v 1.1 2001-01-14 21:26:53 guy Exp $ (LBL)
|
* @(#) $Header: /tcpdump/master/libpcap/llc.h,v 1.2 2001-01-28 09:44:50 guy Exp $ (LBL)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -58,9 +58,12 @@
|
||||||
#ifndef LLCSAP_SNAP
|
#ifndef LLCSAP_SNAP
|
||||||
#define LLCSAP_SNAP 0xaa
|
#define LLCSAP_SNAP 0xaa
|
||||||
#endif
|
#endif
|
||||||
#ifndef LLCSAP_ISONS
|
|
||||||
#define LLCSAP_ISONS 0xfe
|
|
||||||
#endif
|
|
||||||
#ifndef LLCSAP_IPX
|
#ifndef LLCSAP_IPX
|
||||||
#define LLCSAP_IPX 0xe0
|
#define LLCSAP_IPX 0xe0
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef LLCSAP_NETBEUI
|
||||||
|
#define LLCSAP_NETBEUI 0xf0
|
||||||
|
#endif
|
||||||
|
#ifndef LLCSAP_ISONS
|
||||||
|
#define LLCSAP_ISONS 0xfe
|
||||||
|
#endif
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.72 2001-01-14 07:57:49 guy Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.73 2001-01-28 09:44:50 guy Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -201,6 +201,8 @@ stp return STP;
|
||||||
|
|
||||||
ipx return IPX;
|
ipx return IPX;
|
||||||
|
|
||||||
|
netbeui return NETBEUI;
|
||||||
|
|
||||||
host return HOST;
|
host return HOST;
|
||||||
net return NET;
|
net return NET;
|
||||||
mask return MASK;
|
mask return MASK;
|
||||||
|
|
Reference in New Issue