]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
gre: support transparent ethernet bridge decoding 1908/head
authorVictor Julien <victor@inliniac.net>
Fri, 19 Feb 2016 23:33:58 +0000 (00:33 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 7 Mar 2016 12:53:53 +0000 (13:53 +0100)
src/decode-ethernet.h
src/decode-gre.c

index f8ede8803ffc68e18d16fea87f79d2abf7e50653..094d2548e785fbac60ccb78a697f15748507e7d0 100644 (file)
@@ -30,6 +30,7 @@
 #define ETHERNET_TYPE_PUP             0x0200 /* PUP protocol */
 #define ETHERNET_TYPE_IP              0x0800
 #define ETHERNET_TYPE_ARP             0x0806
+#define ETHERNET_TYPE_BRIDGE          0x6558 /* transparant ethernet bridge (GRE) */
 #define ETHERNET_TYPE_REVARP          0x8035
 #define ETHERNET_TYPE_EAPOL           0x888e
 #define ETHERNET_TYPE_IPV6            0x86dd
index 6ad9e39758d80b6305ca19aeb13f64de9b605ead..4c555ac010fd00f97cbf774913afa9df51b997e5 100644 (file)
@@ -262,6 +262,19 @@ int DecodeGRE(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, ui
             break;
         }
 
+        case ETHERNET_TYPE_BRIDGE:
+            {
+                if (pq != NULL) {
+                    Packet *tp = PacketTunnelPktSetup(tv, dtv, p, pkt + header_len,
+                            len - header_len, DECODE_TUNNEL_ETHERNET, pq);
+                    if (tp != NULL) {
+                        PKT_SET_SRC(tp, PKT_SRC_DECODER_GRE);
+                        PacketEnqueue(pq,tp);
+                    }
+                }
+                break;
+            }
+
         default:
             return TM_ECODE_OK;
     }