From: Victor Julien Date: Fri, 19 Feb 2016 23:33:58 +0000 (+0100) Subject: gre: support transparent ethernet bridge decoding X-Git-Tag: suricata-3.0.1RC1~72 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27b02402e70700c46ec6272b70ae6962fb42d867;p=thirdparty%2Fsuricata.git gre: support transparent ethernet bridge decoding --- diff --git a/src/decode-ethernet.h b/src/decode-ethernet.h index f8ede8803f..094d2548e7 100644 --- a/src/decode-ethernet.h +++ b/src/decode-ethernet.h @@ -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 diff --git a/src/decode-gre.c b/src/decode-gre.c index 6ad9e39758..4c555ac010 100644 --- a/src/decode-gre.c +++ b/src/decode-gre.c @@ -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; }