From 19d701ddf07d855128ded0cf2b573ce468e3bdd6 Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Wed, 20 Jan 2016 01:10:01 +0000 Subject: Removing Suricata and Audit from source repo, and updated build.sh to avoid building suricata. Will re-address this in C release via tar balls. Change-Id: I3710076f8b7f3313cb3cb5260c4eb0a6834d4f6e Signed-off-by: Ashlee Young --- framework/src/suricata/src/decode-mpls.c | 325 ------------------------------- 1 file changed, 325 deletions(-) delete mode 100644 framework/src/suricata/src/decode-mpls.c (limited to 'framework/src/suricata/src/decode-mpls.c') diff --git a/framework/src/suricata/src/decode-mpls.c b/framework/src/suricata/src/decode-mpls.c deleted file mode 100644 index 1569ebfb..00000000 --- a/framework/src/suricata/src/decode-mpls.c +++ /dev/null @@ -1,325 +0,0 @@ -/* Copyright (C) 2014 Open Information Security Foundation - * - * You can copy, redistribute or modify this Program under the terms of - * the GNU General Public License version 2 as published by the Free - * Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * version 2 along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -/** - * \file - * - * \author Jason Ish - * - * MPLS decoder. - */ - -#include "suricata-common.h" -#include "decode.h" -#include "util-unittest.h" - -#define MPLS_HEADER_LEN 4 -#define MPLS_PW_LEN 4 -#define MPLS_MAX_RESERVED_LABEL 15 - -#define MPLS_LABEL_IPV4 0 -#define MPLS_LABEL_ROUTER_ALERT 1 -#define MPLS_LABEL_IPV6 2 -#define MPLS_LABEL_NULL 3 - -#define MPLS_LABEL(shim) ntohl(shim) >> 12 -#define MPLS_BOTTOM(shim) ((ntohl(shim) >> 8) & 0x1) - -/* Inner protocol guessing values. */ -#define MPLS_PROTO_ETHERNET_PW 0 -#define MPLS_PROTO_IPV4 4 -#define MPLS_PROTO_IPV6 6 - -int DecodeMPLS(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, - uint16_t len, PacketQueue *pq) -{ - uint32_t shim; - int label; - int event = 0; - - StatsIncr(tv, dtv->counter_mpls); - - do { - if (len < MPLS_HEADER_LEN) { - ENGINE_SET_INVALID_EVENT(p, MPLS_HEADER_TOO_SMALL); - return TM_ECODE_FAILED; - } - shim = *(uint32_t *)pkt; - pkt += MPLS_HEADER_LEN; - len -= MPLS_HEADER_LEN; - } while (MPLS_BOTTOM(shim) == 0); - - label = MPLS_LABEL(shim); - if (label == MPLS_LABEL_IPV4) { - return DecodeIPV4(tv, dtv, p, pkt, len, pq); - } - else if (label == MPLS_LABEL_ROUTER_ALERT) { - /* Not valid at the bottom of the stack. */ - event = MPLS_BAD_LABEL_ROUTER_ALERT; - } - else if (label == MPLS_LABEL_IPV6) { - return DecodeIPV6(tv, dtv, p, pkt, len, pq); - } - else if (label == MPLS_LABEL_NULL) { - /* Shouldn't appear on the wire. */ - event = MPLS_BAD_LABEL_IMPLICIT_NULL; - } - else if (label < MPLS_MAX_RESERVED_LABEL) { - event = MPLS_BAD_LABEL_RESERVED; - } - - if (event) { - goto end; - } - - /* Best guess at inner packet. */ - switch (pkt[0] >> 4) { - case MPLS_PROTO_IPV4: - DecodeIPV4(tv, dtv, p, pkt, len, pq); - break; - case MPLS_PROTO_IPV6: - DecodeIPV6(tv, dtv, p, pkt, len, pq); - break; - case MPLS_PROTO_ETHERNET_PW: - DecodeEthernet(tv, dtv, p, pkt + MPLS_PW_LEN, len - MPLS_PW_LEN, - pq); - break; - default: - ENGINE_SET_INVALID_EVENT(p, MPLS_UNKNOWN_PAYLOAD_TYPE); - return TM_ECODE_OK; - } - -end: - if (event) { - ENGINE_SET_EVENT(p, event); - } - return TM_ECODE_OK; -} - -#ifdef UNITTESTS - -static int DecodeMPLSTestHeaderTooSmall(void) -{ - int ret = 1; - - /* A packet that is too small to have a complete MPLS header. */ - uint8_t pkt[] = { - 0x00, 0x00, 0x11 - }; - - Packet *p = SCMalloc(SIZE_OF_PACKET); - if (unlikely(p == NULL)) { - return 0; - } - ThreadVars tv; - DecodeThreadVars dtv; - - memset(&dtv, 0, sizeof(DecodeThreadVars)); - memset(&tv, 0, sizeof(ThreadVars)); - memset(p, 0, SIZE_OF_PACKET); - - DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt), NULL); - - if (!ENGINE_ISSET_EVENT(p, MPLS_HEADER_TOO_SMALL)) { - ret = 0; - } - - SCFree(p); - return ret; -} - -static int DecodeMPLSTestBadLabelRouterAlert(void) -{ - int ret = 1; - uint8_t pkt[] = { - 0x00, 0x00, 0x11, 0xff, 0x45, 0x00, 0x00, 0x64, - 0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a, - 0x0a, 0x01, 0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, - 0x08, 0x00, 0x3a, 0x77, 0x0a, 0x39, 0x06, 0x2b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd - }; - - Packet *p = SCMalloc(SIZE_OF_PACKET); - if (unlikely(p == NULL)) { - return 0; - } - ThreadVars tv; - DecodeThreadVars dtv; - - memset(&dtv, 0, sizeof(DecodeThreadVars)); - memset(&tv, 0, sizeof(ThreadVars)); - memset(p, 0, SIZE_OF_PACKET); - - DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt), NULL); - - if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_ROUTER_ALERT)) { - ret = 0; - } - - SCFree(p); - return ret; -} - -static int DecodeMPLSTestBadLabelImplicitNull(void) -{ - int ret = 1; - uint8_t pkt[] = { - 0x00, 0x00, 0x31, 0xff, 0x45, 0x00, 0x00, 0x64, - 0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a, - 0x0a, 0x01, 0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, - 0x08, 0x00, 0x3a, 0x77, 0x0a, 0x39, 0x06, 0x2b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd - }; - - Packet *p = SCMalloc(SIZE_OF_PACKET); - if (unlikely(p == NULL)) { - return 0; - } - ThreadVars tv; - DecodeThreadVars dtv; - - memset(&dtv, 0, sizeof(DecodeThreadVars)); - memset(&tv, 0, sizeof(ThreadVars)); - memset(p, 0, SIZE_OF_PACKET); - - DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt), NULL); - - if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_IMPLICIT_NULL)) { - ret = 0; - } - - SCFree(p); - return ret; -} - -static int DecodeMPLSTestBadLabelReserved(void) -{ - int ret = 1; - uint8_t pkt[] = { - 0x00, 0x00, 0x51, 0xff, 0x45, 0x00, 0x00, 0x64, - 0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a, - 0x0a, 0x01, 0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, - 0x08, 0x00, 0x3a, 0x77, 0x0a, 0x39, 0x06, 0x2b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd - }; - - Packet *p = SCMalloc(SIZE_OF_PACKET); - if (unlikely(p == NULL)) { - return 0; - } - ThreadVars tv; - DecodeThreadVars dtv; - - memset(&dtv, 0, sizeof(DecodeThreadVars)); - memset(&tv, 0, sizeof(ThreadVars)); - memset(p, 0, SIZE_OF_PACKET); - - DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt), NULL); - - if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_RESERVED)) { - ret = 0; - } - - SCFree(p); - return ret; -} - -static int DecodeMPLSTestUnknownPayloadType(void) -{ - int ret = 1; - - /* Valid label: 21. - * Unknown payload type: 1. - */ - uint8_t pkt[] = { - 0x00, 0x01, 0x51, 0xff, 0x15, 0x00, 0x00, 0x64, - 0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a, - 0x0a, 0x01, 0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, - 0x08, 0x00, 0x3a, 0x77, 0x0a, 0x39, 0x06, 0x2b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, - 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd - }; - - Packet *p = SCMalloc(SIZE_OF_PACKET); - if (unlikely(p == NULL)) { - return 0; - } - ThreadVars tv; - DecodeThreadVars dtv; - - memset(&dtv, 0, sizeof(DecodeThreadVars)); - memset(&tv, 0, sizeof(ThreadVars)); - memset(p, 0, SIZE_OF_PACKET); - - DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt), NULL); - - if (!ENGINE_ISSET_EVENT(p, MPLS_UNKNOWN_PAYLOAD_TYPE)) { - ret = 0; - } - - SCFree(p); - return ret; -} - -#endif /* UNITTESTS */ - -void DecodeMPLSRegisterTests(void) -{ -#ifdef UNITTESTS - UtRegisterTest("DecodeMPLSTestHeaderTooSmall", - DecodeMPLSTestHeaderTooSmall, 1); - UtRegisterTest("DecodeMPLSTestBadLabelRouterAlert", - DecodeMPLSTestBadLabelRouterAlert, 1); - UtRegisterTest("DecodeMPLSTestBadLabelImplicitNull", - DecodeMPLSTestBadLabelImplicitNull, 1); - UtRegisterTest("DecodeMPLSTestBadLabelReserved", - DecodeMPLSTestBadLabelReserved, 1); - UtRegisterTest("DecodeMPLSTestUnknownPayloadType", - DecodeMPLSTestUnknownPayloadType, 1); -#endif /* UNITTESTS */ -} -- cgit 1.2.3-korg