*
* \return false (this create function never returns true)
*/
-static bool EBPFCreateFlowForKey(struct flows_stats *flowstats, void *key,
+static bool EBPFCreateFlowForKey(struct flows_stats *flowstats, LiveDevice *dev, void *key,
FlowKey *flow_key, struct timespec *ctime,
uint64_t pkts_cnt, uint64_t bytes_cnt,
int mapfd, int cpus_count)
eb->key[1] = key;
}
}
+ f->livedev = dev;
FLOWLOCK_UNLOCK(f);
return false;
}
return false;
}
-typedef bool (*OpFlowForKey)(struct flows_stats *flowstats, void *key,
+typedef bool (*OpFlowForKey)(struct flows_stats *flowstats, LiveDevice*dev, void *key,
FlowKey *flow_key, struct timespec *ctime,
uint64_t pkts_cnt, uint64_t bytes_cnt,
int mapfd, int cpus_count);
flow_key.proto = IPPROTO_UDP;
}
flow_key.recursion_level = 0;
- dead_flow = EBPFOpFlowForKey(flowstats, &next_key, &flow_key,
+ dead_flow = EBPFOpFlowForKey(flowstats, dev, &next_key, &flow_key,
ctime, pkts_cnt, bytes_cnt,
mapfd, tcfg->cpus_count);
if (dead_flow) {
flow_key.proto = IPPROTO_UDP;
}
flow_key.recursion_level = 0;
- pkts_cnt = EBPFOpFlowForKey(flowstats, &next_key, &flow_key,
+ pkts_cnt = EBPFOpFlowForKey(flowstats, dev, &next_key, &flow_key,
ctime, pkts_cnt, bytes_cnt,
mapfd, tcfg->cpus_count);
if (pkts_cnt > 0) {