On Mon, 7 May 2012 13:44:45 +0900
Isaku Yamahata <[email protected]> wrote:

> On Mon, May 07, 2012 at 07:18:34AM +0900, FUJITA Tomonori wrote:
> > diff --git a/ryu/ofproto/ofproto_v1_0_parser.py 
> > b/ryu/ofproto/ofproto_v1_0_parser.py
> > index 8ea3321..3cb6830 100644
> > --- a/ryu/ofproto/ofproto_v1_0_parser.py
> > +++ b/ryu/ofproto/ofproto_v1_0_parser.py
> > @@ -420,6 +420,27 @@ class NXActionSetTunnel64(NXActionHeader):
> >          msg_pack_into(ofproto_v1_0.NX_ACTION_SET_TUNNEL64_PACK_STR, buf,
> >                        offset, self.type, self.len, self.vendor, 
> > self.subtype,
> >                        self.tun_id)
> > +        
> > +
> > +class NXActionMultipath(NXActionHeader):
> > +    def __init__(self, fields_, basis_, algorithm_, max_link_, arg_,
> > +                 ofs_nbits_, dst_):
> > +        super(NXActionMultipath, self).__init__(
> > +            ofproto_v1_0.NXAST_MULTIPATH,
> > +            ofproto_v1_0.NX_ACTION_MULTIPATH_SIZE)
> > +        self.fields = fields_
> > +        self.basis = basis_
> > +        self.algorithm = algorithm_
> > +        self.max_link = max_link_
> > +        self.arg = arg_
> > +        self.ofs_nbits = ofs_nbits_
> > +        self.dst = dst_
> > +
> > +    def serialize(self, buf, offset):
> > +        msg_pack_into(ofproto_v1_0.NX_ACTION_MULTIPATH_PACK_STR, buf,
> > +                      offset, self.type, self.len, self.vendor, 
> > self.subtype,
> > +                      self.fields, self.basis, self.algorithm, 
> > self.max_link,
> > +                      self.arg, self.ofs_nbits, self.dst)
> >  
> >  
> >  class OFPDescStats(collections.namedtuple('OFPDescStats',
> 
> The logic itself looks good. But what's the point of appending '_'?

ok, dropping '_' and applied the following patch:

=
From: FUJITA Tomonori <[email protected]>
Subject: [PATCH] add Nicira Extension NXAST_MULTIPATH action

Signed-off-by: FUJITA Tomonori <[email protected]>
---
 ryu/ofproto/ofproto_v1_0.py        |   15 +++++++++++++++
 ryu/ofproto/ofproto_v1_0_parser.py |   21 +++++++++++++++++++++
 2 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py
index dff4c3a..43e4116 100644
--- a/ryu/ofproto/ofproto_v1_0.py
+++ b/ryu/ofproto/ofproto_v1_0.py
@@ -235,6 +235,7 @@ OFP_ACTION_PACK_STR = '!H'
 NXAST_RESUBMIT = 1
 NXAST_SET_TUNNEL = 2
 NXAST_SET_TUNNEL64 = 9
+NXAST_MULTIPATH = 10
 NXAST_RESUBMIT_TABLE = 14
 
 NX_ACTION_RESUBMIT_PACK_STR = '!HHIHHB3x'
@@ -249,6 +250,10 @@ NX_ACTION_SET_TUNNEL64_PACK_STR = '!HHIH6xQ'
 NX_ACTION_SET_TUNNEL64_SIZE = 24
 assert calcsize(NX_ACTION_SET_TUNNEL64_PACK_STR) == NX_ACTION_SET_TUNNEL64_SIZE
 
+NX_ACTION_MULTIPATH_PACK_STR = '!HHIHHH2xHHI2xHI'
+NX_ACTION_MULTIPATH_SIZE = 32
+assert calcsize(NX_ACTION_MULTIPATH_PACK_STR) == NX_ACTION_MULTIPATH_SIZE
+
 NX_ACTION_HEADER_PACK_STR = '!H'
 NX_ACTION_HEADER_SIZE = 10
 assert (OFP_ACTION_VENDOR_HEADER_SIZE +
@@ -566,3 +571,13 @@ NXM_NX_TUN_ID_W = nxm_header_w(0x0001, 16, 8)
 NXM_NX_IP_ECN = nxm_header(0x0001, 28, 1)
 
 NXM_HEADER_PACK_STRING = '!I'
+
+# enum nx_hash_fields
+NX_HASH_FIELDS_ETH_SRC = 0
+NX_HASH_FIELDS_SYMMETRIC_L4 = 1
+
+# enum nx_mp_algorithm
+NX_MP_ALG_MODULO_N = 0
+NX_MP_ALG_HASH_THRESHOLD = 1
+NX_MP_ALG_HRW = 2
+NX_MP_ALG_ITER_HASH = 3
diff --git a/ryu/ofproto/ofproto_v1_0_parser.py 
b/ryu/ofproto/ofproto_v1_0_parser.py
index 8ea3321..069354b 100644
--- a/ryu/ofproto/ofproto_v1_0_parser.py
+++ b/ryu/ofproto/ofproto_v1_0_parser.py
@@ -420,6 +420,27 @@ class NXActionSetTunnel64(NXActionHeader):
         msg_pack_into(ofproto_v1_0.NX_ACTION_SET_TUNNEL64_PACK_STR, buf,
                       offset, self.type, self.len, self.vendor, self.subtype,
                       self.tun_id)
+        
+
+class NXActionMultipath(NXActionHeader):
+    def __init__(self, fields, basis, algorithm, max_link, arg,
+                 ofs_nbits, dst):
+        super(NXActionMultipath, self).__init__(
+            ofproto_v1_0.NXAST_MULTIPATH,
+            ofproto_v1_0.NX_ACTION_MULTIPATH_SIZE)
+        self.fields = fields
+        self.basis = basis
+        self.algorithm = algorithm
+        self.max_link = max_link
+        self.arg = arg
+        self.ofs_nbits = ofs_nbits
+        self.dst = dst
+
+    def serialize(self, buf, offset):
+        msg_pack_into(ofproto_v1_0.NX_ACTION_MULTIPATH_PACK_STR, buf,
+                      offset, self.type, self.len, self.vendor, self.subtype,
+                      self.fields, self.basis, self.algorithm, self.max_link,
+                      self.arg, self.ofs_nbits, self.dst)
 
 
 class OFPDescStats(collections.namedtuple('OFPDescStats',
-- 
1.7.2.5


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to