Permalink
Browse files

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.
  • Loading branch information...
1 parent e191909 commit b0dcde29f7933ee716aaa0bed9d6c553fc265222 @yuguy yuguy committed Jan 28, 2001
Showing with 69 additions and 8 deletions.
  1. +53 −1 gencode.c
  2. +3 −1 gencode.h
  3. +3 −1 grammar.y
  4. +7 −4 llc.h
  5. +3 −1 scanner.l
View
@@ -21,7 +21,7 @@
*/
#ifndef lint
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
#ifdef HAVE_CONFIG_H
@@ -721,6 +721,20 @@ gen_linktype(proto)
gen_and(b0, 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:
/*
* Check for;
@@ -879,6 +893,18 @@ gen_linktype(proto)
return gen_cmp(off_linktype, BPF_H, (long)
((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:
/*
* 802.2-encapsulated ETHERTYPE_ATALK packets are
@@ -950,6 +976,19 @@ gen_linktype(proto)
gen_and(b0, 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:
/*
* Ethernet_II frames, which are Ethernet
@@ -1712,6 +1751,9 @@ gen_host(addr, mask, proto, dir)
case Q_IPX:
bpf_error("IPX host filtering not implemented");
+ case Q_NETBEUI:
+ bpf_error("'netbeui' modifier applied to host");
+
default:
abort();
}
@@ -1810,6 +1852,9 @@ gen_host6(addr, mask, proto, dir)
case Q_IPX:
bpf_error("IPX host filtering not implemented");
+ case Q_NETBEUI:
+ bpf_error("'netbeui' modifier applied to host");
+
default:
abort();
}
@@ -2020,6 +2065,10 @@ gen_proto_abbrev(proto)
b1 = gen_linktype(LLCSAP_IPX);
break;
+ case Q_NETBEUI:
+ b1 = gen_linktype(LLCSAP_NETBEUI);
+ break;
+
default:
abort();
}
@@ -2682,6 +2731,9 @@ gen_proto(v, proto, dir)
case Q_IPX:
bpf_error("'ipx proto' is bogus");
+ case Q_NETBEUI:
+ bpf_error("'netbeui proto' is bogus");
+
default:
abort();
/* NOTREACHED */
View
@@ -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.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. */
@@ -69,6 +69,8 @@
#define Q_IPX 27
+#define Q_NETBEUI 28
+
/* Directional qualifiers. */
#define Q_SRC 1
View
@@ -22,7 +22,7 @@
*/
#ifndef lint
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
#ifdef HAVE_CONFIG_H
@@ -120,6 +120,7 @@ pcap_parse()
%token ISO ESIS ISIS CLNP
%token STP
%token IPX
+%token NETBEUI
%type <s> ID
%type <e> EID
@@ -267,6 +268,7 @@ pname: LINK { $$ = Q_LINK; }
| CLNP { $$ = Q_CLNP; }
| STP { $$ = Q_STP; }
| IPX { $$ = Q_IPX; }
+ | NETBEUI { $$ = Q_NETBEUI; }
;
other: pqual TK_BROADCAST { $$ = gen_broadcast($1); }
| pqual TK_MULTICAST { $$ = gen_multicast($1); }
View
11 llc.h
@@ -18,7 +18,7 @@
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* 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
#define LLCSAP_SNAP 0xaa
#endif
-#ifndef LLCSAP_ISONS
-#define LLCSAP_ISONS 0xfe
-#endif
#ifndef LLCSAP_IPX
#define LLCSAP_IPX 0xe0
#endif
+#ifndef LLCSAP_NETBEUI
+#define LLCSAP_NETBEUI 0xf0
+#endif
+#ifndef LLCSAP_ISONS
+#define LLCSAP_ISONS 0xfe
+#endif
View
@@ -22,7 +22,7 @@
#ifndef lint
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
#ifdef HAVE_CONFIG_H
@@ -201,6 +201,8 @@ stp return STP;
ipx return IPX;
+netbeui return NETBEUI;
+
host return HOST;
net return NET;
mask return MASK;

0 comments on commit b0dcde2

Please sign in to comment.