this patch makes the max_len of flow_mod message more flexible.

before applying this patch:

    ofctl_v1_0: 128 bytes for packet_in (fixed size) and none for others (fixed)
    ofctl_v1_2: 128 bytes for packet_in (fixed size) and 0 for others (fixed 
size)
    ofctl_v1_3: 0 for all by default (flexible)

    ofctl_v1_3 will send 0 byte length data in a packet_in message if max_len 
is not specified.

after applying this patch:

    all version: MAX_LEN for all by default (flexible)
    NOTE: MAX_LEN is 65535 for OF1.0, and is OFPCML_MAX for OF1.2/1.3.

    max_len is omissible by every ofctl.

Signed-off-by: Yuichi Ito <[email protected]>
---
 ryu/lib/ofctl_v1_0.py |    9 +++------
 ryu/lib/ofctl_v1_2.py |    5 ++---
 ryu/lib/ofctl_v1_3.py |    2 +-
 3 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/ryu/lib/ofctl_v1_0.py b/ryu/lib/ofctl_v1_0.py
index 0fd958c..ea317f7 100644
--- a/ryu/lib/ofctl_v1_0.py
+++ b/ryu/lib/ofctl_v1_0.py
@@ -33,12 +33,9 @@ def to_actions(dp, acts):
         action_type = a.get('type')
         if action_type == 'OUTPUT':
             out_port = int(a.get('port', ofproto_v1_0.OFPP_NONE))
-            if out_port == dp.ofproto.OFPP_CONTROLLER:
-                miss_send_len = ofproto_v1_0.OFP_DEFAULT_MISS_SEND_LEN
-                actions.append(dp.ofproto_parser.OFPActionOutput(
-                    out_port, max_len=miss_send_len))
-            else:
-                actions.append(dp.ofproto_parser.OFPActionOutput(out_port))
+            max_len = int(a.get('max_len', 65535))
+            actions.append(dp.ofproto_parser.OFPActionOutput(
+                out_port, max_len=max_len))
         elif action_type == 'SET_VLAN_VID':
             vlan_vid = int(a.get('vlan_vid', 0xffff))
             actions.append(dp.ofproto_parser.OFPActionVlanVid(vlan_vid))
diff --git a/ryu/lib/ofctl_v1_2.py b/ryu/lib/ofctl_v1_2.py
index 5237cf7..e768efa 100644
--- a/ryu/lib/ofctl_v1_2.py
+++ b/ryu/lib/ofctl_v1_2.py
@@ -36,10 +36,9 @@ def to_actions(dp, acts):
         action_type = a.get('type')
         if action_type == 'OUTPUT':
             out_port = int(a.get('port', ofproto_v1_2.OFPP_ANY))
-            miss_send_len = (128 if out_port == dp.ofproto.OFPP_CONTROLLER
-                             else 0)
+            max_len = int(a.get('max_len', ofproto_v1_2.OFPCML_MAX))
             actions = [dp.ofproto_parser.OFPActionOutput(
-                       out_port, max_len=miss_send_len)]
+                       out_port, max_len=max_len)]
             inst_type = dp.ofproto.OFPIT_APPLY_ACTIONS
             inst = [dp.ofproto_parser.OFPInstructionActions(
                     inst_type, actions)]
diff --git a/ryu/lib/ofctl_v1_3.py b/ryu/lib/ofctl_v1_3.py
index 4a61b9c..752d518 100644
--- a/ryu/lib/ofctl_v1_3.py
+++ b/ryu/lib/ofctl_v1_3.py
@@ -39,7 +39,7 @@ def to_actions(dp, acts):
         action_type = a.get('type')
         if action_type == 'OUTPUT':
             out_port = int(a.get('port', ofproto_v1_3.OFPP_ANY))
-            max_len = int(a.get('max_len', 0))
+            max_len = int(a.get('max_len', ofproto_v1_3.OFPCML_MAX))
             actions.append((parser.OFPActionOutput(out_port,
                                                    max_len)))
         elif action_type == 'COPY_TTL_OUT':
-- 
1.7.10.4


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to