ofproto-dpif: Properly re-translate uninstallable facets in rule_execute().
authorBen Pfaff <blp@nicira.com>
Tue, 27 Sep 2011 23:24:15 +0000 (16:24 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 14 Oct 2011 21:08:43 +0000 (14:08 -0700)
If the facet is not installable then every packet requires separate
translation, but the existing code didn't do that.

ofproto/ofproto-dpif.c

index 8e5a86305a05e6b0fb9bdc472512ad54977f9ef9..9c3d6705b105b88f74c43ad93b33c036d350043a 100644 (file)
@@ -2886,6 +2886,9 @@ rule_execute(struct rule *rule_, struct flow *flow, struct ofpbuf *packet)
     /* First look for a related facet.  If we find one, account it to that. */
     facet = facet_lookup_valid(ofproto, flow);
     if (facet && facet->rule == rule) {
+        if (!facet->may_install) {
+            facet_make_actions(ofproto, facet, packet);
+        }
         facet_execute(ofproto, facet, packet);
         return 0;
     }