This patch makes it possible for ofctl_v1_3 to use the action type of 
experimenter.

Signed-off-by: Minoru TAKAHASHI <[email protected]>
---
 ryu/lib/ofctl_v1_3.py                                      | 14 ++++++++++++++
 .../ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json  |  4 +++-
 .../unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json  |  6 ++++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/ryu/lib/ofctl_v1_3.py b/ryu/lib/ofctl_v1_3.py
index 3f8ee8f..ad2760b 100644
--- a/ryu/lib/ofctl_v1_3.py
+++ b/ryu/lib/ofctl_v1_3.py
@@ -81,6 +81,16 @@ def to_action(dp, dic):
         result = parser.OFPActionPushPbb(ethertype)
     elif action_type == 'POP_PBB':
         result = parser.OFPActionPopPbb()
+    elif action_type == 'EXPERIMENTER':
+        experimenter = int(dic.get('experimenter'))
+        data_type = dic.get('data_type', 'ascii')
+        if data_type not in ['ascii', 'base64']:
+            LOG.error('Unknown data type: %s', data_type)
+            return None
+        data = dic.get('data', '')
+        if data_type == 'base64':
+            data = base64.b64decode(data)
+        result = parser.OFPActionExperimenterUnknown(experimenter, data)
     else:
         result = None
 
@@ -176,6 +186,10 @@ def action_to_str(act):
         buf = 'PUSH_PBB:' + str(act.ethertype)
     elif action_type == ofproto_v1_3.OFPAT_POP_PBB:
         buf = 'POP_PBB'
+    elif action_type == ofproto_v1_3.OFPAT_EXPERIMENTER:
+        data_str = base64.b64encode(act.data)
+        buf = 'EXPERIMENTER: {experimenter:%s, data:%s}' % \
+            (act.experimenter, data_str.decode('utf-8'))
     else:
         buf = 'UNKNOWN'
     return buf
diff --git 
a/ryu/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json 
b/ryu/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json
index 763586f..a9cdfa9 100644
--- a/ryu/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json
+++ b/ryu/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json
@@ -74,7 +74,9 @@
                         "SET_NW_TTL:10",
                         "SET_QUEUE:3",
                         "GROUP:99",
-                        "OUTPUT:6"
+                        "OUTPUT:6",
+                        "EXPERIMENTER: {experimenter:98765432, 
data:ZXhwX2RhdGE=}",
+                        "EXPERIMENTER: {experimenter:8992, data:cF9kYXRh}"
                     ]
                 },
                 "SET_FIELD: {eth_src:01:02:03:04:05:06}",
diff --git a/ryu/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json 
b/ryu/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json
index 636bfb8..fbd5c21 100644
--- a/ryu/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json
+++ b/ryu/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json
@@ -62,6 +62,12 @@
                         "nw_ttl": 10
                     },
                     {
+                        "type": "EXPERIMENTER",
+                        "experimenter": 101,
+                        "data": "AAECAwQFBgc=",
+                        "data_type": "base64"
+                    },
+                    {
                         "type": "SET_QUEUE",
                         "queue_id": 3
                     },
-- 
1.9.1


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to