From: Jarno Rajahalme Date: Sun, 8 Sep 2013 01:27:08 +0000 (-0700) Subject: ofproto: Use proper error code when meter_id is out of range. X-Git-Tag: sliver-openvswitch-2.0.90-1~14^2~35 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=b31e8700fa21afc01af6e87caa23b56412e1c670;hp=717de9ff0351d4fd890b605816ddb0ce3eb3fd16;p=sliver-openvswitch.git 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 --- diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 942a440f9..3b7ecc8c5 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -4632,9 +4632,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;