diff --git a/src/decode-erspan.c b/src/decode-erspan.c index ff6390b523..f2fb0eb124 100644 --- a/src/decode-erspan.c +++ b/src/decode-erspan.c @@ -64,12 +64,13 @@ int DecodeERSPAN(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, return TM_ECODE_FAILED; } - if (vlan_id > 0) { + if (vlan_id > 0 && dtv->vlan_disabled == 0) { if (p->vlan_idx >= 2) { ENGINE_SET_EVENT(p,ERSPAN_TOO_MANY_VLAN_LAYERS); return TM_ECODE_FAILED; } - p->vlan_id[p->vlan_idx++] = vlan_id; + p->vlan_id[p->vlan_idx] = vlan_id; + p->vlan_idx++; } return DecodeEthernet(tv, dtv, p, pkt + sizeof(ErspanHdr), len - sizeof(ErspanHdr), pq);