Hi, thank you for reporting this. Please use ryu-devel@lists.sourceforge.net. Added it to CC:
ipv6 value is supported. > match.set_ipv6_src(ipsrc) This line caught my eyes. What type is ipsrc? The serializer expects the value to be '!8H'. Not bytearray/str of 16byte length. Nor single integer. I guess that ipsrc is different from what the serializer expects. So conversion is needed before passing set_ipv6_src(). (Clean up is going on right now.) from ofproto_v1_3_parser.py, > class MTIPv6Src(MTIPv6, OFPMatchField): > pack_str = '!8H' thanks, On Thu, Jul 11, 2013 at 09:41:37PM +0000, Claiborne, Matt wrote: > I am seeing the following error when trying to send a flow mod with a match > rule for ipv6 source or destination addresses. IPv4 flow mods work > correctly. > Are there any other options needed in RYU to send a flow mod with ipv6 rules? > Any help/suggestions would be greatly appreciated. > > > > [0x1000082e5f694c00] ('143.0.1.211', 60641): ADD FLOW: > > hub: uncaught exception: Traceback (most recent call last): > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/lib/ > hub.py", line 48, in _launch > > func(*args, **kwargs) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/base/ > app_manager.py", line 110, in _event_loop > > handler(ev) > > File "/root/app/3base.py", line 602, in packet_in_handler > > self.send_flow_mod(msg.datapath, match, actions, inst, 10, 0, cookie) > > File "/root/app/3base.py", line 971, in send_flow_mod > > datapath.send_msg(req) > > File > "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/controller > /controller.py", line 220, in send_msg > > msg.serialize() > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_parser.py", line 145, in serialize > > self._serialize_body() > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_v1_3_parser.py", line 1488, in _serialize_body > > match_len = self.match.serialize(self.buf, offset) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_v1_3_parser.py", line 570, in serialize > > f.serialize(buf, field_offset) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_v1_3_parser.py", line 1198, in serialize > > self.putv6(buf, offset, self.value, self.mask) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_v1_3_parser.py", line 913, in putv6 > > self._putv6(buf, offset + self.length, value) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_v1_3_parser.py", line 908, in _putv6 > > *value) > > File "/usr/local/lib/python2.6/dist-packages/ryu-2.1-py2.6.egg/ryu/ofproto/ > ofproto_parser.py", line 154, in msg_pack_into > > buf += struct.pack(fmt, *args) > > error: pack requires exactly 8 arguments > > > > > > Code: > > ? > > @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) > > def packet_in_handler(self, ev): > > ? > > if (protocol_name == > "ipv6"): > > print > (vars(p)) > > ipsrc = p.src > > ipdst = p.dst > > ? > > > > if (v_ethertype == 0x86DD): > > if dst in > self.mac_to_port[dp]: > > out_port = > self.mac_to_port[dp][dst] > > else: > > out_port = > ofp.OFPP_FLOOD > > > > self.send_packet_out > (msg.datapath, 0xffffffff, in_port, ev.msg.data, out_port) > > > > match = ofp_parser.OFPMatch() > > match.set_dl_type(v_ethertype) > > match.set_ipv6_src(ipsrc) > > match.set_in_port(in_port) > > match.set_vlan_vid(vid) > > > > actions = > [ofp_parser.OFPActionOutput(out_port, 0)] > > inst = > [ofp_parser.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS, actions)] > > > > cookie = in_port ^ dp.id ^ > out_port > > self.send_flow_mod > (msg.datapath, match, actions, inst, 10, 0, cookie) > > > > ? > > def send_flow_mod(self, datapath, match, actions, inst, > hardtime, idletime, cookie): > > self.printme("ADD FLOW:", datapath) > > > > if self.ipControlTableMode: > > tableID = 50 > > else: > > tableID = 100 > > > > ofp = datapath.ofproto > > ofp_parser = datapath.ofproto_parser > > req = ofp_parser.OFPFlowMod(datapath=datapath, > > cookie=cookie, cookie_mask=0, > > table_id=tableID, command= > ofp.OFPFC_ADD, > > idle_timeout=idletime, > hard_timeout=hardtime, > > priority=32768, > > buffer_id=0xffffffff, > > out_port=ofp.OFPP_ANY, > > out_group=ofp.OFPG_ANY, > > flags=0, > > match=match, > instructions=inst) > > datapath.send_msg(req) > > > > > > > > Thanks, > > --Matt > > > -- yamahata ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel