It seems reasonable that someone might want to reduce this number, so make it an enum to simplify that.
If someone does reduce the number then rule_dpif_lookup() needs to validate the table_id, so add code to do that too. --- ofproto/ofproto-dpif.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index bbd9b6a..43e236d 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -65,6 +65,9 @@ COVERAGE_DEFINE(facet_unexpected); * flow translation. */ #define MAX_RESUBMIT_RECURSION 16 +/* Number of implemented OpenFlow tables. Must be between 1 and 255. */ +enum { N_TABLES = 255 }; + struct ofport_dpif; struct ofproto_dpif; @@ -473,7 +476,7 @@ construct(struct ofproto *ofproto_, int *n_tablesp) ofproto->has_bundle_action = false; - *n_tablesp = 255; + *n_tablesp = N_TABLES; return 0; } @@ -2613,6 +2616,10 @@ static struct rule_dpif * rule_dpif_lookup(struct ofproto_dpif *ofproto, const struct flow *flow, uint8_t table_id) { + if (table_id >= N_TABLES) { + return NULL; + } + return rule_dpif_cast(rule_from_cls_rule( classifier_lookup(&ofproto->up.tables[table_id], flow))); -- 1.7.4.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev