From 13b1febe4fa04e2dbd9ab9cf1485d519b1e81f1a Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 4 Nov 2013 22:36:28 -0800 Subject: [PATCH] ofp-util: Report OFPMMFC_BAD_FLAGS for bad band flags. It doesn't make sense to specify both kbps and pkt/s, because the two units are mutually exclusive. Signed-off-by: Ben Pfaff Acked-by: Jarno Rajahalme --- lib/ofp-util.c | 4 ++++ tests/ofp-print.at | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 16b09f6ae..77804a672 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -1746,6 +1746,10 @@ ofputil_decode_meter_mod(const struct ofp_header *oh, enum ofperr error; mm->meter.flags = ntohs(omm->flags); + if (mm->meter.flags & OFPMF13_KBPS && + mm->meter.flags & OFPMF13_PKTPS) { + return OFPERR_OFPMMFC_BAD_FLAGS; + } mm->meter.bands = bands->data; error = ofputil_pull_bands(&b, b.size, &mm->meter.n_bands, bands); diff --git a/tests/ofp-print.at b/tests/ofp-print.at index 9d01be311..82e8c3d17 100644 --- a/tests/ofp-print.at +++ b/tests/ofp-print.at @@ -1875,6 +1875,16 @@ OFPT_METER_MOD (OF1.3) (xid=0x28a62652): ***decode error: OFPMMFC_BAD_COMMAND*** ]) AT_CLEANUP +AT_SETUP([OFPT_METER_MOD request - bad flags - OF1.3]) +AT_KEYWORDS([ofp-print]) +AT_CHECK([ovs-ofctl ofp-print "\ +04 1d 00 20 82 b3 a1 a4 00 00 00 03 00 00 00 01 \ +00 01 00 10 00 00 00 02 00 00 00 02 00 00 00 00 \ +"], [0], [dnl +OFPT_METER_MOD (OF1.3) (xid=0x82b3a1a4): ***decode error: OFPMMFC_BAD_FLAGS*** +]) +AT_CLEANUP + AT_SETUP([OFPST_METER request - OF1.3]) AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST]) AT_CHECK([ovs-ofctl ofp-print "041200180000000200090000000000000000000100000000"], [0], [dnl -- 2.43.0