[ovs-dev] [ofproto-dpif 4/5] ofproto-dpif: Improperly handled OFPP_ALL action.
Ethan Jackson
ethan at nicira.com
Fri Nov 18 19:23:33 UTC 2011
Here is an incremental. This causes very minor changes to the next patch in
the series. I'll resend that too, although I'm not sure it needs review again.
---
ofproto/ofproto-dpif.c | 26 ++++++++++++++------------
1 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 15d0883..e75c258 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -3771,6 +3771,13 @@ commit_odp_actions(struct action_xlate_ctx *ctx)
static void
compose_output_action(struct action_xlate_ctx *ctx, uint16_t odp_port)
{
+ uint16_t ofp_port = odp_port_to_ofp_port(odp_port);
+ const struct ofport_dpif *ofport = get_ofp_port(ctx->ofproto, ofp_port);
+
+ if (ofport && ofport->up.opp.config & htonl(OFPPC_NO_FWD)) {
+ return;
+ }
+
nl_msg_put_u32(ctx->odp_actions, OVS_ACTION_ATTR_OUTPUT, odp_port);
ctx->sflow_odp_port = odp_port;
ctx->sflow_n_outputs++;
@@ -3782,20 +3789,15 @@ add_output_action(struct action_xlate_ctx *ctx, uint16_t ofp_port)
const struct ofport_dpif *ofport = get_ofp_port(ctx->ofproto, ofp_port);
uint16_t odp_port = ofp_port_to_odp_port(ofp_port);
- if (ofport) {
- if (ofport->up.opp.config & htonl(OFPPC_NO_FWD)
- || !stp_forward_in_state(ofport->stp_state)) {
- /* Forwarding disabled on port. */
- return;
- }
- } else {
- /*
- * We don't have an ofport record for this port, but it doesn't hurt to
- * allow forwarding to it anyhow. Maybe such a port will appear later
- * and we're pre-populating the flow table.
- */
+ if (ofport && !stp_forward_in_state(ofport->stp_state)) {
+ /* Forwarding disabled on port. */
+ return;
}
+ /* We may not have an ofport record for this port, but it doesn't hurt to
+ * allow forwarding to it anyhow. Maybe such a port will appear later and
+ * we're pre-populating the flow table. */
+
commit_odp_actions(ctx);
compose_output_action(ctx, odp_port);
ctx->nf_output_iface = ofp_port;
--
1.7.7.1
More information about the dev
mailing list