add BPF_ filters for misc. IS-IS PDU Types
This commit is contained in:
parent
531a7bbb14
commit
bd4881668c
73
gencode.c
73
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.181 2002-12-04 21:40:13 hannes Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.182 2002-12-06 00:01:33 hannes Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -2694,10 +2694,8 @@ struct block *
|
||||||
gen_proto_abbrev(proto)
|
gen_proto_abbrev(proto)
|
||||||
int proto;
|
int proto;
|
||||||
{
|
{
|
||||||
#ifdef INET6
|
|
||||||
struct block *b0;
|
struct block *b0;
|
||||||
#endif
|
struct block *b1;
|
||||||
struct block *b1;
|
|
||||||
|
|
||||||
switch (proto) {
|
switch (proto) {
|
||||||
|
|
||||||
|
@ -2854,6 +2852,66 @@ gen_proto_abbrev(proto)
|
||||||
b1 = gen_proto(ISO10589_ISIS, Q_ISO, Q_DEFAULT);
|
b1 = gen_proto(ISO10589_ISIS, Q_ISO, Q_DEFAULT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_L1: /* all IS-IS Level1 PDU-Types */
|
||||||
|
b0 = gen_proto(ISIS_L1_LAN_IIH, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_PTP_IIH, Q_ISIS, Q_DEFAULT); /* FIXME extract the circuit-type bits */
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L1_LSP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L1_CSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L1_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_L2: /* all IS-IS Level2 PDU-Types */
|
||||||
|
b0 = gen_proto(ISIS_L2_LAN_IIH, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_PTP_IIH, Q_ISIS, Q_DEFAULT); /* FIXME extract the circuit-type bits */
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L2_LSP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L2_CSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L2_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_IIH: /* all IS-IS Hello PDU-Types */
|
||||||
|
b0 = gen_proto(ISIS_L1_LAN_IIH, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_L2_LAN_IIH, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_PTP_IIH, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_LSP:
|
||||||
|
b0 = gen_proto(ISIS_L1_LSP, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_L2_LSP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_SNP:
|
||||||
|
b0 = gen_proto(ISIS_L1_CSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_L2_CSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L1_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
b0 = gen_proto(ISIS_L2_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_CSNP:
|
||||||
|
b0 = gen_proto(ISIS_L1_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_L2_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Q_ISIS_PSNP:
|
||||||
|
b0 = gen_proto(ISIS_L1_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
b1 = gen_proto(ISIS_L2_PSNP, Q_ISIS, Q_DEFAULT);
|
||||||
|
gen_or(b0, b1);
|
||||||
|
break;
|
||||||
|
|
||||||
case Q_CLNP:
|
case Q_CLNP:
|
||||||
b1 = gen_proto(ISO8473_CLNP, Q_ISO, Q_DEFAULT);
|
b1 = gen_proto(ISO8473_CLNP, Q_ISO, Q_DEFAULT);
|
||||||
break;
|
break;
|
||||||
|
@ -3509,6 +3567,13 @@ gen_proto(v, proto, dir)
|
||||||
return b1;
|
return b1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Q_ISIS:
|
||||||
|
b0 = gen_proto(ISO10589_ISIS, Q_ISO, Q_DEFAULT);
|
||||||
|
/* 4 is the offset of the PDU type relative to the IS-IS header */
|
||||||
|
b1 = gen_cmp(off_nl_nosnap+4, BPF_B, (long)v);
|
||||||
|
gen_and(b0, b1);
|
||||||
|
return b1;
|
||||||
|
|
||||||
case Q_ARP:
|
case Q_ARP:
|
||||||
bpf_error("arp does not encapsulate another protocol");
|
bpf_error("arp does not encapsulate another protocol");
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
|
|
14
gencode.h
14
gencode.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/gencode.h,v 1.55 2002-07-11 09:06:34 guy Exp $ (LBL)
|
* @(#) $Header: /tcpdump/master/libpcap/gencode.h,v 1.56 2002-12-06 00:01:34 hannes Exp $ (LBL)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -107,6 +107,18 @@
|
||||||
|
|
||||||
#define Q_NETBEUI 30
|
#define Q_NETBEUI 30
|
||||||
|
|
||||||
|
/* IS-IS Levels */
|
||||||
|
#define Q_ISIS_L1 31
|
||||||
|
#define Q_ISIS_L2 32
|
||||||
|
/* PDU types */
|
||||||
|
#define Q_ISIS_IIH 33
|
||||||
|
#define Q_ISIS_LAN_IIH 34
|
||||||
|
#define Q_ISIS_PTP_IIH 35
|
||||||
|
#define Q_ISIS_SNP 36
|
||||||
|
#define Q_ISIS_CSNP 37
|
||||||
|
#define Q_ISIS_PSNP 38
|
||||||
|
#define Q_ISIS_LSP 39
|
||||||
|
|
||||||
/* Directional qualifiers. */
|
/* Directional qualifiers. */
|
||||||
|
|
||||||
#define Q_SRC 1
|
#define Q_SRC 1
|
||||||
|
|
11
grammar.y
11
grammar.y
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.77 2002-08-11 18:27:14 guy Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.78 2002-12-06 00:01:34 hannes Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -126,7 +126,7 @@ pcap_parse()
|
||||||
%token LEN
|
%token LEN
|
||||||
%token IPV6 ICMPV6 AH ESP
|
%token IPV6 ICMPV6 AH ESP
|
||||||
%token VLAN
|
%token VLAN
|
||||||
%token ISO ESIS ISIS CLNP
|
%token ISO ESIS CLNP ISIS L1 L2 IIH LSP SNP CSNP PSNP
|
||||||
%token STP
|
%token STP
|
||||||
%token IPX
|
%token IPX
|
||||||
%token NETBEUI
|
%token NETBEUI
|
||||||
|
@ -300,6 +300,13 @@ pname: LINK { $$ = Q_LINK; }
|
||||||
| ISO { $$ = Q_ISO; }
|
| ISO { $$ = Q_ISO; }
|
||||||
| ESIS { $$ = Q_ESIS; }
|
| ESIS { $$ = Q_ESIS; }
|
||||||
| ISIS { $$ = Q_ISIS; }
|
| ISIS { $$ = Q_ISIS; }
|
||||||
|
| L1 { $$ = Q_ISIS_L1; }
|
||||||
|
| L2 { $$ = Q_ISIS_L2; }
|
||||||
|
| IIH { $$ = Q_ISIS_IIH; }
|
||||||
|
| LSP { $$ = Q_ISIS_LSP; }
|
||||||
|
| SNP { $$ = Q_ISIS_SNP; }
|
||||||
|
| PSNP { $$ = Q_ISIS_PSNP; }
|
||||||
|
| CSNP { $$ = Q_ISIS_CSNP; }
|
||||||
| CLNP { $$ = Q_CLNP; }
|
| CLNP { $$ = Q_CLNP; }
|
||||||
| STP { $$ = Q_STP; }
|
| STP { $$ = Q_STP; }
|
||||||
| IPX { $$ = Q_IPX; }
|
| IPX { $$ = Q_IPX; }
|
||||||
|
|
17
nlpid.h
17
nlpid.h
|
@ -15,7 +15,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/nlpid.h,v 1.1 2000-10-28 09:30:22 guy Exp $ (Juniper)
|
* @(#) $Header: /tcpdump/master/libpcap/nlpid.h,v 1.2 2002-12-06 00:01:34 hannes Exp $ (Juniper)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Types missing from some systems */
|
/* Types missing from some systems */
|
||||||
|
@ -35,6 +35,21 @@
|
||||||
#ifndef ISO10589_ISIS
|
#ifndef ISO10589_ISIS
|
||||||
#define ISO10589_ISIS 0x83
|
#define ISO10589_ISIS 0x83
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
|
* this does not really belong in the nlpid.h file
|
||||||
|
* however we need it for generating nice
|
||||||
|
* IS-IS related BPF filters
|
||||||
|
*/
|
||||||
|
#define ISIS_L1_LAN_IIH 15
|
||||||
|
#define ISIS_L2_LAN_IIH 16
|
||||||
|
#define ISIS_PTP_IIH 17
|
||||||
|
#define ISIS_L1_LSP 18
|
||||||
|
#define ISIS_L2_LSP 20
|
||||||
|
#define ISIS_L1_CSNP 24
|
||||||
|
#define ISIS_L2_CSNP 25
|
||||||
|
#define ISIS_L1_PSNP 26
|
||||||
|
#define ISIS_L2_PSNP 27
|
||||||
|
|
||||||
#ifndef ISO8878A_CONS
|
#ifndef ISO8878A_CONS
|
||||||
#define ISO8878A_CONS 0x84
|
#define ISO8878A_CONS 0x84
|
||||||
#endif
|
#endif
|
||||||
|
|
10
scanner.l
10
scanner.l
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.90 2002-08-08 08:22:47 guy Exp $ (LBL)";
|
"@(#) $Header: /tcpdump/master/libpcap/scanner.l,v 1.91 2002-12-06 00:01:35 hannes Exp $ (LBL)";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -214,6 +214,14 @@ esis return ESIS;
|
||||||
es-is return ESIS;
|
es-is return ESIS;
|
||||||
isis return ISIS;
|
isis return ISIS;
|
||||||
is-is return ISIS;
|
is-is return ISIS;
|
||||||
|
l1 return L1;
|
||||||
|
l2 return L2;
|
||||||
|
iih return IIH;
|
||||||
|
lsp return LSP;
|
||||||
|
snp return SNP;
|
||||||
|
csnp return CSNP;
|
||||||
|
psnp return PSNP;
|
||||||
|
|
||||||
clnp return CLNP;
|
clnp return CLNP;
|
||||||
|
|
||||||
stp return STP;
|
stp return STP;
|
||||||
|
|
Reference in New Issue