Thanks a lot.
I have updated the pox, this version <https://github.com/noxrepo/pox>. But
now I am having a bigger problem. When I start controller(

./pox.py samples.pretty_log forwarding.l2_learning ) I cannot run any
script, it works and install rules into switches.
But when I am trying to execute something(import myscript.py) it does
not do anything.

Nibble.



On Wed, Jun 26, 2013 at 4:55 PM, Peter Peresini <[email protected]>wrote:

> Hi Murphy,
>  over the course of time I see a lot of "using old version/branch of POX"
> replies. Maybe it could be solved by adding
> log.warning("Using old git branch, for better support try updating to
>  xyz")
> to the pox.core of all old branches. What do you thing?
>
>
> On Wed, Jun 26, 2013 at 1:33 PM, Murphy McCauley <
> [email protected]> wrote:
>
>> You're using a very old version/branch of POX.  See the manual for more
>> info on this.  You should really update to at least the current version of
>> the betta branch.
>>
>> Sidenote: it should be a simple modification to remove the dependency on
>> of_json -- it's only used to print the stuff out in JSON instead of its
>> usual (more verbose) string formatting.
>>
>> -- Murphy
>>
>> On Jun 26, 2013, at 8:23 AM, nibble nibble wrote:
>>
>> Thanks,
>>
>> I want to query switches every few seconds. and I found the script to get
>> the statics from 
>> here<https://github.com/hip2b2/poxstuff/blob/master/flow_stats.py> and
>> because I did not have of_json.py, I got it from 
>> here<https://github.com/CPqD/RouteFlow/blob/master/pox/pox/openflow/of_json.py>.
>>  Now I am getting the error:
>>
>> from pox.openflow.of_json import *
>>
>>   File "/home/mininet/pox/pox/openflow/of_json.py", line 25, in <module>
>>
>>     from pox.lib.util import fields_of,is_scalar
>>
>> ImportError: cannot import name fields_of
>>
>>
>>
>> Which I do not have any idea what is wrong with pox?
>>
>> Thanks,
>> Nibble
>>
>>
>> On Tue, Jun 25, 2013 at 6:54 PM, Murphy McCauley <
>> [email protected]> wrote:
>>
>>>
>>> On Jun 25, 2013, at 3:28 PM, nibble nibble wrote:
>>>
>>> Hi,
>>>
>>> I want to send a message from Pox controller to all the switches and ask
>>> them to send back their flow table's Statics. I found a script to do it.
>>>
>>> from pox.core import core
>>>>
>>>> #from pox.lib.util import dpid_to_str
>>>>
>>>> log = core.getLogger()
>>>>
>>>> class MyComponent (object):
>>>>   def __init__ (self):
>>>>     core.openflow.addListeners(self)
>>>>
>>>>   def _handle_ConnectionUp (self, event):
>>>>     log.debug("Switch %s has come up.", dpid_to_str(event.dpid))
>>>>
>>>> def launch ():
>>>>   core.registerNew(MyComponent)
>>>> #  core.registerNew(openlow_connections)
>>>>
>>>
>>> What's the point of the MyComponent class here?  It doesn't do anything
>>> but print out when switches connect (which the OpenFlow component already
>>> does).
>>>
>>> launch()
>>>>
>>>
>>> You shouldn't call launch() directly.  It will be called automatically
>>> when POX loads the component.
>>>
>>> # Listen for flow stats
>>>> core.openflow.addListenerByName("FlowStatsReceived", handle_flow_stats)
>>>>
>>>> # Now actually request flow stats from all switches
>>>> core.registerNew(core.openflow._connections.values())
>>>> for con in core.openflow._connections.keys(): # make this
>>>> _connections.keys() for pre-betta
>>>>     con.send(of.ofp_stats_request(body=of.ofp_flow_stats_request()))
>>>>
>>>
>>> The example you found from the POX manual wiki is for running at the
>>> interactive prompt (with the "py" component), not for direct inclusion in a
>>> component.  The way you have it here will try to execute it when the module
>>> is loaded.  Even if this worked (which I won't swear to), it would be
>>> useless because no switches will have connected yet.  When do you want to
>>> query switches?  When they connect?  Every few seconds?  At some other
>>> time?  You need to figure that out and run this code at the correct time
>>> (e.g., in response to some event).
>>>
>>> But I am getting the following error:
>>>
>>> core.registerNew(core.openflow._connections.values())
>>>>
>>>
>>> It appears you or someone else added this line to the example code from
>>> the wiki.  It's causing an exception because it doesn't make any sense.
>>>  core.registerNew() creates a new instance of a class and registers it on
>>> core.  core.openflow._connections.values() isn't a class, and you
>>> wouldn't want to register it on core.
>>>
>>>
>>> Try looking at the "Statistics Collector Example" on the POX wiki in the
>>> "Third-Party" section.  It queries connected switches every few seconds.
>>>
>>> -- Murphy
>>>
>>
>>
>>
>

Reply via email to