Please see "What are these log messages from the packet subsystem?" in the POX FAQ.
-- Murphy On Aug 19, 2014, at 1:29 PM, 张伟 <zhang...@126.com> wrote: > Yes, just now I change the event to like that > def _handle_PacketIn (event): > packet = event.parsed > msg = of.ofp_flow_mod() > msg.match = of.ofp_match.from_packet(packet, event.port); > msg.buffer_id = event.ofp.buffer_id > msg.idle_timeout = 10 > msg.idle_timeout = 30 > msg.actions.append(of.ofp_action_output(port = 1)) > msg.data = event.ofp > event.connection.send(msg) > > def launch (): > ''' > Starting the Firewall module > ''' > core.openflow.addListenerByName("PacketIn", _handle_PacketIn) > log.info("test miss flow") > > It seems it can work. However, pox still gives this warning: > INFO:packet:(udp parse) warning UDP packet data shorter than UDP len: 96 < 962 > INFO:packet:(udp parse) warning UDP packet data shorter than UDP len: 96 < 962 > > Can you give some guidance, why it has this warning. > > This is my packet_in message > void get_header(struct request *req, struct ofp_packet_in *pi) > { > char *header; > struct rte_mbuf *pkt = req->pkt; > header = (char *)(rte_pktmbuf_mtod(pkt, unsigned char *)); > memcpy(pi->data, header, OFP_DEFAULT_MISS_SEND_LEN); > } > > static int make_packet_in(int xid, int buffer_id, char *buf) > { > struct ofp_packet_in *pi; > struct request *req; > int len; > pi = (struct ofp_packet_in *)buf; > pi->header.version = OFP_VERSION; > pi->header.type = OFPT_PACKET_IN; > pi->header.xid = htonl(xid); > req = (struct request *)ring_peek(&to_channel, buffer_id); > if (req == NULL) { > fprintf(stderr, "req NULL pointer.\n"); > return 0; > } > else { > pi->in_port = req->in_port; > pi->buffer_id = htonl(req->buffer_id); > pi->reason = OFPR_NO_MATCH; > pi->pad = 0; > get_header(req, pi); > } > > len = sizeof(*pi) + OFP_DEFAULT_MISS_SEND_LEN; > pi->header.length = htons(len); > pi->total_len = htons(len); > return len; > } > > Whehter the len is not correct? > > > > > > > At 2014-08-20 04:10:54, "Murphy McCauley" <murphy.mccau...@gmail.com> wrote: > >It seems like you want to be listening to the PacketIn event, not the > >ConnectionUp event. > > > >-- Murphy > > > >On Aug 19, 2014, at 12:35 PM, zhang...@126.com wrote: > > > >> Hi all, > >> > >> I want to manually set a flow for test. The switch sends a packet_in > >> message to pox controller. > >> This is the code: > >> from pox.core import core > >> import pox.openflow.libopenflow_01 as of > >> from pox.lib.revent import * > >> from pox.lib.addresses import IPAddr, EthAddr > >> from collections import namedtuple > >> from pox.lib.util import str_to_bool, dpid_to_str > >> from pox.lib.packet.ipv4 import ipv4 > >> from pox.lib.packet.ethernet import ethernet > >> from pox.lib.packet.tcp import * > >> from pox.lib.packet.udp import * > >> import os > >> > >> log = core.getLogger() > >> > >> class Test_output_port (EventMixin): > >> def __init__ (self): > >> self.listenTo(core.openflow) > >> > >> def _handle_ConnectionUp (self, event): > >> packet = event.parsed > >> msg = of.ofp_flow_mod() > >> msg.match = of.ofp_match.from_packet(packet, event.port); > >> msg.buffer_id = event.ofp.buffer_id > >> msg.idle_timeout = 10 > >> msg.idle_timeout = 30 > >> msg.actions.append(of.ofp_action_output(port = 1)) > >> msg.data = event.ofp > >> event.connection.send(msg), > >> > >> def launch (): > >> ''' > >> Starting the Firewall module > >> ''' > >> core.registerNew(Test_output_port) > >> > >> When test, it shows the following error. If anybody knows the reason, and > >> can give some help, I will appreciate. > >> POX 0.2.0 (carp) / Copyright 2011-2013 James McCauley, et al. > >> DEBUG:core:POX 0.2.0 (carp) going up... > >> DEBUG:core:Running on CPython (2.7.3/Sep 26 2013 20:03:06) > >> DEBUG:core:Platform is > >> Linux-3.2.0-58-generic-x86_64-with-Ubuntu-12.04-precise > >> INFO:core:POX 0.2.0 (carp) is up. > >> DEBUG:openflow.of_01:Listening on 0.0.0.0:6633 > >> WARNING:openflow.of_01:<class 'pox.openflow.PacketIn'> raised on dummy > >> OpenFlow nexus > >> INFO:openflow.of_01:[00-00-00-00-00-01 1] connected > >> ERROR:core:Exception while handling OpenFlowNexus!ConnectionUp... > >> Traceback (most recent call last): > >> File "/home/guest/controller/pox/pox/lib/revent/revent.py", line 231, in > >> raiseEventNoErrors > >> return self.raiseEvent(event, *args, **kw) > >> File "/home/guest/controller/pox/pox/lib/revent/revent.py", line 278, in > >> raiseEvent > >> rv = event._invoke(handler, *args, **kw) > >> File "/home/guest/controller/pox/pox/lib/revent/revent.py", line 156, in > >> _invoke > >> return handler(self, *args, **kw) > >> File "/home/guest/controller/pox/pox/misc/test_flow_miss.py", line 25, in > >> _handle_ConnectionUp > >> packet = event.parsed > >> AttributeError: 'ConnectionUp' object has no attribute 'parsed' > >