Thanks. I pushed this to master. --Justin
On Jun 11, 2013, at 5:30 PM, Ethan Jackson <et...@nicira.com> wrote: > 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