Skip to content

Commit 5b48a7d

Browse files
committed
Reimplemented and corrected Graph as MultiGraph
fixes mininet#172
1 parent 4316be9 commit 5b48a7d

1 file changed

Lines changed: 4 additions & 5 deletions

File tree

mininet/topo.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,22 @@
1313

1414
from mininet.util import irange, natural, naturalSeq
1515

16-
class Graph( object ):
16+
class MultiGraph( object ):
1717
"Utility class to track nodes and edges - replaces networkx.Graph"
1818

1919
def __init__( self ):
2020
self.data = {}
2121

2222
def add_node( self, node ):
2323
"Add node to graph"
24-
if node not in self.data.keys():
25-
self.data[ node ] = []
24+
self.data.setdefault( node, [] )
2625

2726
def add_edge( self, src, dest ):
2827
"Add edge to graph"
28+
src, dest = sorted( ( src, dest ) )
2929
self.add_node( src )
3030
self.add_node( dest )
3131
self.data[ src ].append( dest )
32-
self.data[ dest ].append( src )
3332

3433
def nodes( self ):
3534
"Return list of graph nodes"
@@ -54,7 +53,7 @@ def __init__(self, hopts=None, sopts=None, lopts=None):
5453
hinfo: default host options
5554
sopts: default switch options
5655
lopts: default link options"""
57-
self.g = Graph()
56+
self.g = MultiGraph()
5857
self.node_info = {}
5958
self.link_info = {} # (src, dst) tuples hash to EdgeInfo objects
6059
self.hopts = {} if hopts is None else hopts

0 commit comments

Comments
 (0)