#include "profiler/profiler.h"
#include "utils/util.h"
-THREAD_LOCAL SimpleStats cap_count_stats;
+const PegInfo cap_names[] =
+{
+ { "processed", "packets processed against filter" },
+ { "captured", "packets matching dumped after matching filter" },
+ { nullptr, nullptr }
+};
+
+THREAD_LOCAL CaptureStats cap_count_stats;
THREAD_LOCAL ProfileStats cap_prof_stats;
static const Parameter s_params[] =
}
const PegInfo* CaptureModule::get_pegs() const
-{ return simple_pegs; }
+{ return cap_names; }
PegCount* CaptureModule::get_counts() const
{ return (PegCount*)&cap_count_stats; }
{
if ( !capture_initialized() )
capture_init();
+
if ( !bpf.bf_insns || sfbpf_filter(bpf.bf_insns, p->pkt,
p->pkth->caplen, p->pkth->pktlen) )
+ {
write_packet(p);
+ cap_count_stats.matched++;
+ }
+
+ cap_count_stats.checked++;
}
else if ( capture_initialized() )
capture_term();
CaptureModule mod;
MockPacketCapture cap(&mod);
+
+ mod.sum_stats();
packet_capture_enable("ip host 10.82.240.82");
packet_capture_enable(""); //Test double-enable guard
cap.eval(&p);
CHECK ( cap.write_packet_called );
+ CHECK ( cap_count_stats.checked == 3 );
+ CHECK ( cap_count_stats.matched == 2 );
+
fseek(cap.fh, 0, SEEK_SET);
auto pcap = pcap_fopen_offline(cap.fh, nullptr);