From: Ben Pfaff Date: Thu, 28 Jul 2011 22:01:20 +0000 (-0700) Subject: ofproto: Allow ->rule_choose_table() to be NULL regardless of table count. X-Git-Tag: v1.3.0~468 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=13521ff59379b6a7a91be18ce8d903cd698694b3;p=sliver-openvswitch.git ofproto: Allow ->rule_choose_table() to be NULL regardless of table count. In the upcoming software switch implementation of multiple tables, there is no reason to prefer one table over another, so we always put rules into table 0 by default. This commit allows this to be done simply by specifying NULL as ->rule_choose_table(). --- diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h index 985f1121f..f46ff8427 100644 --- a/ofproto/ofproto-provider.h +++ b/ofproto/ofproto-provider.h @@ -598,8 +598,7 @@ struct ofproto_class { * If multiple tables are candidates for inserting the flow, the function * should choose one arbitrarily (but deterministically). * - * This function will never be called for an ofproto that has only one - * table, so it may be NULL in that case. */ + * If this function is NULL then table 0 is always chosen. */ int (*rule_choose_table)(const struct ofproto *ofproto, const struct cls_rule *cls_rule, uint8_t *table_idp); diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 4d4c23201..8d22c50f7 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -2182,7 +2182,7 @@ add_flow(struct ofproto *ofproto, struct ofconn *ofconn, struct flow_mod *fm, /* Pick table. */ if (fm->table_id == 0xff) { uint8_t table_id; - if (ofproto->n_tables > 1) { + if (ofproto->ofproto_class->rule_choose_table) { error = ofproto->ofproto_class->rule_choose_table(ofproto, &fm->cr, &table_id); if (error) {