add BPF_ filters for misc. IS-IS PDU Types
This commit is contained in:
parent
531a7bbb14
commit
bd4881668c
71
gencode.c
71
gencode.c
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
#ifndef lint
|
||||
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
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -2694,9 +2694,7 @@ struct block *
|
|||
gen_proto_abbrev(proto)
|
||||
int proto;
|
||||
{
|
||||
#ifdef INET6
|
||||
struct block *b0;
|
||||
#endif
|
||||
struct block *b1;
|
||||
|
||||
switch (proto) {
|
||||
|
@ -2854,6 +2852,66 @@ gen_proto_abbrev(proto)
|
|||
b1 = gen_proto(ISO10589_ISIS, Q_ISO, Q_DEFAULT);
|
||||
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:
|
||||
b1 = gen_proto(ISO8473_CLNP, Q_ISO, Q_DEFAULT);
|
||||
break;
|
||||
|
@ -3509,6 +3567,13 @@ gen_proto(v, proto, dir)
|
|||
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:
|
||||
bpf_error("arp does not encapsulate another protocol");
|
||||
/* NOTREACHED */
|
||||
|
|
14
gencode.h
14
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.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
|
||||
|
||||
/* 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. */
|
||||
|
||||
#define Q_SRC 1
|
||||
|
|
11
grammar.y
11
grammar.y
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
#ifndef lint
|
||||
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
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -126,7 +126,7 @@ pcap_parse()
|
|||
%token LEN
|
||||
%token IPV6 ICMPV6 AH ESP
|
||||
%token VLAN
|
||||
%token ISO ESIS ISIS CLNP
|
||||
%token ISO ESIS CLNP ISIS L1 L2 IIH LSP SNP CSNP PSNP
|
||||
%token STP
|
||||
%token IPX
|
||||
%token NETBEUI
|
||||
|
@ -300,6 +300,13 @@ pname: LINK { $$ = Q_LINK; }
|
|||
| ISO { $$ = Q_ISO; }
|
||||
| ESIS { $$ = Q_ESIS; }
|
||||
| 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; }
|
||||
| STP { $$ = Q_STP; }
|
||||
| IPX { $$ = Q_IPX; }
|
||||
|
|
17
nlpid.h
17
nlpid.h
|
@ -15,7 +15,7 @@
|
|||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
||||
* 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 */
|
||||
|
@ -35,6 +35,21 @@
|
|||
#ifndef ISO10589_ISIS
|
||||
#define ISO10589_ISIS 0x83
|
||||
#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
|
||||
#define ISO8878A_CONS 0x84
|
||||
#endif
|
||||
|
|
10
scanner.l
10
scanner.l
|
@ -22,7 +22,7 @@
|
|||
|
||||
#ifndef lint
|
||||
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
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -214,6 +214,14 @@ esis return ESIS;
|
|||
es-is return ESIS;
|
||||
isis 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;
|
||||
|
||||
stp return STP;
|
||||
|
|
Reference in New Issue