summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSimon Horman <horms@verge.net.au>2014-03-11 10:42:00 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-03-16 21:42:06 +0900
commit233c615dfd5d5873e2e88ba8071cf2a9ad8875ff (patch)
treeac621ece53466f59b96d9dd887b635381224f921
parent3df9da512d622acf1d26352b281e4d60167132a7 (diff)
of14: Add flow monitor reply support
Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/ofproto/ofproto_v1_4_parser.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_v1_4_parser.py b/ryu/ofproto/ofproto_v1_4_parser.py
index 7cc78e75..f3b0aee8 100644
--- a/ryu/ofproto/ofproto_v1_4_parser.py
+++ b/ryu/ofproto/ofproto_v1_4_parser.py
@@ -3598,6 +3598,56 @@ class OFPFlowMonitorRequest(OFPFlowMonitorRequestBase):
table_id, command, match)
+@OFPMultipartReply.register_stats_type()
+@_set_stats_type(ofproto.OFPMP_FLOW_MONITOR, OFPFlowUpdateHeader)
+@_set_msg_type(ofproto.OFPT_MULTIPART_REPLY)
+class OFPFlowMonitorReply(OFPMultipartReply):
+ """
+ Flow monitor reply message
+
+ The switch responds with this message to a flow monitor request.
+
+ ================ ======================================================
+ Attribute Description
+ ================ ======================================================
+ body List of list of the following class instance.
+ OFPFlowMonitorFull
+ OFPFlowMonitorAbbrev
+ OFPFlowMonitorPaused
+ ================ ======================================================
+
+ Example::
+
+ @set_ev_cls(ofp_event.EventOFPFlowMonitorReply, MAIN_DISPATCHER)
+ def flow_monitor_reply_handler(self, ev):
+ msg = ev.msg
+ dp = msg.datapath
+ ofp = dp.ofproto
+ flow_updates = []
+
+ for update in msg.body:
+ update_str = 'length=%d event=%d' %
+ (update.length, update.event)
+ if (update.event == ofp.OFPFME_INITIAL or
+ update.event == ofp.OFPFME_ADDED or
+ update.event == ofp.OFPFME_REMOVED or
+ update.event == ofp.OFPFME_MODIFIED):
+ update_str += 'table_id=%d reason=%d idle_timeout=%d '
+ 'hard_timeout=%d priority=%d cookie=%d '
+ 'match=%d instructions=%s' %
+ (stat.table_id, stat.reason,
+ stat.idle_timeout, stat.hard_timeout,
+ stat.priority, stat.cookie,
+ stat.match, stat.instructions)
+ elif update.event == ofp.OFPFME_ABBREV:
+ update_str += 'xid=%d' % (stat.xid)
+ flow_updates.append(update_str)
+ self.logger.debug('FlowUpdates: %s', flow_updates)
+ """
+ def __init__(self, datapath, type_=None, **kwargs):
+ super(OFPFlowMonitorReply, self).__init__(datapath, **kwargs)
+
+
class OFPExperimenterMultipart(ofproto_parser.namedtuple(
'OFPExperimenterMultipart',
('experimenter', 'exp_type', 'data'))):