secchan: Eliminate UNKNOWN_SUPER.
authorBen Pfaff <blp@nicira.com>
Wed, 29 Apr 2009 22:36:44 +0000 (15:36 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 1 May 2009 17:55:28 +0000 (10:55 -0700)
commit38cc8bbe1fbec2ececd2b559721dc628a1b7623d
treef32bdf842638836d827e78f2808a2c9baf341c65
parent22f456dba98ad2fd1103a41e81abf0730808d34d
secchan: Eliminate UNKNOWN_SUPER.

When a super-rule is destroyed, secchan must reassess each of its subrules.
Each subrule might now have no super-rule (which we suspect is the common
case) or it might have a new super-rule.

Until now, secchan has "optimized" this reassessment by initially assigning
each of the deleted super-rule's subrules a super-rule of UNKNOWN_SUPER,
which is not a valid rule at all.  It did this in the hope that the
subrule would get deleted before we need to know what its super-rule is.
However, this has repeatedly led to bugs, since it's not always obvious
what code will need to find a rule's super-rule.

This commit fixes the problem by removing the "optimization" (in quotes
because there is no evidence that it was a useful optimization in
practice).
secchan/ofproto.c