Hi,

On 2016年12月21日 05:51, Garegin Grigoryan wrote:
> Thanks a lot!
> 
> My other question is: how to add the application data to the udp packet? 
> 
> Here's my code. It doesn't work, the receiver doesn't read the payload.
>     def send_udp_reply(self, dpid, datapath, eth, ipv4_pkt, udp_segment, 
> out_port, message): 
> ofproto = datapath.ofproto
>         total_length = len(message) + 8
>         print "UDP Length", total_length
> 
>         e = ethernet.ethernet(dst=eth.src, src=CONTROLLER_MAC, 
> ethertype=ether.ETH_TYPE_IP)
>         i = ipv4.ipv4(dst=ipv4_pkt.src, src=ipv4_pkt.dst, proto=17)
>         u = udp.udp(src_port=udp_segment.dst_port, 
> dst_port=udp_segment.src_port, total_length=total_length)
>         p = packet.Packet()
>         p.add_protocol(e)
>         p.add_protocol(i)
>         p.add_protocol(u)
>         p.serialize()
> 
>         actions = [datapath.ofproto_parser.OFPActionOutput(out_port)]
>         data = p.data
>         data += message  
> 
>          out = datapath.ofproto_parser.OFPPacketOut(datapath=datapath, 
> buffer_id=0xffffffff,
>             in_port=datapath.ofproto.OFPP_CONTROLLER,
>             actions=actions, data=data)
>          datapath.send_msg(out)

"message" contains your application data, right?
Then, please append that data into the end of packet.Packet() instance.
e.g.)
        p = packet.Packet()
        p.add_protocol(e)
        p.add_protocol(i)
        p.add_protocol(u)
        p.add_protocol(message)  # append your data(binary type)
        p.serialize()

Thanks,
Iwase

> 
> 
> 
> On Tue, Dec 20, 2016 at 1:37 AM, Iwase Yusuke <iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com>> wrote:
> 
>     Hi,
> 
>     As you said, udp_pkt is a instance of UDP Header parser class.
>     For getting the payload of UDP, please check pkt.protocols member, first.
>     It should be contains each protocol header instance and payload data 
> (might be binary type).
>     e.g.)
>      pkt.protocols might contain [ethernet(...), ipv4(..), udp(..), b'...']
> 
>     Thanks,
>     Iwase
> 
>     On 2016年12月20日 15:26, Garegin Grigoryan wrote:
>     > I think I can do it this way, because udp headers is 8 bytes:
>     >            udp_pointer = len(msg.data) - udp_segment.total_length + 8
>     >            print msg.data[udp_pointer:]
>     >
>     >
>     >
>     >
>     > On Tue, Dec 20, 2016 at 1:08 AM, Garegin Grigoryan 
> <grig...@clarkson.edu <mailto:grig...@clarkson.edu> 
> <mailto:grig...@clarkson.edu <mailto:grig...@clarkson.edu>>> wrote:
>     >
>     >     Thanks!
>     >
>     >     But udp_pkt contains only the header, as I understand it.
>     >     I want to get the application data from the udp_segment and nothing 
> else (no headers).
>     >
>     >     On Tue, Dec 20, 2016 at 1:05 AM, Iwase Yusuke 
> <iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>> wrote:
>     >
>     >         Hi,
>     >
>     >
>     >         On 2016年12月20日 14:18, Garegin Grigoryan wrote:
>     >         > Hi,
>     >         >
>     >         > What is the best way to parse UDP segments in ryu controller? 
> I want to see the application data.
>     >         > I've tried this but it doesn't work:
>     >         >
>     >         > udp_parser = stream_parser.StreamParser()
>     >         > print udp_parser.parse(msg.data)
>     >
>     >         Does "msg.data" mean the packet data of PacketIn message?
>     >
>     >         The packet data of PacketIn message is the ethernet frame.
>     >         So you can use packet.Packet() instead.
>     >
>     >         e.g.)
>     >         from ryu.lib.packet import packet
>     >         from ryu.lib.packet import ethernet
>     >         from ryu.lib.packet import udp
>     >         ...(snip)
>     >
>     >             pkt = packet.Packet(msg.data)
>     >             udp_pkt = pkt.get_protocol(udp.udp)
>     >             if udp_pkt:
>     >                 # do something
>     >         ...(snip)
>     >
>     >
>     >         Thanks,
>     >         Iwase
>     >
>     >
>     >         >
>     >         > TypeError: Can't instantiate abstract class StreamParser with 
> abstract methods try_parse
>     >         >
>     >         >
>     >         > --
>     >         > Sincerely,
>     >         > Garegin Grigoryan
>     >         >
>     >         >
>     >         > 
> ------------------------------------------------------------------------------
>     >         > Developer Access Program for Intel Xeon Phi Processors
>     >         > Access to Intel Xeon Phi processor-based developer platforms.
>     >         > With one year of Intel Parallel Studio XE.
>     >         > Training and support from Colfax.
>     >         > Order your platform today.http://sdm.link/intel
>     >         >
>     >         >
>     >         >
>     >         > _______________________________________________
>     >         > Ryu-devel mailing list
>     >         > Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>
>     >         > https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
>     >         >
>     >
>     >
>     >
>     >
>     >     --
>     >     Sincerely,
>     >     Garegin Grigoryan
>     >
>     >
>     >
>     >
>     > --
>     > Sincerely,
>     > Garegin Grigoryan
>     >
>     >
>     > 
> ------------------------------------------------------------------------------
>     > Developer Access Program for Intel Xeon Phi Processors
>     > Access to Intel Xeon Phi processor-based developer platforms.
>     > With one year of Intel Parallel Studio XE.
>     > Training and support from Colfax.
>     > Order your platform today.http://sdm.link/intel
>     >
>     >
>     >
>     > _______________________________________________
>     > Ryu-devel mailing list
>     > Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.sourceforge.net>
>     > https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>     >
> 
> 
> 
> 
> -- 
> Sincerely,
> Garegin Grigoryan
> 
> 
> ------------------------------------------------------------------------------
> Developer Access Program for Intel Xeon Phi Processors
> Access to Intel Xeon Phi processor-based developer platforms.
> With one year of Intel Parallel Studio XE.
> Training and support from Colfax.
> Order your platform today.http://sdm.link/intel
> 
> 
> 
> _______________________________________________
> Ryu-devel mailing list
> Ryu-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
> 

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/intel
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to