X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fnetflow.c;h=3d913af2c609fc23d032e8305ddf7f12a4c0405f;hb=10df718e73122df2f3b04ed585e50e4b299a8cbd;hp=7c77c64ff2ff0019a9ac5766e77defc2bdce681b;hpb=58fda1dab104041fc693032475ec4662c1a52849;p=openvswitch diff --git a/ofproto/netflow.c b/ofproto/netflow.c index 7c77c64f..3d913af2 100644 --- a/ofproto/netflow.c +++ b/ofproto/netflow.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,6 @@ #include #include #include -#include "cfg.h" #include "collectors.h" #include "flow.h" #include "netflow.h" @@ -31,15 +30,13 @@ #include "svec.h" #include "timeval.h" #include "util.h" +#include "vlog.h" #include "xtoxll.h" -#define THIS_MODULE VLM_netflow -#include "vlog.h" +VLOG_DEFINE_THIS_MODULE(netflow) #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; @@ -173,7 +170,7 @@ netflow_expire(struct netflow *nf, struct netflow_flow *nf_flow, } nf_rec->tcp_flags = nf_flow->tcp_flags; nf_rec->ip_proto = expired->flow.nw_proto; - nf_rec->ip_tos = nf_flow->ip_tos; + nf_rec->ip_tos = expired->flow.nw_tos; /* Update flow tracking data. */ nf_flow->created = 0; @@ -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) { @@ -274,10 +271,8 @@ netflow_flow_update_time(struct netflow *nf, struct netflow_flow *nf_flow, } void -netflow_flow_update_flags(struct netflow_flow *nf_flow, uint8_t ip_tos, - uint8_t tcp_flags) +netflow_flow_update_flags(struct netflow_flow *nf_flow, uint8_t tcp_flags) { - nf_flow->ip_tos = ip_tos; nf_flow->tcp_flags |= tcp_flags; }