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.

Reply via email to