X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=secchan%2Fofproto.c;h=2453055b861d72adee2aad313d93e45c70c9af95;hb=d6fbec6de043d5b9323a06417cc25b0fbba0ff8f;hp=9836e0f8306306f8dcd3d97cabeb5d54f1173d36;hpb=e7f327ff6bd90bb0ce695ca71054d17829a16888;p=openvswitch diff --git a/secchan/ofproto.c b/secchan/ofproto.c index 9836e0f8..2453055b 100644 --- a/secchan/ofproto.c +++ b/secchan/ofproto.c @@ -82,7 +82,7 @@ static int xlate_actions(const union ofp_action *in, size_t n_in, const flow_t *flow, struct ofproto *ofproto, const struct ofpbuf *packet, struct odp_actions *out, tag_type *tags, - bool *may_setup_flow); + bool *may_set_up_flow); struct rule { struct cls_rule cr; @@ -1919,7 +1919,7 @@ struct action_xlate_ctx { /* Output. */ struct odp_actions *out; /* Datapath actions. */ tag_type *tags; /* Tags associated with OFPP_NORMAL actions. */ - bool may_setup_flow; /* True ordinarily; false if the actions must + bool may_set_up_flow; /* True ordinarily; false if the actions must * be reassessed for every packet. */ }; @@ -2007,7 +2007,7 @@ xlate_output_action(struct action_xlate_ctx *ctx, ctx->out, ctx->tags, ctx->ofproto->aux)) { COVERAGE_INC(ofproto_uninstallable); - ctx->may_setup_flow = false; + ctx->may_set_up_flow = false; } break; case OFPP_FLOOD: @@ -2127,7 +2127,7 @@ static int xlate_actions(const union ofp_action *in, size_t n_in, const flow_t *flow, struct ofproto *ofproto, const struct ofpbuf *packet, - struct odp_actions *out, tag_type *tags, bool *may_setup_flow) + struct odp_actions *out, tag_type *tags, bool *may_set_up_flow) { tag_type no_tags = 0; struct action_xlate_ctx ctx; @@ -2139,17 +2139,17 @@ xlate_actions(const union ofp_action *in, size_t n_in, ctx.packet = packet; ctx.out = out; ctx.tags = tags ? tags : &no_tags; - ctx.may_setup_flow = true; + ctx.may_set_up_flow = true; do_xlate_actions(in, n_in, &ctx); - /* Check with in-band control to see if we're allowed to setup this + /* Check with in-band control to see if we're allowed to set up this * flow. */ if (!in_band_rule_check(ofproto->in_band, flow, out)) { - ctx.may_setup_flow = false; + ctx.may_set_up_flow = false; } - if (may_setup_flow) { - *may_setup_flow = ctx.may_setup_flow; + if (may_set_up_flow) { + *may_set_up_flow = ctx.may_set_up_flow; } if (odp_actions_overflow(out)) { odp_actions_init(out); @@ -2420,19 +2420,22 @@ query_stats(struct ofproto *p, struct rule *rule, struct odp_flow *odp_flows; size_t n_odp_flows; + packet_count = rule->packet_count; + byte_count = rule->byte_count; + n_odp_flows = rule->cr.wc.wildcards ? list_size(&rule->list) : 1; odp_flows = xcalloc(1, n_odp_flows * sizeof *odp_flows); if (rule->cr.wc.wildcards) { size_t i = 0; LIST_FOR_EACH (subrule, struct rule, list, &rule->list) { odp_flows[i++].key = subrule->cr.flow; + packet_count += subrule->packet_count; + byte_count += subrule->byte_count; } } else { odp_flows[0].key = rule->cr.flow; } - packet_count = rule->packet_count; - byte_count = rule->byte_count; if (!dpif_flow_get_multiple(&p->dpif, odp_flows, n_odp_flows)) { size_t i; for (i = 0; i < n_odp_flows; i++) {