diff options
author | Guy Harris <guy@alum.mit.edu> | 2011-11-19 16:48:29 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2011-11-19 16:48:57 -0800 |
commit | 02fb2dcde5806aa694735885cca0d4765a6c7a53 (patch) | |
tree | ddbc66962516dc1a21cea1406fc43ce056ae9bd5 | |
parent | 8f0dc5d921943ff6bc055f54c053e6eb742d3bd8 (diff) | |
download | libpcap-02fb2dcde5806aa694735885cca0d4765a6c7a53.tar.gz |
When checking for VLAN tags, check for QinQ tags as well.
From robwills2 at SourceForge.
-rw-r--r-- | ethertype.h | 3 | ||||
-rw-r--r-- | gencode.c | 6 |
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 @@ -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) { |