From 169a4fddf8a2c6512f1da12786f9faf526e53e77 Mon Sep 17 00:00:00 2001 From: jingqiuELE Date: Fri, 3 Jun 2016 16:06:41 +0800 Subject: [PATCH 1/3] Add TCLink1 class which is asymetric --- mininet/link.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mininet/link.py b/mininet/link.py index edb072b1..7042d0dd 100644 --- a/mininet/link.py +++ b/mininet/link.py @@ -533,3 +533,23 @@ def __init__( self, node1, node2, port1=None, port2=None, addr1=addr1, addr2=addr2, params1=params, params2=params ) +class TCLink1( Link ): + "Link with potential asymetric TC interfaces configured via opts" + def __init__( self,node1,node2,port1=None,port2=None, + intfName1=None, intfName2, **params): + if isinstance(params,dict): + pars1 = {} + pars2 = {} + if 'params1' in params: + pars1 = params['params1'] + if 'params2' in params: + pars2 = params['params2'] + else: + print 'Dictionnary expected for asymetric link pars' + + Link.__init__(self, node1, node2, port1=port1, port2=port2, + intfName1=intfName1, intfName2=intfName2, + cls1=TCIntf, + cls2=TCIntf, + params1=pars1, + params2=pars2) From 0beb0841170c3b3f5d020e16eac4f027ef00eaf7 Mon Sep 17 00:00:00 2001 From: jingqiuELE Date: Fri, 3 Jun 2016 18:07:11 +0800 Subject: [PATCH 2/3] Fix syntax errors TCLink1 --- mininet/link.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mininet/link.py b/mininet/link.py index 7042d0dd..1300010f 100644 --- a/mininet/link.py +++ b/mininet/link.py @@ -533,10 +533,12 @@ def __init__( self, node1, node2, port1=None, port2=None, addr1=addr1, addr2=addr2, params1=params, params2=params ) + class TCLink1( Link ): "Link with potential asymetric TC interfaces configured via opts" - def __init__( self,node1,node2,port1=None,port2=None, - intfName1=None, intfName2, **params): + def __init__( self, node1, node2, port1=None, port2=None, + intfName1=None, intfName2=None, + addr1=None, addr2=None, **params): if isinstance(params,dict): pars1 = {} pars2 = {} @@ -551,5 +553,6 @@ def __init__( self,node1,node2,port1=None,port2=None, intfName1=intfName1, intfName2=intfName2, cls1=TCIntf, cls2=TCIntf, + addr1=addr1, addr2=addr2, params1=pars1, params2=pars2) From 665a1ed12316735229f727b1fcdefff9ed3c04b0 Mon Sep 17 00:00:00 2001 From: jingqiuELE Date: Sat, 4 Jun 2016 09:35:49 +0800 Subject: [PATCH 3/3] Add TCLink1 as asymmetric TCLink version, e.g, to specify 'ip' on one side. --- bin/mn | 3 ++- mininet/link.py | 25 +++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/bin/mn b/bin/mn index ff42e47b..1e8c29c5 100755 --- a/bin/mn +++ b/bin/mn @@ -30,7 +30,7 @@ from mininet.node import ( Host, CPULimitedHost, Controller, OVSController, UserSwitch, OVSSwitch, OVSBridge, IVSSwitch ) from mininet.nodelib import LinuxBridge -from mininet.link import Link, TCLink, OVSLink +from mininet.link import Link, TCLink, TCLink1, OVSLink from mininet.topo import ( SingleSwitchTopo, LinearTopo, SingleSwitchReversedTopo, MinimalTopo ) from mininet.topolib import TreeTopo, TorusTopo @@ -85,6 +85,7 @@ CONTROLLERS = { 'ref': Controller, LINKDEF = 'default' LINKS = { 'default': Link, 'tc': TCLink, + 'tc1': TCLink1, 'ovs': OVSLink } diff --git a/mininet/link.py b/mininet/link.py index 1300010f..cd959941 100644 --- a/mininet/link.py +++ b/mininet/link.py @@ -535,19 +535,24 @@ def __init__( self, node1, node2, port1=None, port2=None, params2=params ) class TCLink1( Link ): - "Link with potential asymetric TC interfaces configured via opts" + "Link with potential asymmetric TC interfaces configured via opts" def __init__( self, node1, node2, port1=None, port2=None, intfName1=None, intfName2=None, addr1=None, addr2=None, **params): - if isinstance(params,dict): - pars1 = {} - pars2 = {} - if 'params1' in params: - pars1 = params['params1'] - if 'params2' in params: - pars2 = params['params2'] - else: - print 'Dictionnary expected for asymetric link pars' + p1 = {} + p2 = {} + if 'params1' in params: + p1 = params['params1'] + del params['params1'] + if 'params2' in params: + p2 = params['params2'] + del params['params2'] + + pars1 = params.copy() + pars1.update(p1) + + pars2 = params.copy() + pars2.update(p2) Link.__init__(self, node1, node2, port1=port1, port2=port2, intfName1=intfName1, intfName2=intfName2,