struct netflow_v5_header *nf_hdr;
struct netflow_v5_record *nf_rec;
- if (!nf->packet.size) {
+ if (!ofpbuf_size(&nf->packet)) {
struct timespec now;
time_wall_timespec(&now);
nf_hdr->sampling_interval = htons(0);
}
- nf_hdr = nf->packet.data;
+ nf_hdr = ofpbuf_data(&nf->packet);
nf_hdr->count = htons(ntohs(nf_hdr->count) + 1);
nf_rec = ofpbuf_put_zeros(&nf->packet, sizeof *nf_rec);
}
/* Update flow tracking data. */
- nf_flow->created = 0;
nf_flow->packet_count = 0;
nf_flow->byte_count = 0;
nf_flow->tcp_flags = 0;
}
-void
-netflow_expire(struct netflow *nf, struct flow *flow) OVS_EXCLUDED(mutex)
-{
- struct netflow_flow *nf_flow;
-
- ovs_mutex_lock(&mutex);
- nf_flow = netflow_flow_lookup(nf, flow);
- if (nf_flow) {
- netflow_expire__(nf, nf_flow);
- }
- ovs_mutex_unlock(&mutex);
-}
-
void
netflow_flow_clear(struct netflow *nf, struct flow *flow) OVS_EXCLUDED(mutex)
{
ovs_mutex_lock(&mutex);
nf_flow = netflow_flow_lookup(nf, flow);
if (nf_flow) {
- ovs_assert(!nf_flow->packet_count);
- ovs_assert(!nf_flow->byte_count);
+ netflow_expire__(nf, nf_flow);
hmap_remove(&nf->flows, &nf_flow->hmap_node);
free(nf_flow);
}
long long int now = time_msec();
struct netflow_flow *nf_flow, *next;
- if (nf->packet.size) {
- collectors_send(nf->collectors, nf->packet.data, nf->packet.size);
- nf->packet.size = 0;
+ if (ofpbuf_size(&nf->packet)) {
+ collectors_send(nf->collectors, ofpbuf_data(&nf->packet), ofpbuf_size(&nf->packet));
+ ofpbuf_set_size(&nf->packet, 0);
}
if (!nf->active_timeout || now < nf->next_timeout) {
if (nf->active_timeout) {
poll_timer_wait_until(nf->next_timeout);
}
- if (nf->packet.size) {
+ if (ofpbuf_size(&nf->packet)) {
poll_immediate_wake();
}
ovs_mutex_unlock(&mutex);