X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fofproto-dpif.c;h=aba8e3ce08f329b604995de9367bbcae0e5a39c4;hb=db968317f3ab4c44dedd9a125333edaed1924de2;hp=de600f0a170ec9005fd0cd7c1cbd550dae00fa63;hpb=c573540b89ddf0f4c74f0ebb6d237388d660e8fa;p=openvswitch diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index de600f0a..aba8e3ce 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -4046,7 +4046,7 @@ slave_enabled_cb(uint16_t ofp_port, void *ofproto_) case OFPP_NORMAL: case OFPP_FLOOD: case OFPP_ALL: - case OFPP_LOCAL: + case OFPP_NONE: return true; case OFPP_CONTROLLER: /* Not supported by the bundle action. */ return false; @@ -4289,13 +4289,24 @@ xlate_actions(struct action_xlate_ctx *ctx, ctx->odp_actions = ofpbuf_new(512); ofpbuf_reserve(ctx->odp_actions, NL_A_U32_SIZE); + ctx->tags = 0; + ctx->may_set_up_flow = true; + ctx->has_learn = false; + ctx->has_normal = false; + ctx->nf_output_iface = NF_OUT_DROP; + ctx->recurse = 0; + ctx->priority = 0; + ctx->base_priority = 0; + ctx->base_flow = ctx->flow; + ctx->base_flow.tun_id = 0; + ctx->table_id = 0; if (ctx->flow.tos_frag & FLOW_FRAG_ANY) { switch (ctx->ofproto->up.frag_handling) { case OFPC_FRAG_NORMAL: /* We must pretend that transport ports are unavailable. */ - ctx->flow.tp_src = htons(0); - ctx->flow.tp_dst = htons(0); + ctx->flow.tp_src = ctx->base_flow.tp_src = htons(0); + ctx->flow.tp_dst = ctx->base_flow.tp_dst = htons(0); break; case OFPC_FRAG_DROP: @@ -4310,18 +4321,6 @@ xlate_actions(struct action_xlate_ctx *ctx, } } - ctx->tags = 0; - ctx->may_set_up_flow = true; - ctx->has_learn = false; - ctx->has_normal = false; - ctx->nf_output_iface = NF_OUT_DROP; - ctx->recurse = 0; - ctx->priority = 0; - ctx->base_priority = 0; - ctx->base_flow = ctx->flow; - ctx->base_flow.tun_id = 0; - ctx->table_id = 0; - if (process_special(ctx->ofproto, &ctx->flow, ctx->packet)) { ctx->may_set_up_flow = false; return ctx->odp_actions;