return TM_ECODE_FAILED;
}
- p->vlanh[p->vlan_idx] = (VLANHdr *)pkt;
- if(p->vlanh[p->vlan_idx] == NULL)
+ VLANHdr *vlan_hdr = (VLANHdr *)pkt;
+ if(vlan_hdr == NULL)
return TM_ECODE_FAILED;
- proto = GET_VLAN_PROTO(p->vlanh[p->vlan_idx]);
+ proto = GET_VLAN_PROTO(vlan_hdr);
SCLogDebug("p %p pkt %p VLAN protocol %04x VLAN PRI %d VLAN CFI %d VLAN ID %d Len: %" PRIu32 "",
- p, pkt, proto, GET_VLAN_PRIORITY(p->vlanh[p->vlan_idx]),
- GET_VLAN_CFI(p->vlanh[p->vlan_idx]), GET_VLAN_ID(p->vlanh[p->vlan_idx]), len);
+ p, pkt, proto, GET_VLAN_PRIORITY(vlan_hdr), GET_VLAN_CFI(vlan_hdr),
+ GET_VLAN_ID(vlan_hdr), len);
- /* only store the id for flow hashing if it's not disabled. */
- if (dtv->vlan_disabled == 0)
- p->vlan_id[p->vlan_idx] = (uint16_t)GET_VLAN_ID(p->vlanh[p->vlan_idx]);
-
- p->vlan_idx++;
+ p->vlan_id[p->vlan_idx++] = (uint16_t)GET_VLAN_ID(vlan_hdr);
switch (proto) {
case ETHERNET_TYPE_IP:
{
if (unlikely(layer > 1))
return 0;
-
- if (p->vlanh[layer] == NULL && (p->vlan_idx >= (layer + 1))) {
+ if (p->vlan_idx > layer) {
return p->vlan_id[layer];
- } else {
- return GET_VLAN_ID(p->vlanh[layer]);
}
return 0;
}
DecodeVLAN(&tv, &dtv, p, raw_vlan, sizeof(raw_vlan), NULL);
- if(p->vlanh[0] == NULL) {
+ if(p->vlan_id[0] == 0) {
goto error;
}
(h.h2->tp_status & TP_STATUS_VLAN_VALID || h.h2->tp_vlan_tci)) {
p->vlan_id[0] = h.h2->tp_vlan_tci & 0x0fff;
p->vlan_idx = 1;
- p->vlanh[0] = NULL;
}
if (ptv->flags & AFP_ZERO_COPY) {
(ppd->tp_status & TP_STATUS_VLAN_VALID || ppd->hv1.tp_vlan_tci)) {
p->vlan_id[0] = ppd->hv1.tp_vlan_tci & 0x0fff;
p->vlan_idx = 1;
- p->vlanh[0] = NULL;
}
if (ptv->flags & AFP_ZERO_COPY) {
DecodeVLAN(&tv, &dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p), NULL);
- FAIL_IF(p->vlanh[0] == NULL);
+ FAIL_IF(p->vlan_id[0] == 0);
FAIL_IF(p->tcph == NULL);