Fixes another Graph regression relative to NetworkX.
RipL broke because the NetworkX Graph object that was used previously
for topologies is an undirected graph:
>>> import networkx as nx
>>> g=nx.Graph()
>>> g.add_edge(0,1)
>>> g[1]
{0: {}}
>>> g[0]
{1: {}}
There is a separate DiGraph object in NetworkX for directed behavior.
The minimal replacement previously implemented DiGraph behavior.
>>> from mininet.topo import Graph
>>> g2=Graph()
>>> g2.add_edge(0,1)
>>> g2[0]
[1]
>>> g2[1]
[]
This commit restores undirected graph behavior.
Commit 65c35b65 'Remove networkx dependency' broke this line from RipL:
nodes = [n for n in self.g[name] if self.layer(n) == layer]
To work around this, RipL code would have to be changed to something
like this:
nodes = [n for n in self.g.data[name] if self.layer(n) == layer]
...which would use an internal variable, data.
It seems cleaner to add this one little feature from NetworkX Graph objects.
If NBEEURL is defined when running install.sh, use that location.
Enables use of a local mirror for netbee download.
Thanks to David Erickson for the code.
Ordinarily, OVS switches back off when they can't reach their controllers.
Under the type of scenarios where Mininet is used, I think this is
probably just inconvenient. This patch set controllers to attempt to
reconnect every second.
This adds a datapath parameter to OVSSwitch which allows one to tell OVS to
run in userspace mode rather than kernel mode. From the commandline, this
is --switch=ovsk,datapath=user.
Note that this makes "ovsk" and the OVSKernelSwitch alias misnomers. Since
the default behavior is still kernel mode, this is hopefully harmless.
This is the second version of this patch, which changes the argument name
and values according to Bob's suggestion.
Fix method name mismatch for setDefaultRoute.
This seems to be logically correct according to the intention of the code, but it may cause some trouble because routes will now be flushed by Mininet.configHosts().
Adjust numbering to support tc-based switch QoS
This looks fine to me - probably we want to change the way this works eventually, but for now renumbering it is fine and we can change the numbering later if desired.