summaryrefslogtreecommitdiffhomepage
path: root/ryu/lib/ofctl_v1_2.py
diff options
context:
space:
mode:
Diffstat (limited to 'ryu/lib/ofctl_v1_2.py')
-rw-r--r--ryu/lib/ofctl_v1_2.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/ryu/lib/ofctl_v1_2.py b/ryu/lib/ofctl_v1_2.py
index 2f2c91f3..dcac557a 100644
--- a/ryu/lib/ofctl_v1_2.py
+++ b/ryu/lib/ofctl_v1_2.py
@@ -453,6 +453,43 @@ def get_queue_stats(dp, waiters):
return desc
+def get_queue_config(dp, port, waiters):
+ ofp = dp.ofproto
+ stats = dp.ofproto_parser.OFPQueueGetConfigRequest(dp, port)
+ msgs = []
+ send_stats_request(dp, stats, waiters, msgs)
+
+ prop_type = {dp.ofproto.OFPQT_MIN_RATE: 'MIN_RATE',
+ dp.ofproto.OFPQT_MAX_RATE: 'MAX_RATE',
+ dp.ofproto.OFPQT_EXPERIMENTER: 'EXPERIMENTER',
+ }
+
+ configs = []
+ for config in msgs:
+ queue_list = []
+ for queue in config.queues:
+ prop_list = []
+ for prop in queue.properties:
+ p = {'property': prop_type.get(prop.property, 'UNKNOWN')}
+ if prop.property == dp.ofproto.OFPQT_MIN_RATE or \
+ prop.property == dp.ofproto.OFPQT_MAX_RATE:
+ p['rate'] = prop.rate
+ elif prop.property == dp.ofproto.OFPQT_EXPERIMENTER:
+ p['experimenter'] = prop.experimenter
+ p['data'] = prop.data
+ prop_list.append(p)
+ q = {'port': queue.port,
+ 'properties': prop_list,
+ 'queue_id': queue.queue_id}
+ queue_list.append(q)
+ c = {'port': config.port,
+ 'queues': queue_list}
+ configs.append(c)
+ configs = {str(dp.id): configs}
+
+ return configs
+
+
def get_flow_stats(dp, waiters, flow={}):
table_id = int(flow.get('table_id', dp.ofproto.OFPTT_ALL))
out_port = int(flow.get('out_port', dp.ofproto.OFPP_ANY))