From 9cdaaebe218dbd9d2126818725b0111a70a3df54 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 12 Sep 2011 16:40:03 -0700 Subject: [PATCH] ofproto-dpif: Introduce an enum for the number of tables. 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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index ac196eeb..4bf1ea06 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -65,6 +65,10 @@ COVERAGE_DEFINE(facet_unexpected); * flow translation. */ #define MAX_RESUBMIT_RECURSION 16 +/* Number of implemented OpenFlow tables. */ +enum { N_TABLES = 255 }; +BUILD_ASSERT_DECL(N_TABLES >= 1 && N_TABLES <= 255); + struct ofport_dpif; struct ofproto_dpif; @@ -473,7 +477,7 @@ construct(struct ofproto *ofproto_, int *n_tablesp) ofproto->has_bundle_action = false; - *n_tablesp = 255; + *n_tablesp = N_TABLES; return 0; } @@ -2630,6 +2634,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))); -- 2.30.2