I think this is an annoyance caused by the fact that things can be imported by multiple names...
import pox.openflow.libopenflow_01 as of1 import openflow.libopenflow_01 as of2 assert of1.ofp_match is of2.ofp_match assert of1 is of2 These asserts will fail. If both had imported the same name (both with or both without the leading "pox."), of1 and of2 would be the same module and the assertions would pass. But since the names are different, you get two copies of the module instead. The objects in them are all different (but the same ;) ). Long story short: the imports in POX all (hopefully) use the full name (including the leading "pox."), so you should do the same. -- Murphy On Oct 10, 2013, at 9:03 AM, Alison Chan <[email protected]> wrote: > Hello, > > When I start up pox with just the py module and try to concoct a flow > and push it manually, the assert isinstance(data, of.ofp_header) in > openflow.of_01.Connection.send() fails (but when I manually check > it.... it succeeds!). I'm using mininet and the latest carp (just > pulled yesterday). > > The following are my pox session and mininet command line. I'm running > mininet in the packaged vm, and pox on my Ubuntu 12.04 laptop. The > mininet topology I am using is here: > https://gist.github.com/alis0nc/6920762 > > Any help or ideas would be greatly appreciated. > > Ta, > Alison > > mininet@mininet-vm:~$ sudo mn --custom mininet/custom/stuff.py --topo > alison --controller=remote,ip=192.168.56.1,port=6633 > > [11:39:55] erinacity:~/Code/pox > alisonc $ ./pox.py py > POX 0.2.0 (carp) / Copyright 2011-2013 James McCauley, et al. > INFO:core:POX 0.2.0 (carp) is up. > Ready. > POX> INFO:openflow.of_01:[00-00-00-00-00-05 1] connected > > POX> > POX> > POX> > POX> import openflow.libopenflow_01 as of > POX> msg = of.ofp_flow_mod() > POX> msg.priority = 42 > POX> msg.match.in_port = 1 > POX> msg.actions.append(of.ofp_action_output(port = 2)) > POX> msg.actions.append(of.ofp_action_output(port = 3)) > POX> msg.actions.append(of.ofp_action_output(port = 4)) > POX> core.openflow.connections[5].send(msg) > Traceback (most recent call last): > File "<console>", line 1, in <module> > File "/home/alisonc/Code/pox/pox/openflow/of_01.py", line 691, in send > assert isinstance(data, of.ofp_header) > AssertionError > POX> core.openflow > <pox.openflow.OpenFlowNexus object at 0x17399d0> > POX> core.openflow.connections[5] > <pox.openflow.of_01.Connection object at 0x16db790> > POX> type(msg) > <class 'openflow.libopenflow_01.ofp_flow_mod'> > POX> isinstance(msg, of.ofp_header) > True > POX> > > > -- > Alison Chan > [email protected] > Kettering University > Research Assistant, Department of Computer Science > +1 909 278 7753 > > Sedulously eschew obfuscatory hyperverbosity or prolixity.
