secchan: Revalidate subrules when adding a wildcarded rule without displacement.
authorBen Pfaff <blp@nicira.com>
Thu, 5 Mar 2009 21:36:37 +0000 (13:36 -0800)
committerBen Pfaff <blp@nicira.com>
Thu, 5 Mar 2009 21:36:37 +0000 (13:36 -0800)
Natasha noticed that adding a rule would not properly change the
destinations of already-established flows.  This should fix the problem.

secchan/ofproto.c

index 00f717316b71d5f7fbb394c5c6396e604bba50d7..2e460ee575ba99048d83c4c35a3573f6cd5b79c5 100644 (file)
@@ -2148,6 +2148,10 @@ add_flow(struct ofproto *p, struct ofconn *ofconn,
                 free_actions(&actions);
             }
             rule_destroy(displaced_rule);
+        } else {
+            /* No rule was exactly displaced, so we might need to change the
+             * rule that arbitrary subrules correspond to. */
+            p->need_revalidate = true;
         }
     } else {
         struct odp_flow odp_flow;