]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
decode/gre: decode arp packets 11086/head
authorGiuseppe Longo <giuseppe@glongo.it>
Mon, 18 Mar 2024 10:02:16 +0000 (11:02 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 16 May 2024 05:09:27 +0000 (07:09 +0200)
src/decode-gre.c
src/decode.c
src/decode.h

index 4fe0bcab5f85037b168ee131a4417d159eac5526..a383c815c2cf7f1b36472c28e0fcae0e9f8131f2 100644 (file)
@@ -274,6 +274,16 @@ int DecodeGRE(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const uint8_t *p
             break;
         }
 
+        case ETHERNET_TYPE_ARP: {
+            Packet *tp = PacketTunnelPktSetup(
+                    tv, dtv, p, pkt + header_len, len - header_len, DECODE_TUNNEL_ARP);
+            if (tp != NULL) {
+                PKT_SET_SRC(tp, PKT_SRC_DECODER_GRE);
+                PacketEnqueueNoLock(&tv->decode_pq, tp);
+            }
+            break;
+        }
+
         default:
             return TM_ECODE_OK;
     }
index 0f4c84eba59f377e4103cdf0157bec4b81616c23..ff99f9a77e4d2ad23e6b2540a44930f8c73576d3 100644 (file)
@@ -61,6 +61,7 @@
 #include "decode-geneve.h"
 #include "decode-erspan.h"
 #include "decode-teredo.h"
+#include "decode-arp.h"
 
 #include "defrag-hash.h"
 
@@ -177,6 +178,8 @@ static int DecodeTunnel(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const
             return DecodeERSPANTypeI(tv, dtv, p, pkt, len);
         case DECODE_TUNNEL_NSH:
             return DecodeNSH(tv, dtv, p, pkt, len);
+        case DECODE_TUNNEL_ARP:
+            return DecodeARP(tv, dtv, p, pkt, len);
         default:
             SCLogDebug("FIXME: DecodeTunnel: protocol %" PRIu32 " not supported.", proto);
             break;
index 168253750b90d70478571c55ae44e9fde9abd0eb..2f282e0621b083cdb21f6faddccf2e8f2a4dcc19 100644 (file)
@@ -1091,6 +1091,7 @@ enum DecodeTunnelProto {
     DECODE_TUNNEL_IPV6_TEREDO, /**< separate protocol for stricter error handling */
     DECODE_TUNNEL_PPP,
     DECODE_TUNNEL_NSH,
+    DECODE_TUNNEL_ARP,
     DECODE_TUNNEL_UNSET
 };