On Sun, May 13, 2012 at 09:03:01PM +0900, FUJITA Tomonori wrote:
> Signed-off-by: FUJITA Tomonori <[email protected]>
> ---
>  ryu/ofproto/ofproto_v1_0.py        |    5 +++++
>  ryu/ofproto/ofproto_v1_0_parser.py |   36 
> ++++++++++++++++++++++++++++++++++++
>  2 files changed, 41 insertions(+), 0 deletions(-)
> 
> diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py
> index 90bfdf4..b3c9c95 100644
> --- a/ryu/ofproto/ofproto_v1_0.py
> +++ b/ryu/ofproto/ofproto_v1_0.py
> @@ -238,6 +238,7 @@ NXAST_REG_MOVE = 6
>  NXAST_REG_LOAD = 7
>  NXAST_SET_TUNNEL64 = 9
>  NXAST_MULTIPATH = 10
> +NXAST_BUNDLE = 12
>  NXAST_BUNDLE_LOAD = 13
>  NXAST_RESUBMIT_TABLE = 14
>  
> @@ -265,6 +266,10 @@ NX_ACTION_MULTIPATH_PACK_STR = '!HHIHHH2xHHI2xHI'
>  NX_ACTION_MULTIPATH_SIZE = 32
>  assert calcsize(NX_ACTION_MULTIPATH_PACK_STR) == NX_ACTION_MULTIPATH_SIZE
>  
> +NX_ACTION_BUNDLE_PACK_STR = '!HHIHHHHIHHI4x'
> +NX_ACTION_BUNDLE_SIZE = 32
> +assert calcsize(NX_ACTION_BUNDLE_PACK_STR) == NX_ACTION_BUNDLE_SIZE
> +
>  NX_ACTION_BUNDLE_LOAD_PACK_STR = '!HHIHHHHIHHI4x'
>  NX_ACTION_BUNDLE_LOAD_SIZE = 32
>  assert calcsize(NX_ACTION_BUNDLE_LOAD_PACK_STR) == NX_ACTION_BUNDLE_LOAD_SIZE
> diff --git a/ryu/ofproto/ofproto_v1_0_parser.py 
> b/ryu/ofproto/ofproto_v1_0_parser.py
> index 651275c..c0c9b65 100644
> --- a/ryu/ofproto/ofproto_v1_0_parser.py
> +++ b/ryu/ofproto/ofproto_v1_0_parser.py
> @@ -580,6 +580,42 @@ class NXActionMultipath(NXActionHeader):
>                     dst)
>  
>  
> [email protected]_nx_action_subtype(ofproto_v1_0.NXAST_BUNDLE)
> +class NXActionBundle(NXActionHeader):
> +    def __init__(self, algorithm, fields, basis, slave_type, n_slaves,
> +                 ofs_nbits, dst, slaves):
> +        super(NXActionBundle, self).__init__(
> +            ofproto_v1_0.NXAST_BUNDLE,
> +            ofproto_v1_0.NX_ACTION_BUNDLE_SIZE)
> +        self.algorithm = algorithm
> +        self.fields = fields
> +        self.basis = basis
> +        self.slave_type = slave_type
> +        self.n_slaves = n_slaves
> +        self.ofs_nbits = ofs_nbits
> +        self.dst = dst
> +        self.slaves = slaves
> +
> +    def serialize(self, buf, offset):
> +        slave_offset = offset + ofproto_v1_0.NX_ACTION_BUNDLE_SIZE
> +
> +        for s in self.slaves:
> +            msg_pack_into('!H', buf, slave_offset, s)
> +            slave_offset += 2
> +            self.len += 2
> +
> +        pad_len = self.len % 8
> +        if pad_len != 0:
> +            self.len += pad_len
> +            msg_pack_into('%dx' % pad_len, buf, slave_offset)
> +
> +        msg_pack_into(ofproto_v1_0.NX_ACTION_BUNDLE_PACK_STR, buf,
> +                      offset, self.type, self.len, self.vendor, self.subtype,
> +                      self.algorithm, self.fields, self.basis,
> +                      self.slave_type, self.n_slaves,
> +                      self.ofs_nbits, self.dst)
> +
> +
>  @NXActionHeader.register_nx_action_subtype(ofproto_v1_0.NXAST_BUNDLE_LOAD)
>  class NXActionBundleLoad(NXActionHeader):
>      def __init__(self, algorithm, fields, basis, slave_type, n_slaves,

Hi Fujita-san,

as the NXAST_BUNDLE and NXAST_BUNDLE_LOAD actions share the same
wire-format I wonder if it is desirable for them to share the same
PACK_STRING or even have a shared parent class.

As it seems that Ryu only needs parsing for NXAST_BUNDLE_LOAD and
serlialisation for NXAST_BUNDLE, I don't imagine this would lead to much if
any code reduction. But it may make it more obvious that the wire format is
the same.

------------------------------------------------------------------------------
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