2013/4/19 Isaku Yamahata <[email protected]>

> On Fri, Apr 19, 2013 at 12:56:53AM +0900, Isaku Yamahata wrote:
> > On Thu, Apr 18, 2013 at 12:45:47PM +0900, Yoshihiro Kaneko wrote:
> > >     @@ -2842,3 +2852,4 @@ class OFPSetAsync(MsgBase):
> > >               msg.flow_removed_mask) = struct.unpack_from(
> > >                   ofproto_v1_3.OFP_ASYNC_CONFIG_PACK_STR, msg.buf,
> > >                   ofproto_v1_3.OFP_HEADER_SIZE)
> > >     +        return msg
> > >
> > >
> > > Why OFPSetAsync does not have a serializer though it is a request
> message?
> >
> > You're right. It should have serializer instead of parser.
>
> Something like this? on top of the previous patch.
>
> commit 68f848f2604a2f4f15dea5da92fa1311b2920635
> Author: Isaku Yamahata <[email protected]>
> Date:   Thu Apr 18 09:10:31 2013 -0700
>
>     ofproto v1.3: OFPSetConfig should have serializer, not parser
>
>     Because the message is sent by controller to OF switch.
>
>     Signed-off-by: Isaku Yamahata <[email protected]>
>
> diff --git a/ryu/ofproto/ofproto_v1_3_parser.py
> b/ryu/ofproto/ofproto_v1_3_parser.py
> index f2580c7..b1622dd 100644
> --- a/ryu/ofproto/ofproto_v1_3_parser.py
> +++ b/ryu/ofproto/ofproto_v1_3_parser.py
> @@ -2834,22 +2834,16 @@ class OFPGetAsyncReply(MsgBase):
>          return msg
>
>
> -@_register_parser
>  @_set_msg_type(ofproto_v1_3.OFPT_SET_ASYNC)
>  class OFPSetAsync(MsgBase):
> -    def __init__(self, datapath):
> +    def __init__(self, datapath,
> +                 packet_in_mask, port_status_mask, flow_removed_mask):
>          super(OFPSetAsync, self).__init__(datapath)
> -        self.packet_in_mask = None
> -        self.port_status_mask = None
> -        self.flow_removed_mask = None
> -
> -    @classmethod
> -    def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
> -        msg = super(OFPSetAsync, cls).parser(datapath, version,
> -                                             msg_type, msg_len,
> -                                             xid, buf)
> -        (msg.packet_in_mask, msg.port_status_mask,
> -         msg.flow_removed_mask) = struct.unpack_from(
> -             ofproto_v1_3.OFP_ASYNC_CONFIG_PACK_STR, msg.buf,
> -             ofproto_v1_3.OFP_HEADER_SIZE)
> -        return msg
> +        self.packet_in_mask = packet_in_mask
> +        self.port_status_mask = port_status_mask
> +        self.flow_removed_mask = flow_removed_mask
> +
> +    def _serialize_body(self, buf, offset):
> +        msg_pack_into(ofproto_v1_3.OFP_AYNC_CONFIG_PACK_STR, buf, offset,
> +                      self.packet_in_mask, self.port_status_mask,
> +                      self.flow_removed_mask)
>
>
I think that _serialize_body() should be:

-    def _serialize_body(self, buf, offset):
-        msg_pack_into(ofproto_v1_3.OFP_AYNC_CONFIG_PACK_STR, buf, offset,
+    def _serialize_body(self):
+        msg_pack_into(ofproto_v1_3.OFP_ASYNC_CONFIG_PACK_STR, self.buf,
+                      ofproto_v1_3.OFP_HEADER_SIZE,
                       self.packet_in_mask, self.port_status_mask,
                       self.flow_removed_mask)


>
>
> --
> yamahata
>
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to