Acked-by: Ethan Jackson <et...@nicira.com>
On Tue, Jun 11, 2013 at 5:21 PM, Justin Pettit <jpet...@nicira.com> wrote: > The is_gratuitous_arp() function is occasionally called when > processing the "normal" action. The previous code only disabled > wildcarding the dl_type field when the function was called, but > since it runs occasionally, it could lead to inconsistencies in the > facet table. This commit causes the dl_type to never be wildcarded > when the "normal" action is used. > > Signed-off-by: Justin Pettit <jpet...@nicira.com> > --- > ofproto/ofproto-dpif.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index 8df2679..ace8ba7 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -7531,7 +7531,6 @@ update_mirror_stats(struct ofproto_dpif *ofproto, > mirror_mask_t mirrors, > static bool > is_gratuitous_arp(const struct flow *flow, struct flow_wildcards *wc) > { > - memset(&wc->masks.dl_type, 0xff, sizeof wc->masks.dl_type); > if (flow->dl_type != htons(ETH_TYPE_ARP)) { > return false; > } > @@ -7707,6 +7706,10 @@ xlate_normal(struct xlate_ctx *ctx) > > ctx->xout->has_normal = true; > > + /* Check the dl_type, since we may check for gratuituous ARP. */ > + memset(&ctx->xout->wc.masks.dl_type, 0xff, > + sizeof ctx->xout->wc.masks.dl_type); > + > memset(&ctx->xout->wc.masks.dl_src, 0xff, > sizeof ctx->xout->wc.masks.dl_src); > memset(&ctx->xout->wc.masks.dl_dst, 0xff, > -- > 1.7.5.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev