]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1656 in SNORT/snort3 from ~SBAIGAL/snort3:ignore_vlan to master
authorSteve Chew (stechew) <stechew@cisco.com>
Tue, 2 Jul 2019 16:13:20 +0000 (12:13 -0400)
committerSteve Chew (stechew) <stechew@cisco.com>
Tue, 2 Jul 2019 16:13:20 +0000 (12:13 -0400)
Squashed commit of the following:

commit 59ee334a4e7e69b19bd8a25e8462b2a2005a0534
Author: Steven Baigal (sbaigal) <sbaigal@cisco.com>
Date:   Tue Jun 25 14:04:58 2019 -0400

    codec: add support of ignore_vlan flag from daq header

    updated to skip vlan header process when ignore_vlan flag was set

src/codecs/link/cd_vlan.cc
src/protocols/layer.cc

index af5a226aad81ebc9e8b00f0fda1bd687e516283f..36af4aa30bfa239284e634964250c48bdd135cea 100644 (file)
@@ -90,12 +90,16 @@ bool VlanCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
     else
         codec.next_prot_id = (ProtocolId)proto;
 
+    codec.lyr_len = sizeof(vlan::VlanTagHdr);
+
+    if (raw.pkth->flags & DAQ_PKT_FLAG_IGNORE_VLAN)
+        return true;
+
     // Vlan IDs 0 and 4095 are reserved.
     const uint16_t vid = vh->vid();
     if (vid == 0 || vid == 4095)
         codec_event(codec, DECODE_BAD_VLAN);
 
-    codec.lyr_len = sizeof(vlan::VlanTagHdr);
     codec.proto_bits |= PROTO_BIT__VLAN;
     return true;
 }
index 5fdc06f6c4decd5ace883cde38148462c263dcd6..d21dbc34994b777b42dfa012a66ca701f57ab8e7 100644 (file)
@@ -144,13 +144,10 @@ const Layer* get_mpls_layer(const Packet* const p)
 
 const vlan::VlanTagHdr* get_vlan_layer(const Packet* const p)
 {
-    if ( p->proto_bits & PROTO_BIT__VLAN )
-    {
-        assert( p->vlan_idx < p->num_layers );
-        const Layer* lyr = p->layers + p->vlan_idx;
-        return reinterpret_cast<const vlan::VlanTagHdr*>(lyr->start);
-    }
-    return nullptr;
+    assert( p->proto_bits & PROTO_BIT__VLAN );
+    assert( p->vlan_idx < p->num_layers );
+    const Layer* lyr = p->layers + p->vlan_idx;
+    return reinterpret_cast<const vlan::VlanTagHdr*>(lyr->start);
 }
 
 const eth::EtherHdr* get_eth_layer(const Packet* const p)