diff options
author | Yuichi Ito <ito.yuichi0@gmail.com> | 2014-03-31 14:51:03 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-04-01 07:14:11 +0900 |
commit | d6bbd8349760e1fb93e74353f751eee1b025912b (patch) | |
tree | c1347f5b2051e169614acb9a75116454ff1a652c | |
parent | d0cd13a6605337682219da8abcfbb702b484be76 (diff) |
ofctl_v1_3: Fix to enable using meter flags multiply
ofctl_rest is now enabled to parse flags multiply as follows:
curl -X POST -d '{"dpid": 1,
"meter_id": 1,
"flags": ["KBPS", "BURST"],
"bands": [{"type": "DROP", "rate": 1000}]}' http://localhost:8080/stats/meterentry/add
And now enabled to show flags as follows:
curl http://localhost:8080/stats/meterconfig/1
{
"1": [
{"bands": [{"burst_size": 0, "rate": 1000, "type": "DROP"}],
"flags": ["KBPS", "BURST"], "meter_id": 1}
]
}
Reported-by: cheers <cnmjbm@gmail.com>
Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/lib/ofctl_v1_3.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ryu/lib/ofctl_v1_3.py b/ryu/lib/ofctl_v1_3.py index af6ac81c..63356cd8 100644 --- a/ryu/lib/ofctl_v1_3.py +++ b/ryu/lib/ofctl_v1_3.py @@ -699,7 +699,11 @@ def get_meter_config(dp, waiters): elif band.type == dp.ofproto.OFPMBT_EXPERIMENTER: b['experimenter'] = band.experimenter bands.append(b) - c = {'flags': flags.get(config.flags, 0), + c_flags = [] + for k, v in flags.items(): + if k & config.flags: + c_flags.append(v) + c = {'flags': c_flags, 'meter_id': config.meter_id, 'bands': bands} configs.append(c) @@ -856,7 +860,12 @@ def mod_meter_entry(dp, flow, cmd): 'BURST': dp.ofproto.OFPMF_BURST, 'STATS': dp.ofproto.OFPMF_STATS} - flags = flags_convert.get(flow.get('flags')) + flow_flags = flow.get('flags') + if not isinstance(flow_flags, list): + flow_flags = [flow_flags] + flags = 0 + for flag in flow_flags: + flags |= flags_convert.get(flag, 0) if not flags: LOG.debug('Unknown flags: %s', flow.get('flags')) |