From: Alexander Gozman Date: Mon, 20 Feb 2017 13:43:10 +0000 (+0300) Subject: af-packet: get VLAN info for packets in TPACKET_V3 mode X-Git-Tag: suricata-4.0.0-beta1~285 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e41a9d637bf0b420d548c2bec0fb26c79c1f5ccf;p=thirdparty%2Fsuricata.git af-packet: get VLAN info for packets in TPACKET_V3 mode --- diff --git a/src/source-af-packet.c b/src/source-af-packet.c index 035da32065..7e981ba242 100644 --- a/src/source-af-packet.c +++ b/src/source-af-packet.c @@ -980,6 +980,13 @@ static inline int AFPParsePacketV3(AFPThreadVars *ptv, struct tpacket_block_desc p->livedev = ptv->livedev; p->datalink = ptv->datalink; + if ((!(ptv->flags & AFP_VLAN_DISABLED)) && + (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) { if (PacketSetData(p, (unsigned char*)ppd + ppd->tp_mac, ppd->tp_snaplen) == -1) { TmqhOutputPacketpool(ptv->tv, p);