mirror of https://github.com/OISF/suricata
pcap: implement LINKTYPE_NULL
Implement LINKTYPE_NULL for pcap live and pcap file. From: http://www.tcpdump.org/linktypes.html "BSD loopback encapsulation; the link layer header is a 4-byte field, in host byte order, containing a PF_ value from socket.h for the network-layer protocol of the packet. Note that ``host byte order'' is the byte order of the machine on which the packets are captured, and the PF_ values are for the OS of the machine on which the packets are captured; if a live capture is being done, ``host byte order'' is the byte order of the machine capturing the packets, and the PF_ values are those of the OS of the machine capturing the packets, but if a ``savefile'' is being read, the byte order and PF_ values are not necessarily those of the machine reading the capture file." Feature ticket #1445pull/1454/head
parent
97a2d1ac26
commit
04ccfda639
@ -0,0 +1,89 @@
|
||||
/* Copyright (C) 2015 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \ingroup decode
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* \author Victor Julien <victor@inliniac.net>
|
||||
*
|
||||
* Decode linkype null:
|
||||
* http://www.tcpdump.org/linktypes.html
|
||||
*/
|
||||
|
||||
#include "suricata-common.h"
|
||||
#include "decode.h"
|
||||
#include "decode-raw.h"
|
||||
#include "decode-events.h"
|
||||
|
||||
#include "util-unittest.h"
|
||||
#include "util-debug.h"
|
||||
|
||||
#include "pkt-var.h"
|
||||
#include "util-profiling.h"
|
||||
#include "host.h"
|
||||
|
||||
#define HDR_SIZE 4
|
||||
|
||||
int DecodeNull(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, uint16_t len, PacketQueue *pq)
|
||||
{
|
||||
SCPerfCounterIncr(dtv->counter_null, tv->sc_perf_pca);
|
||||
|
||||
if (unlikely(len < HDR_SIZE)) {
|
||||
ENGINE_SET_INVALID_EVENT(p, LTNULL_PKT_TOO_SMALL);
|
||||
return TM_ECODE_FAILED;
|
||||
}
|
||||
|
||||
uint32_t type = *((uint32_t *)pkt);
|
||||
switch(type) {
|
||||
case AF_INET:
|
||||
SCLogDebug("IPV4 Packet");
|
||||
DecodeIPV4(tv, dtv, p, GET_PKT_DATA(p)+HDR_SIZE, GET_PKT_LEN(p)-HDR_SIZE, pq);
|
||||
break;
|
||||
case AF_INET6:
|
||||
SCLogDebug("IPV6 Packet");
|
||||
DecodeIPV6(tv, dtv, p, GET_PKT_DATA(p)+HDR_SIZE, GET_PKT_LEN(p)-HDR_SIZE, pq);
|
||||
break;
|
||||
default:
|
||||
SCLogDebug("Unknown Null packet type version %" PRIu32 "", type);
|
||||
ENGINE_SET_EVENT(p, LTNULL_UNSUPPORTED_TYPE);
|
||||
break;
|
||||
}
|
||||
return TM_ECODE_OK;
|
||||
}
|
||||
|
||||
#ifdef UNITTESTS
|
||||
|
||||
#endif /* UNITTESTS */
|
||||
|
||||
/**
|
||||
* \brief Registers Null unit tests
|
||||
*/
|
||||
void DecodeNullRegisterTests(void)
|
||||
{
|
||||
#ifdef UNITTESTS
|
||||
#endif /* UNITTESTS */
|
||||
}
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
@ -0,0 +1,27 @@
|
||||
/* Copyright (C) 2007-2010 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 Victor Julien <victor@inliniac.net>
|
||||
*/
|
||||
|
||||
#ifndef __DECODE_NULL_H__
|
||||
#define __DECODE_NULL_H__
|
||||
void DecodeNullRegisterTests(void);
|
||||
#endif /* __DECODE_NULL_H__ */
|
||||
Loading…
Reference in New Issue