Call netns using setsid to detach from the tty; this is
intended to fix the problem of control-C killing your network.
sendInt() doesn't actually work - hopefully we can fix this in the
future, but it's tricky since we want to detach the many shells from
our tty, but then optionally send tty interrupts to them! Ideally we
would either know the pid of the subprocess or be able to send a signal
to bash to get it to interrupt its subprocess.
waitOutput() now uses monitor. We also handle sentinels
coming in the middle of output (but default at end should
still work well.)
We need to figure out how to specify the IP addresses for the
routed control network. For now I'm going back to 192.168.12x.y
Also changed controller params to use IP strings rather than
numbers. However, we still need to clarify what ControllerParams
is actually for.
Also tweaked cmd/cmdPrint to make them more beautiful and functional,
and a few other minor changes, such as using a new idiom for verbose.
These changes support reinstating the examples.
There is probably a better way of doing this, but currently
parseCustomFile can modify globals (e.g. TOPOS) as well as
instance variables (self.validate) and classes (e.g. MyTopo),
which are also in the global name space.
Inconveniently enough, lambdas don't seem to be full closures
in Python; if they were, this trickiness would be unnecessary.
Even so, using execfile() seems like it might be a bit dubious...
This increases flexibility by allowing a topology to be manually created
in Python, or specified using another format, without having to create
a Topo object first.
However, Topos are useful, and are still the default topology object!