]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
vlan: support QinQ ethernet types 838/head
authorVictor Julien <victor@inliniac.net>
Mon, 10 Feb 2014 10:13:11 +0000 (11:13 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 10 Feb 2014 10:13:11 +0000 (11:13 +0100)
Add support for 802.1AD and 802.1QinQ in ethernet and vlan parsing.

Tickets: #814, #1103, #1104

src/decode-ethernet.c
src/decode-ethernet.h
src/decode-vlan.c

index d10227c3ca37308796160afde8ab20444bdac17c..6f34f947c9a35667870c345c0cd87b2e92d8ed6f 100644 (file)
@@ -76,6 +76,7 @@ int DecodeEthernet(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p,
                                  len - ETHERNET_HEADER_LEN, pq);
             break;
         case ETHERNET_TYPE_VLAN:
+        case ETHERNET_TYPE_8021QINQ:
             DecodeVLAN(tv, dtv, p, pkt + ETHERNET_HEADER_LEN,
                                  len - ETHERNET_HEADER_LEN, pq);
             break;
index c63b7fd3c9d16f0207db5f4e486b75bcc1b15105..829601f9ceacc29fd03cc3f1788619da0735b899 100644 (file)
 #define ETHERNET_TYPE_IPX             0x8137
 #define ETHERNET_TYPE_PPPOE_DISC      0x8863 /* discovery stage */
 #define ETHERNET_TYPE_PPPOE_SESS      0x8864 /* session stage */
+#define ETHERNET_TYPE_8021AD          0x88a8
 #define ETHERNET_TYPE_8021Q           0x8100
 #define ETHERNET_TYPE_LOOP            0x9000
+#define ETHERNET_TYPE_8021QINQ        0x9100
 
 typedef struct EthernetHdr_ {
     uint8_t eth_dst[6];
index 0756966612e063f5e409665a836f877a1cc7af9b..29dc908922c6517e4a75c6bcdcc1aa0c62053883 100644 (file)
@@ -105,6 +105,7 @@ int DecodeVLAN(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, u
                                  len - VLAN_HEADER_LEN, pq);
             break;
         case ETHERNET_TYPE_VLAN:
+        case ETHERNET_TYPE_8021AD:
             if (p->vlan_idx >= 2) {
                 ENGINE_SET_EVENT(p,VLAN_HEADER_TOO_MANY_LAYERS);
                 return TM_ECODE_OK;