Hi,
I have a python component and want to create an udp packet in the controller and send it out via "self.send_openflow_packet(dpid, packet.tostring(), outport)"

First of all: a small bugfix is needed:
nox/src/nox/lib/packet/packet_base.py needs an "import array". Without that, the set_payload function raises an exception as it does not find array.array.

Now I create my packet the following way:

from nox.lib.packet.udp                import udp
from nox.lib.packet.ipv4               import ipv4
from nox.lib.packet.ethernet        import ethernet

udp_packet = udp()
udp_packet.srcport = 12345
udp_packet.dstport = 4711
rand = random.random()
udp_packet.set_payload(str(rand))
udp_packet.csum = udp_packet.checksum()

ipv4_packet = ipv4()
ipv4_packet.set_payload(udp_packet)
ipv4_packet.srcip = ipstr_to_int(CONTROLLER_IP)
ipv4_packet.dstip = ipstr_to_int(CONTROLLER_IP)
ipv4_packet.csum = ipv4_packet.checksum()

eth_packet = ethernet()
eth_packet.src = CONTROLLER_MAC
eth_packet.dst = CONTROLLER_MAC
eth_packet.set_payload(ipv4_packet)
eth_packet.type = ethernet.IP_TYPE

and send this then via self.send_openflow_packet

The packet goes out the link and is forwarded (via a flow on another switch) back to the controller where I can see it in my packet_in handler. The only problem is: the packet only consists of the link layer (ethernet type) header and the ipv4 type header. The payload of the ipv4 packet (which should be my udp header and the payload) is completely missing. From the ipv4 class, the ipv4.next is None and I can also verify with wireshark that the packet that is transmitted from the controller to the switch encapsuled in an OpenFlow packet, consists only of the ethernet header and the ipv4 header.
Am I missing something? Where is this going wrong?
I tried to look at the send_openflow_packet function. It seems to somehow call self.ctxt.send_openflow_packet_port in nox/src/nox/lib/core.py which I could not find?!
I am not into Swig and all that stuff, so I am stuck here :(

Any help is greatly appreciated!


Best regards

Bernd

_______________________________________________
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev

Reply via email to