[ovs-dev] [PATCH] ofproto: Check for overlapping flows only in the target table.
Ethan Jackson
ethan at nicira.com
Sat Oct 22 02:18:13 UTC 2011
Looks good.
Ethan
On Wed, Oct 19, 2011 at 16:03, Ben Pfaff <blp at nicira.com> wrote:
> There's no reason to check for overlapping flows in table A if the flow
> is going to be inserted into table B.
>
> (I doubt anyone actually uses OFPFF_CHECK_OVERLAP though.)
> ---
> ofproto/ofproto.c | 17 ++++++-----------
> 1 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index 1cc1e4e..4a492ce 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -2276,17 +2276,6 @@ add_flow(struct ofproto *ofproto, struct ofconn *ofconn,
> struct rule *rule;
> int error;
>
> - /* Check for overlap, if requested. */
> - if (fm->flags & OFPFF_CHECK_OVERLAP) {
> - struct classifier *cls;
> -
> - FOR_EACH_MATCHING_TABLE (cls, fm->table_id, ofproto) {
> - if (classifier_rule_overlaps(cls, &fm->cr)) {
> - return ofp_mkerr(OFPET_FLOW_MOD_FAILED, OFPFMFC_OVERLAP);
> - }
> - }
> - }
> -
> /* Pick table. */
> if (fm->table_id == 0xff) {
> uint8_t table_id;
> @@ -2307,6 +2296,12 @@ add_flow(struct ofproto *ofproto, struct ofconn *ofconn,
> return ofp_mkerr_nicira(OFPET_FLOW_MOD_FAILED, NXFMFC_BAD_TABLE_ID);
> }
>
> + /* Check for overlap, if requested. */
> + if (fm->flags & OFPFF_CHECK_OVERLAP
> + && classifier_rule_overlaps(table, &fm->cr)) {
> + return ofp_mkerr(OFPET_FLOW_MOD_FAILED, OFPFMFC_OVERLAP);
> + }
> +
> /* Serialize against pending deletion. */
> if (is_flow_deletion_pending(ofproto, &fm->cr, table - ofproto->tables)) {
> return OFPROTO_POSTPONE;
> --
> 1.7.4.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list