<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Yeah, this was an outcome of the demand-loading of OpenFlow.  My testing didn't trigger the demand loading, so I didn't see it, but yours did.  The demand-loading code previously relied on of_01's launch() to prevent an additional launch, but I removed the check in there as part of making it possible to launch it multiple times (of course).  So I put that bit of logic into boot now.  I think that fixes things, and I've pushed the result to dart along with the start of a new section in the manual.<div><br></div><div>Thanks for the input!  Let me know if it doesn't work right. :)</div><div><br></div><div>-- Murphy<br><div><br><div><div>On Nov 11, 2013, at 1:03 AM, Anton Matsiuk <<a href="mailto:anton.matsiuk@gmail.com">anton.matsiuk@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div dir="ltr"><div>On 8 November 2013 20:35, Murphy McCauley<span class="Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span><span class="Apple-converted-space"> </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 class="im"><br></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"><br></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>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><div style="margin: 0px;">  def start_controller (event):<br></div><div style="margin: 0px;">   <span class="Apple-converted-space"> </span><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))</div><div style="margin: 0px;">    TestController(event.connection)</div><div style="margin: 0px;">  core.openflow.addListenerByName("ConnectionUp", start_controller)</div></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 class="im"><font>which then launch usual L2 Controller class:</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><font> </font></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>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;"><div style="margin: 0px;"><font>  def __init__ (self, connection):</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;"><div style="margin: 0px;"><font>    self.connection = connection</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;"><div style="margin: 0px;"><font>    connection.addListeners(self)</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;"><div style="margin: 0px;"><font>    self.mac_to_port = {}</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><font><br></font></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 style="margin: 0px;"><font>and </font><span style="">TestController does</span><font> usual L2 switching.</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><font> </font></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>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<span class="Apple-converted-space"> </span><a href="http://0.0.0.0:6633/">0.0.0.0:6633</a>):</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><font> </font></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>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 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>POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</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;"><div class="im"><font>WARNING:core:Warning: Registered 'of_01' multipled times</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;"><div class="im"><font>WARNING:core:Warning: Registered 'of_01' multipled times</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;"><div class="im"><font>DEBUG:core:POX 0.3.0 (dart) going up...</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;"><div class="im"><font>DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</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;"><div class="im"><font>DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</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;"><div class="im"><font>INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></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>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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"><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>ERROR:openflow.of_01:Error 98 while binding socket: Address already in use</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;"><div class="im"><font>ERROR:openflow.of_01: You may have another controller running.</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;"><div class="im"><font>ERROR:openflow.of_01: Use openflow.of_01 --port=<port> to run POX on another port.</font></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><font> </font></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>and if I try to bind it with different ports, then it works, but it also </font><span style="">adds listener to interface </span><span style=""> </span><span style="">by default</span><span style=""> </span><span style="">specified in  </span><span style="">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 class="gmail_extra"><div class="gmail_quote"> </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>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 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>POX 0.3.0 (dart) / Copyright 2011-2013 James McCauley, et al.</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;"><div class="im"><font>WARNING:core:Warning: Registered 'of_01' multipled times</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;"><div class="im"><font>WARNING:core:Warning: Registered 'of_01' multipled times</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;"><div class="im"><font>DEBUG:core:POX 0.3.0 (dart) going up...</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;"><div class="im"><font>DEBUG:core:Running on CPython (2.7.3/Sep 26 2012 21:51:14)</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;"><div class="im"><font>DEBUG:core:Platform is Linux-3.5.0-17-generic-x86_64-with-Ubuntu-13.04-raring</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;"><div class="im"><font>INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></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>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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 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>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 class="gmail_extra"><div class="gmail_quote"> </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="#222222">mininet@mininet-vm:~/pox$ ./pox.py  --unthreaded_sh log.level --DEBUG l2sw</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;"><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 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="#222222">DEBUG:core:POX 0.3.0 (dart) going up...</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;"><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 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="#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 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="#222222">INFO:core:POX 0.3.0 (dart) is up.</font></div></div></blockquote></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<span class="Apple-converted-space"> </span><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;"><br></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>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<span class="Apple-converted-space"> </span><a href="http://192.168.20.1:6633/" target="_blank">192.168.20.1:6633</a></div><div>DEBUG:openflow.of_01:Listening on<span class="Apple-converted-space"> </span><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 class="gmail_extra"><br><div class="gmail_quote">On 7 November 2013 20:56, Murphy McCauley<span class="Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span><span class="Apple-converted-space"> </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> <span class="Apple-converted-space"> </span>if name is None:<br>   <span class="Apple-converted-space"> </span>basename = "of_01"<br>   <span class="Apple-converted-space"> </span>counter = 1<br>   <span class="Apple-converted-space"> </span>name = basename<br>   <span class="Apple-converted-space"> </span>while core.hasComponent(name):<br>     <span class="Apple-converted-space"> </span>counter += 1<br>     <span class="Apple-converted-space"> </span>name = "%s-%s" % (basename, counter)<br><br> <span class="Apple-converted-space"> </span>if core.hasComponent(name):<br>   <span class="Apple-converted-space"> </span>log.warn("of_01 '%s' already started", name)<br>   <span class="Apple-converted-space"> </span>return None<br><br> <span class="Apple-converted-space"> </span>global deferredSender<br> <span class="Apple-converted-space"> </span>if not deferredSender:<br>   <span class="Apple-converted-space"> </span>deferredSender = DeferredSender()<br><br> <span class="Apple-converted-space"> </span>if of._logger is None:<br>   <span class="Apple-converted-space"> </span>of._logger = core.getLogger('libopenflow_01')<br><br> <span class="Apple-converted-space"> </span>l = OpenFlow_01_Task(port = int(port), address = address)<br> <span class="Apple-converted-space"> </span>core.register(name, l)<br> <span class="Apple-converted-space"> </span>return l<br><span><font color="#888888"><br>-- Murphy<br></font></span><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></blockquote></div><br><br clear="all"><div><br></div>--<span class="Apple-converted-space"> </span><br>Best regards,<div>Anton Matsiuk</div></div></div></blockquote></div></div></div><br></div></blockquote></div><br><br clear="all"><div><br></div>--<span class="Apple-converted-space"> </span><br>Best regards,<div>Anton Matsiuk</div></div></div></div></blockquote></div><br></div></div></body></html>