From 39fc8f2e9624e8b4b947336b216c6a11fe0b7772 Mon Sep 17 00:00:00 2001 From: Jarno Rajahalme Date: Sat, 7 Sep 2013 18:27:08 -0700 Subject: [PATCH] ofproto: Use proper error code when meter_id is out of range. Use OUT_OF_METERS when given meter_id is greater than what is supported by the datapath. Retain the INVALID_METER error code for the meter_ids outside of the range supported by the specification. Signed-off-by: Jarno Rajahalme Signed-off-by: Ben Pfaff --- ofproto/ofproto.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 3d0d1b020..5118572d3 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -4588,9 +4588,12 @@ handle_meter_mod(struct ofconn *ofconn, const struct ofp_header *oh) if (mm.command != OFPMC13_DELETE) { /* Fails also when meters are not implemented by the provider. */ - if (!meter_id || meter_id > ofproto->meter_features.max_meters) { + if (meter_id == 0 || meter_id > OFPM13_MAX) { error = OFPERR_OFPMMFC_INVALID_METER; goto exit_free_bands; + } else if (meter_id > ofproto->meter_features.max_meters) { + error = OFPERR_OFPMMFC_OUT_OF_METERS; + goto exit_free_bands; } if (mm.meter.n_bands > ofproto->meter_features.max_bands) { error = OFPERR_OFPMMFC_OUT_OF_BANDS; -- 2.20.1