summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2011-11-19 16:48:29 -0800
committerGuy Harris <guy@alum.mit.edu>2011-11-19 16:48:57 -0800
commit02fb2dcde5806aa694735885cca0d4765a6c7a53 (patch)
treeddbc66962516dc1a21cea1406fc43ce056ae9bd5
parent8f0dc5d921943ff6bc055f54c053e6eb742d3bd8 (diff)
downloadlibpcap-02fb2dcde5806aa694735885cca0d4765a6c7a53.tar.gz
When checking for VLAN tags, check for QinQ tags as well.
From robwills2 at SourceForge.
-rw-r--r--ethertype.h3
-rw-r--r--gencode.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/ethertype.h b/ethertype.h
index d22b9277..2d6bbebd 100644
--- a/ethertype.h
+++ b/ethertype.h
@@ -117,3 +117,6 @@
#ifndef ETHERTYPE_LOOPBACK
#define ETHERTYPE_LOOPBACK 0x9000
#endif
+#ifndef ETHERTYPE_8021QINQ
+#define ETHERTYPE_8021QINQ 0x9100
+#endif
diff --git a/gencode.c b/gencode.c
index 03274fbf..b3d36a8c 100644
--- a/gencode.c
+++ b/gencode.c
@@ -8095,9 +8095,13 @@ gen_vlan(vlan_num)
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);
+ 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) {