/* Copyright (c) 2008 Victor Julien */ /* Decode the raw packet */ #include "suricata-common.h" #include "decode.h" #include "util-debug.h" void DecodeTunnel(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, uint16_t len, PacketQueue *pq) { switch (p->tunnel_proto) { case PPP_OVER_GRE: return DecodePPP(tv, dtv, p, pkt, len, pq); break; case IPPROTO_IP: return DecodeIPV4(tv, dtv, p, pkt, len, pq); case IPPROTO_IPV6: return DecodeIPV6(tv, dtv, p, pkt, len, pq); default: SCLogInfo("FIXME: DecodeTunnel: protocol %" PRIu32 " not supported.", p->tunnel_proto); break; } } /** \brief Set the No payload inspection Flag for the packet. * * \param p Packet to set the flag in */ inline void DecodeSetNoPayloadInspectionFlag(Packet *p) { SCEnter(); p->flags |= PKT_NOPAYLOAD_INSPECTION; SCReturn; } /** \brief Set the No packet inspection Flag for the packet. * * \param p Packet to set the flag in */ inline void DecodeSetNoPacketInspectionFlag(Packet *p) { SCEnter(); p->flags |= PKT_NOPACKET_INSPECTION; SCReturn; } void DecodeRegisterPerfCounters(DecodeThreadVars *dtv, ThreadVars *tv) { /* register counters */ dtv->counter_pkts = SCPerfTVRegisterCounter("decoder.pkts", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_pkts_per_sec = SCPerfTVRegisterIntervalCounter("decoder.pkts_per_sec", tv, SC_PERF_TYPE_DOUBLE, "NULL", "1s"); dtv->counter_bytes = SCPerfTVRegisterCounter("decoder.bytes", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_bytes_per_sec = SCPerfTVRegisterIntervalCounter("decoder.bytes_per_sec", tv, SC_PERF_TYPE_DOUBLE, "NULL", "1s"); dtv->counter_mbit_per_sec = SCPerfTVRegisterIntervalCounter("decoder.mbit_per_sec", tv, SC_PERF_TYPE_DOUBLE, "NULL", "1s"); dtv->counter_ipv4 = SCPerfTVRegisterCounter("decoder.ipv4", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_ipv6 = SCPerfTVRegisterCounter("decoder.ipv6", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_eth = SCPerfTVRegisterCounter("decoder.ethernet", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_raw = SCPerfTVRegisterCounter("decoder.raw", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_sll = SCPerfTVRegisterCounter("decoder.sll", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_tcp = SCPerfTVRegisterCounter("decoder.tcp", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_udp = SCPerfTVRegisterCounter("decoder.udp", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_icmpv4 = SCPerfTVRegisterCounter("decoder.icmpv4", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_icmpv6 = SCPerfTVRegisterCounter("decoder.icmpv6", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_ppp = SCPerfTVRegisterCounter("decoder.ppp", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_pppoe = SCPerfTVRegisterCounter("decoder.pppoe", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_gre = SCPerfTVRegisterCounter("decoder.gre", tv, SC_PERF_TYPE_UINT64, "NULL"); dtv->counter_avg_pkt_size = SCPerfTVRegisterAvgCounter("decoder.avg_pkt_size", tv, SC_PERF_TYPE_DOUBLE, "NULL"); dtv->counter_max_pkt_size = SCPerfTVRegisterMaxCounter("decoder.max_pkt_size", tv, SC_PERF_TYPE_UINT64, "NULL"); tv->sc_perf_pca = SCPerfGetAllCountersArray(&tv->sc_perf_pctx); SCPerfAddToClubbedTMTable(tv->name, &tv->sc_perf_pctx); return; }