return 0;
}
+ uint64_t pkts_cnt = 0;
while (bpf_map_get_next_key(mapfd, &key, &next_key) == 0) {
- uint64_t pkts_cnt = 0;
uint64_t bytes_cnt = 0;
hash_cnt++;
+ if (pkts_cnt > 0) {
+ SC_ATOMIC_ADD(dev->bypassed, pkts_cnt);
+ EBPFDeleteKey(mapfd, &key);
+ }
+ pkts_cnt = 0;
/* We use a per CPU structure so we will get a array of values. But if nr_cpus
* is 1 then we have a global hash. */
struct pair values_array[tcfg->cpus_count];
pkts_cnt = EBPFOpFlowForKey(flowstats, &flow_key, values_array[0].hash,
ctime, pkts_cnt, bytes_cnt);
if (pkts_cnt > 0) {
- SC_ATOMIC_ADD(dev->bypassed, pkts_cnt);
- EBPFDeleteKey(mapfd, &next_key);
found = 1;
}
key = next_key;
}
+ if (pkts_cnt > 0) {
+ SC_ATOMIC_ADD(dev->bypassed, pkts_cnt);
+ EBPFDeleteKey(mapfd, &key);
+ found = 1;
+ }
struct bpf_maps_info *bpfdata = LiveDevGetStorageById(dev, g_livedev_storage_id);
if (bpfdata) {