[ovs-dev] [PATCH] ofproto-dpif: Never wildcard dl_type for "normal" action.
Ethan Jackson
ethan at nicira.com
Wed Jun 12 00:30:33 UTC 2013
Acked-by: Ethan Jackson <ethan at nicira.com>
On Tue, Jun 11, 2013 at 5:21 PM, Justin Pettit <jpettit at 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 <jpettit at 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 at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list