]> The Tcpdump Group git mirrors - libpcap/commitdiff
Recognize 802.1ad nested VLAN tag in vlan filter. 451/head
authorMichal Kubecek <[email protected]>
Wed, 19 Aug 2015 13:08:06 +0000 (15:08 +0200)
committerMichal Kubecek <[email protected]>
Wed, 19 Aug 2015 13:08:06 +0000 (15:08 +0200)
In addition to ETHERTYPE_8021Q (0x8100) and ETHERTYPE_8021QINQ (0x9100),
recognize also ETHERTYPE_8021AD (0x88a8) as a VLAN tag. This is defined
as S-Tag (Service tag) by 802.1ad.

ethertype.h
gencode.c

index 8bab881634d6588b50baf7177bb5b2b539fdefdb..51f63083f8b84abefddf49e640ec3d37b12c0fed 100644 (file)
 #ifndef ETHERTYPE_PPPOES
 #define ETHERTYPE_PPPOES       0x8864
 #endif
+#ifndef ETHERTYPE_8021AD
+#define ETHERTYPE_8021AD       0x88a8
+#endif
 #ifndef        ETHERTYPE_LOOPBACK
 #define        ETHERTYPE_LOOPBACK      0x9000
 #endif
index 33bcb48458f5478bff67722d06d5658cd8f43fdb..552c40a134bed9a42521fcc0905d328901359353 100644 (file)
--- a/gencode.c
+++ b/gencode.c
@@ -7915,6 +7915,9 @@ gen_vlan_no_bpf_extensions(int vlan_num)
 
         /* check for VLAN, including QinQ */
         b0 = gen_linktype(ETHERTYPE_8021Q);
+        b1 = gen_linktype(ETHERTYPE_8021AD);
+        gen_or(b0,b1);
+        b0 = b1;
         b1 = gen_linktype(ETHERTYPE_8021QINQ);
         gen_or(b0,b1);
         b0 = b1;