<div dir="ltr"><div>On 8 November 2013 20:35, Murphy McCauley <span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span> wrote:<br></div><div class="gmail_extra">
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div><div class="im"><div><br></div></div><div>I actually would have thought the code would stop it from registering multiple times using the same name.  Though it's possible there's also something that needs adjusting with dart's new on-demand loading of OpenFlow.  Or... are you specifying "of_01" in l2sw?  More generally, are you directly calling of_01's launch() from l2sw?  If so, can you post the code where you do?</div>
<div class="im"><div><br></div></div></div></div></blockquote></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">Actually no, it is almost the same code as in tutorial. Inside l2sw I add usual listener for ConnectionUp event:</font></div></div></blockquote><div>
 </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><span style="color:rgb(34,34,34)">def launch ():</span></div>


<p style="margin:0px">  def start_controller (event):<br></p>
<p style="margin:0px">    <a href="http://log.info">log.info</a>("Controlling conID=%s, dpid=%i" %(<a href="http://event.connection.ID">event.connection.ID</a>, event.dpid))</p>
<p style="margin:0px">    TestController(event.connection)</p>
<p style="margin:0px">  core.openflow.addListenerByName("ConnectionUp", start_controller)</p></div></blockquote>
</div></div><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div class="im"><font color="#000000">which then launch usual L2 Controller class:</font></div></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><font color="#000000"> </font></div></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">class TestController (object):</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><p style="margin:0px"><font color="#000000">  def __init__ (self, connection):</font></p></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><p style="margin:0px"><font color="#000000">    self.connection = connection</font></p></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><p style="margin:0px"><font color="#000000">    connection.addListeners(self)</font></p></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><p style="margin:0px"><font color="#000000">    self.mac_to_port = {}</font></p></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><div><font color="#000000"><br>
</font></div></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><p style="margin:0px"><font color="#000000">and </font><span style="color:rgb(0,0,0)">TestController does</span><font color="#000000"> usual L2 switching.</font></p></div></blockquote></div>
</div><div class="gmail_extra"><div class="gmail_quote"><div><font color="#000000"> </font></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">It was also wondering for me, because, if I specify of_01 task in CLI twice with addresses which I need and with default 6633 ports it returns an error (but shouldn't because default interface specified in of_01's launch() is <a href="http://0.0.0.0:6633">0.0.0.0:6633</a>):</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font color="#000000"> </font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">mininet@mininet-vm:~/pox$ ./pox.py  --unthreaded_sh log.level --DEBUG openflow.of_01 --address=192.168.10.1 openflow.of_01 --address=192.168.20.1 l2sw</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">WARNING:core:Warning: Registered 'of_01' multipled times</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">WARNING:core:Warning: Registered 'of_01' multipled times</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:POX 0.3.0 (dart) going up...</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:openflow.of_01:Listening on <a href="http://192.168.10.1:6633">192.168.10.1:6633</a></font></div></div></blockquote></div></div></div><div class="gmail_extra">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div class="im"><font color="#000000">DEBUG:openflow.of_01:Listening on <a href="http://192.168.20.1:6633">192.168.20.1:6633</a></font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">ERROR:openflow.of_01:Error 98 while binding socket: Address already in use</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">ERROR:openflow.of_01: You may have another controller running.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">ERROR:openflow.of_01: Use openflow.of_01 --port=<port> to run POX on another port.</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font color="#000000"> </font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">and if I try to bind it with different ports, then it works, but it also </font><span style="color:rgb(0,0,0)">adds listener to interface </span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0)">by default</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,0,0)">specified in  </span><span style="color:rgb(0,0,0)">of_01's launch() (<a href="http://0.0.0.0:6633">0.0.0.0:6633</a>):</span></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> </div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">mininet@mininet-vm:~/pox$ ./pox.py  --unthreaded_sh log.level --DEBUG openflow.of_01 --address=192.168.10.1 --port=6634 openflow.of_01 --address=192.168.20.1 --port=6635 l2sw</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">WARNING:core:Warning: Registered 'of_01' multipled times</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">WARNING:core:Warning: Registered 'of_01' multipled times</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:POX 0.3.0 (dart) going up...</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:openflow.of_01:Listening on <a href="http://192.168.10.1:6634">192.168.10.1:6634</a></font></div></div></blockquote></div></div></div><div class="gmail_extra">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div class="im"><font color="#000000">DEBUG:openflow.of_01:Listening on <a href="http://192.168.20.1:6635">192.168.20.1:6635</a></font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#000000">DEBUG:openflow.of_01:Listening on <a href="http://0.0.0.0:6633">0.0.0.0:6633</a> </font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> </div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#000000">And without specified interfaces it binds listener to interface by default. That's why it seems, that one instance of of_01 task is launched directly from the core in this case: </font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> </div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#222222">mininet@mininet-vm:~/pox$ ./pox.py  --unthreaded_sh log.level --DEBUG l2sw</font></div></div></blockquote></div></div></div><div class="gmail_extra">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div class="im"><font color="#222222">POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#222222">DEBUG:core:POX 0.3.0 (dart) going up...</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#222222">DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><font color="#222222">DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</font></div>
</div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#222222">INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><font color="#222222">DEBUG:openflow.of_01:Listening on <a href="http://0.0.0.0:6633">0.0.0.0:6633</a></font></div></div></blockquote></div></div></div></blockquote><div class="gmail_extra">
<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">
<div class="im"><span style="color:rgb(34,34,34)"></span></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><br></div></div></blockquote><div><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div>Probably very slightly, in theory.  IIRC, though, the same task currently listens for connections and also handles established connections.  The way it figures out which are which would require a bit of adjusting to do cheaply when there are multiple listening connections, or listeners could be put in their own task.  Running multiple tasks seemed a bit easier, pretty elegant, and I didn't expect the performance difference to be dramatic.  But I didn't benchmark it or anything. :)</div>
<div><div class="h5"><div><br></div><blockquote type="cite"><div dir="ltr"><div><div><div>mininet@mininet-vm:~/pox$ ./pox.py --unthreaded_sh log.level --DEBUG openflow.of_01 --address=192.168.20.1 l2sw</div>
<div>POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</div><div>WARNING:core:Warning: Registered 'of_01' multipled times</div><div>DEBUG:core:POX 0.3.0 (dart) going up...</div><div>DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</div>

<div>DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</div><div>INFO:core:POX 0.3.0 (dart) is up.</div><div>DEBUG:openflow.of_01:Listening on <a href="http://192.168.20.1:6633/" target="_blank">192.168.20.1:6633</a></div>

<div>DEBUG:openflow.of_01:Listening on <a href="http://192.168.10.1:6633/" target="_blank">192.168.10.1:6633</a></div><div><div>INFO:openflow.of_01:[00-00-00-00-00-02 1] connected</div><div>INFO:l2sw:Controlling conID=1, dpid=2</div>
<div>
INFO:openflow.of_01:[00-00-00-00-00-01 2] connected</div><div>INFO:l2sw:Controlling conID=2, dpid=1</div></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 7 November 2013 20:56, Murphy McCauley <span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I think this MIGHT be as easy as making the launcher for of_01 multi-instance aware.  I don't have time to actually check, but here's a hacked version which at least doesn't crash immediately. :)  Maybe you can give it a shot?<br>


<br>
def launch (port=6633, address="0.0.0.0", name=None, __INSTANCE__=None):<br>
  if name is None:<br>
    basename = "of_01"<br>
    counter = 1<br>
    name = basename<br>
    while core.hasComponent(name):<br>
      counter += 1<br>
      name = "%s-%s" % (basename, counter)<br>
<br>
  if core.hasComponent(name):<br>
    log.warn("of_01 '%s' already started", name)<br>
    return None<br>
<br>
  global deferredSender<br>
  if not deferredSender:<br>
    deferredSender = DeferredSender()<br>
<br>
  if of._logger is None:<br>
    of._logger = core.getLogger('libopenflow_01')<br>
<br>
  l = OpenFlow_01_Task(port = int(port), address = address)<br>
  core.register(name, l)<br>
  return l<br>
<span><font color="#888888"><br>
-- Murphy<br>
</font></span><div><div><br>
On Nov 7, 2013, at 5:30 AM, Anton Matsiuk <<a href="mailto:anton.matsiuk@gmail.com" target="_blank">anton.matsiuk@gmail.com</a>> wrote:<br>
<br>
> Dear Murphy,<br>
><br>
> I am asking about possibility to bind POX Controller to listen for OF messages on multiple IP Interfaces. In my case, I need to bind it to 2 interfaces: listening from Open vSwitch through Loopback, and Hardware switch from external eth, but, of course, the quantity doesn't mater.<br>


><br>
> As I understood there is no possibility to run 2 instances of OpenFlow_01_Task concurrently (and to register them both on core) or to bind one instance of Task to 2 different IP's.<br>
><br>
> I know that it is possible to solve the problem by proxying through iptables, but I am looking for a possibility to do it with POX in a straightforward and scalable way.<br>
><br>
> --<br>
> Best regards,<br>
> Anton Matsiuk<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best regards,<div>Anton Matsiuk</div>
</div></div>
</blockquote></div></div></div><br></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best regards,<div>Anton Matsiuk</div>
</div></div>