pass code check; make GRE_KEY a class var
This commit is contained in:
+12
-8
@@ -287,7 +287,7 @@ class RemoteMixin( object ):
|
|||||||
return super( RemoteMixin, self).popen( *args, tt=False, **kwargs )
|
return super( RemoteMixin, self).popen( *args, tt=False, **kwargs )
|
||||||
|
|
||||||
def addIntf( self, *args, **kwargs ):
|
def addIntf( self, *args, **kwargs ):
|
||||||
# "Override: use RemoteLink.moveIntf"
|
"Override: use RemoteLink.moveIntf"
|
||||||
# kwargs.update( moveIntfFn=RemoteLink.moveIntf )
|
# kwargs.update( moveIntfFn=RemoteLink.moveIntf )
|
||||||
return super( RemoteMixin, self).addIntf( *args, **kwargs )
|
return super( RemoteMixin, self).addIntf( *args, **kwargs )
|
||||||
|
|
||||||
@@ -393,12 +393,11 @@ class RemoteLink( Link ):
|
|||||||
return self.tunnel
|
return self.tunnel
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def moveIntf( intf, node, printError=True ):
|
def moveIntf( intf, node ):
|
||||||
"""Move remote interface from root ns to node
|
"""Move remote interface from root ns to node
|
||||||
intf: string, interface
|
intf: string, interface
|
||||||
dstNode: destination Node
|
dstNode: destination Node
|
||||||
srcNode: source Node or None (default) for root ns
|
srcNode: source Node or None (default) for root ns"""
|
||||||
printError: if true, print error"""
|
|
||||||
intf = str( intf )
|
intf = str( intf )
|
||||||
cmd = 'ip link set %s netns %s' % ( intf, node.pid )
|
cmd = 'ip link set %s netns %s' % ( intf, node.pid )
|
||||||
result = node.rcmd( cmd )
|
result = node.rcmd( cmd )
|
||||||
@@ -474,12 +473,17 @@ class RemoteLink( Link ):
|
|||||||
|
|
||||||
|
|
||||||
class RemoteSSHLink( RemoteLink ):
|
class RemoteSSHLink( RemoteLink ):
|
||||||
|
"Remote link using SSH tunnels"
|
||||||
def __init__(self, node1, node2, **kwargs):
|
def __init__(self, node1, node2, **kwargs):
|
||||||
RemoteLink.__init__( self, node1, node2, **kwargs )
|
RemoteLink.__init__( self, node1, node2, **kwargs )
|
||||||
|
|
||||||
|
|
||||||
GRE_KEY = 0
|
|
||||||
class RemoteGRELink( RemoteLink ):
|
class RemoteGRELink( RemoteLink ):
|
||||||
|
"Remote link using GRE tunnels"
|
||||||
|
|
||||||
|
GRE_KEY = 0
|
||||||
|
|
||||||
def __init__(self, node1, node2, **kwargs):
|
def __init__(self, node1, node2, **kwargs):
|
||||||
RemoteLink.__init__( self, node1, node2, **kwargs )
|
RemoteLink.__init__( self, node1, node2, **kwargs )
|
||||||
|
|
||||||
@@ -535,13 +539,13 @@ class RemoteGRELink( RemoteLink ):
|
|||||||
' == ' + node2.server + ':' + intfname2 )
|
' == ' + node2.server + ':' + intfname2 )
|
||||||
tun1 = 'local ' + IP1 + ' remote ' + IP2
|
tun1 = 'local ' + IP1 + ' remote ' + IP2
|
||||||
tun2 = 'local ' + IP2 + ' remote ' + IP1
|
tun2 = 'local ' + IP2 + ' remote ' + IP1
|
||||||
global GRE_KEY
|
self.__class__.GRE_KEY += 1
|
||||||
GRE_KEY += 1
|
|
||||||
for (node, intfname, addr, tun) in [(node1, intfname1, addr1, tun1),
|
for (node, intfname, addr, tun) in [(node1, intfname1, addr1, tun1),
|
||||||
(node2, intfname2, addr2, tun2)]:
|
(node2, intfname2, addr2, tun2)]:
|
||||||
node.rcmd('ip link delete ' + intfname)
|
node.rcmd('ip link delete ' + intfname)
|
||||||
result = node.rcmd('ip link add name ' + intfname + ' type gretap '
|
result = node.rcmd('ip link add name ' + intfname + ' type gretap '
|
||||||
+ tun + ' ttl 64 key ' + str(GRE_KEY))
|
+ tun + ' ttl 64 key '
|
||||||
|
+ str( self.__class__.GRE_KEY) )
|
||||||
if result:
|
if result:
|
||||||
raise Exception('error creating gretap on %s: %s'
|
raise Exception('error creating gretap on %s: %s'
|
||||||
% (node, result))
|
% (node, result))
|
||||||
|
|||||||
Reference in New Issue
Block a user