/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
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);
}
void
-netflow_flow_update(struct netflow *nf, struct flow *flow,
+netflow_flow_update(struct netflow *nf, const struct flow *flow,
ofp_port_t output_iface,
const struct dpif_flow_stats *stats)
OVS_EXCLUDED(mutex)
}
/* Update flow tracking data. */
- nf_flow->created = 0;
nf_flow->packet_count = 0;
nf_flow->byte_count = 0;
nf_flow->tcp_flags = 0;
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);
atomic_sub(&netflow_count, 1, &orig);
collectors_destroy(nf->collectors);
ofpbuf_uninit(&nf->packet);
- ovs_refcount_destroy(&nf->ref_cnt);
free(nf);
}
}