Pushed. Thanks for the fix!
On Tue, Sep 23, 2014 at 9:41 PM, Simon Horman <simon.hor...@netronome.com> wrote: > When searching through the valid ids an id should > be used if is not found rather than if it is found. > > It appears to me that without this change duplicate recirculation > ids may used in cases where the last recirculation id has > been allocated; selection loops back to the beginning of the pool and; > reaches a recirculation id that is still in use. > > As the number of recirculation ids is currently RECIRC_ID_N_IDS = 1024 this > does not seem beyond the bounds of possibility. > > I have not verified that such a scenario can actually occur. But it seems > that a likely consequence would be that some packets may be forwarded > incorrectly. > > Signed-off-by: Simon Horman <simon.hor...@netronome.com> > --- > ofproto/ofproto-dpif-rid.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ofproto/ofproto-dpif-rid.c b/ofproto/ofproto-dpif-rid.c > index b3d98eb..e75dfc8 100644 > --- a/ofproto/ofproto-dpif-rid.c > +++ b/ofproto/ofproto-dpif-rid.c > @@ -157,7 +157,7 @@ rid_pool_alloc_id(struct rid_pool *rids) > } > > for(id = rids->base; id < rids->base + rids->n_ids; id++) { > - if (rid_pool_find(rids, id)) { > + if (!rid_pool_find(rids, id)) { > goto found_free_id; > } > } > -- > 2.0.1 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev