X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fnetflow.c;h=67932f0f75d29454bf2c4ff726123b44f8a3d584;hb=ce5a3e38dacd8042dd7c4de7be24aca9c2887103;hp=7c77c64ff2ff0019a9ac5766e77defc2bdce681b;hpb=58fda1dab104041fc693032475ec4662c1a52849;p=openvswitch diff --git a/ofproto/netflow.c b/ofproto/netflow.c index 7c77c64f..67932f0f 100644 --- a/ofproto/netflow.c +++ b/ofproto/netflow.c @@ -20,7 +20,6 @@ #include #include #include -#include "cfg.h" #include "collectors.h" #include "flow.h" #include "netflow.h" @@ -38,8 +37,6 @@ #define NETFLOW_V5_VERSION 5 -static const int ACTIVE_TIMEOUT_DEFAULT = 600; - /* Every NetFlow v5 message contains the header that follows. This is * followed by up to thirty records that describe a terminating flow. * We only send a single record per NetFlow message. @@ -112,7 +109,7 @@ netflow_expire(struct netflow *nf, struct netflow_flow *nf_flow, { struct netflow_v5_header *nf_hdr; struct netflow_v5_record *nf_rec; - struct timeval now; + struct timespec now; nf_flow->last_expired += nf->active_timeout; @@ -123,7 +120,7 @@ netflow_expire(struct netflow *nf, struct netflow_flow *nf_flow, return; } - time_timeval(&now); + time_wall_timespec(&now); if (!nf->packet.size) { nf_hdr = ofpbuf_put_zeros(&nf->packet, sizeof *nf_hdr); @@ -131,7 +128,7 @@ netflow_expire(struct netflow *nf, struct netflow_flow *nf_flow, nf_hdr->count = htons(0); nf_hdr->sysuptime = htonl(time_msec() - nf->boot_time); nf_hdr->unix_secs = htonl(now.tv_sec); - nf_hdr->unix_nsecs = htonl(now.tv_usec * 1000); + nf_hdr->unix_nsecs = htonl(now.tv_nsec); nf_hdr->flow_seq = htonl(nf->netflow_cnt++); nf_hdr->engine_type = nf->engine_type; nf_hdr->engine_id = nf->engine_id; @@ -211,10 +208,10 @@ netflow_set_options(struct netflow *nf, collectors_create(&nf_options->collectors, 0, &nf->collectors); old_timeout = nf->active_timeout; - if (nf_options->active_timeout != -1) { + if (nf_options->active_timeout >= 0) { nf->active_timeout = nf_options->active_timeout; } else { - nf->active_timeout = ACTIVE_TIMEOUT_DEFAULT; + nf->active_timeout = NF_ACTIVE_TIMEOUT_DEFAULT; } nf->active_timeout *= 1000; if (old_timeout != nf->active_timeout) {