]> The Tcpdump Group git mirrors - libpcap/commitdiff
When checking for VLAN tags, check for QinQ tags as well.
authorGuy Harris <[email protected]>
Sun, 20 Nov 2011 00:48:29 +0000 (16:48 -0800)
committerGuy Harris <[email protected]>
Sun, 20 Nov 2011 00:48:57 +0000 (16:48 -0800)
From robwills2 at SourceForge.

ethertype.h
gencode.c

index d22b92778e22ed192f352779487a5d453686e25a..2d6bbebddd5a6b73ffbe8d1794a7c9a1f1193e52 100644 (file)
 #ifndef        ETHERTYPE_LOOPBACK
 #define        ETHERTYPE_LOOPBACK      0x9000
 #endif
 #ifndef        ETHERTYPE_LOOPBACK
 #define        ETHERTYPE_LOOPBACK      0x9000
 #endif
+#ifndef ETHERTYPE_8021QINQ
+#define ETHERTYPE_8021QINQ     0x9100
+#endif
index 03274fbfcf42e909efad356be43e586bfcc908a7..b3d36a8c4e928beb99e0fce459e35e0cb4060561 100644 (file)
--- a/gencode.c
+++ b/gencode.c
@@ -8095,9 +8095,13 @@ gen_vlan(vlan_num)
        case DLT_EN10MB:
        case DLT_NETANALYZER:
        case DLT_NETANALYZER_TRANSPARENT:
        case DLT_EN10MB:
        case DLT_NETANALYZER:
        case DLT_NETANALYZER_TRANSPARENT:
-               /* check for VLAN */
+               /* check for VLAN, including QinQ */
                b0 = gen_cmp(OR_LINK, off_linktype, BPF_H,
                    (bpf_int32)ETHERTYPE_8021Q);
                b0 = gen_cmp(OR_LINK, off_linktype, BPF_H,
                    (bpf_int32)ETHERTYPE_8021Q);
+               b1 = gen_cmp(OR_LINK, off_linktype, BPF_H,
+                   (bpf_int32)ETHERTYPE_8021QINQ);
+               gen_or(b0,b1);
+               b0 = b1;
 
                /* If a specific VLAN is requested, check VLAN id */
                if (vlan_num >= 0) {
 
                /* If a specific VLAN is requested, check VLAN id */
                if (vlan_num >= 0) {