Thanks, I pushed these two patches to master and branch-1.8.
On Wed, Aug 15, 2012 at 11:47:20PM -0700, Justin Pettit wrote: > Looks good. > > --Justin > > > On Aug 13, 2012, at 9:46 AM, Ben Pfaff <b...@nicira.com> wrote: > > > A Nicira internal build recently failed the "ofproto-dpif - NetFlow flow > > expiration" test because of the following difference in output: > > > > header: v5, seq 0, engine 2,1 > > -rec: [...], 1 pkts, 60 bytes, ICMP 8:0, time <moment> > > +rec: [...], 1 pkts, 60 bytes, ICMP 8:0, time <range> > > > > Looking at the actual output, it is: > > rec: 192.168.0.1 > 192.168.0.2, if 1 > 65535, 1 pkts, 60 bytes, > > ICMP 8:0, time 8...9 > > > > That is, a one-packet flow was shown to have more than a momentary > > duration, which doesn't make sense. > > > > This commit fixes the problem by making sure that creating a facet and then > > its initial subfacet only checks the current time once. > > > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > ofproto/ofproto-dpif.c | 10 +++++++++- > > 1 files changed, 9 insertions(+), 1 deletions(-) > > > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > > index 1c57196..da42272 100644 > > --- a/ofproto/ofproto-dpif.c > > +++ b/ofproto/ofproto-dpif.c > > @@ -4244,6 +4244,14 @@ subfacet_create(struct facet *facet, enum > > odp_key_fitness key_fitness, > > > > if (list_is_empty(&facet->subfacets)) { > > subfacet = &facet->one_subfacet; > > + > > + /* This subfacet should conceptually be created, and have its first > > + * packet pass through, at the same time that its facet was > > created. > > + * If we called time_msec() here, then the subfacet could look > > + * (occasionally) as though it was used some time after the facet > > was > > + * used. That can make a one-packet flow look like it has a > > nonzero > > + * duration, which looks odd in e.g. NetFlow statistics. */ > > + subfacet->used = facet->used; > > } else { > > subfacet = subfacet_find__(ofproto, key, key_len, key_hash, > > &facet->flow); > > @@ -4258,6 +4266,7 @@ subfacet_create(struct facet *facet, enum > > odp_key_fitness key_fitness, > > } > > > > subfacet = xmalloc(sizeof *subfacet); > > + subfacet->used = time_msec(); > > } > > > > hmap_insert(&ofproto->subfacets, &subfacet->hmap_node, key_hash); > > @@ -4271,7 +4280,6 @@ subfacet_create(struct facet *facet, enum > > odp_key_fitness key_fitness, > > subfacet->key = NULL; > > subfacet->key_len = 0; > > } > > - subfacet->used = time_msec(); > > subfacet->dp_packet_count = 0; > > subfacet->dp_byte_count = 0; > > subfacet->actions_len = 0; > > -- > > 1.7.2.5 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev