vlan: support QinQ ethernet types

Add support for 802.1AD and 802.1QinQ in ethernet and vlan parsing.

Tickets: #814, #1103, #1104
pull/838/head
Victor Julien 12 years ago
parent 91f8c33b0a
commit 18edec8769

@ -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;

@ -36,8 +36,10 @@
#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];

@ -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;

Loading…
Cancel
Save