util-ebpf: optimization on flow storage queries

pull/3952/head
Eric Leblond 6 years ago committed by Victor Julien
parent 288f335aa5
commit aeb2bd3aa1

@ -574,7 +574,8 @@ void EBPFBypassFree(void *data)
* \return true if entries have activity, false if not
*/
static bool EBPFBypassCheckHalfFlow(Flow *f, EBPFBypassData *eb, void *key,
static bool EBPFBypassCheckHalfFlow(Flow *f, FlowBypassInfo *fc,
EBPFBypassData *eb, void *key,
int index)
{
int i;
@ -597,10 +598,6 @@ static bool EBPFBypassCheckHalfFlow(Flow *f, EBPFBypassData *eb, void *key,
pkts_cnt += BPF_PERCPU(values_array, i).packets;
bytes_cnt += BPF_PERCPU(values_array, i).bytes;
}
FlowBypassInfo *fc = FlowGetStorageById(f, GetFlowBypassInfoID());
if (fc == NULL) {
return false;
}
if (index == 0) {
if (pkts_cnt != fc->todstpktcnt) {
fc->todstpktcnt = pkts_cnt;
@ -629,8 +626,12 @@ bool EBPFBypassUpdate(Flow *f, void *data, time_t tsec)
if (eb == NULL) {
return false;
}
bool activity = EBPFBypassCheckHalfFlow(f, eb, eb->key[0], 0);
activity |= EBPFBypassCheckHalfFlow(f, eb, eb->key[1], 1);
FlowBypassInfo *fc = FlowGetStorageById(f, GetFlowBypassInfoID());
if (fc == NULL) {
return false;
}
bool activity = EBPFBypassCheckHalfFlow(f, fc, eb, eb->key[0], 0);
activity |= EBPFBypassCheckHalfFlow(f, fc, eb, eb->key[1], 1);
if (!activity) {
SCLogDebug("Delete entry: %u (%ld)", FLOW_IS_IPV6(f), FlowGetId(f));
/* delete the entries if no time update */

Loading…
Cancel
Save