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().
---
 ofproto/ofproto-provider.h |    3 +--
 ofproto/ofproto.c          |    2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
index 985f112..f46ff84 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 79c85a0..1c765c6 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -2188,7 +2188,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) {
-- 
1.7.4.4

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to