[thci] configure backbone netif (#7804)

The backbone netif is always set to `eth0` in the original THCI. This
commit allows to configure backbone netif via THC parameter `Param8`.
This commit is contained in:
Simon Lin
2022-06-30 04:32:00 +08:00
committed by GitHub
parent b058ea4e17
commit 86e642379c
2 changed files with 21 additions and 20 deletions
+1
View File
@@ -404,6 +404,7 @@ class OpenThreadTHCI(object):
self.telnetPassword = 'raspberry' if params.get('Param7') is None else params.get('Param7')
self.mac = params.get('EUI')
self.backboneNetif = params.get('Param8') or 'eth0'
self.UIStatusMsg = ''
self.AutoDUTEnable = False
+20 -20
View File
@@ -316,8 +316,8 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
self.powerUp()
if self.IsHost:
self.__stopRadvdService()
self.bash('ip -6 addr del 910b::1 dev eth0 || true')
self.bash('ip -6 addr del fd00:7d03:7d03:7d03::1 dev eth0 || true')
self.bash('ip -6 addr del 910b::1 dev %s || true' % self.backboneNetif)
self.bash('ip -6 addr del fd00:7d03:7d03:7d03::1 dev %s || true' % self.backboneNetif)
self.stopListeningToAddrAll()
@@ -330,7 +330,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
time.sleep(2)
def __enableAcceptRa(self):
self.bash('sysctl net.ipv6.conf.eth0.accept_ra=2')
self.bash('sysctl net.ipv6.conf.%s.accept_ra=2' % self.backboneNetif)
def _beforeRegisterMulticast(self, sAddr='ff04::1234:777a:1', timeout=300):
"""subscribe to the given ipv6 address (sAddr) in interface and send MLR.req OTA
@@ -351,10 +351,10 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
def setupHost(self, setDp=False, setDua=False):
self.IsHost = True
self.bash('ip -6 addr add 910b::1 dev eth0')
self.bash('ip -6 addr add 910b::1 dev %s' % self.backboneNetif)
if setDua:
self.bash('ip -6 addr add fd00:7d03:7d03:7d03::1 dev eth0')
self.bash('ip -6 addr add fd00:7d03:7d03:7d03::1 dev %s' % self.backboneNetif)
self.__startRadvdService(setDp)
@@ -387,7 +387,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
return
if interface == 1:
ifname = 'eth0'
ifname = self.backboneNetif
else:
raise AssertionError('Invalid interface set to send UDP: {} '
'Available interface options: 0 - Thread; 1 - Ethernet'.format(interface))
@@ -396,7 +396,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
@API
def mldv2_query(self):
ifname = 'eth0'
ifname = self.backboneNetif
dst = 'ff02::1'
cmd = '/home/pi/reference-device/send_mld_query.py %s %s' % (ifname, dst)
@@ -405,23 +405,23 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
@API
def ip_neighbors_flush(self):
# clear neigh cache on linux
cmd1 = 'sudo ip -6 neigh flush nud all nud failed nud noarp dev eth0'
cmd2 = 'sudo ip -6 neigh list nud all dev eth0 ' \
'| cut -d " " -f1 ' \
'| sudo xargs -I{} ip -6 neigh delete {} dev eth0'
cmd1 = 'sudo ip -6 neigh flush nud all nud failed nud noarp dev %s' % self.backboneNetif
cmd2 = ('sudo ip -6 neigh list nud all dev %s '
'| cut -d " " -f1 '
'| sudo xargs -I{} ip -6 neigh delete {} dev %s') % (self.backboneNetif, self.backboneNetif)
cmd = '%s ; %s' % (cmd1, cmd2)
self.bash(cmd, sudo=False)
@API
def ip_neighbors_add(self, addr, lladdr, nud='noarp'):
cmd1 = 'sudo ip -6 neigh delete %s dev eth0' % addr
cmd2 = 'sudo ip -6 neigh add %s dev eth0 lladdr %s nud %s' % (addr, lladdr, nud)
cmd1 = 'sudo ip -6 neigh delete %s dev %s' % (addr, self.backboneNetif)
cmd2 = 'sudo ip -6 neigh add %s dev %s lladdr %s nud %s' % (addr, self.backboneNetif, lladdr, nud)
cmd = '%s ; %s' % (cmd1, cmd2)
self.bash(cmd, sudo=False)
@API
def get_eth_ll(self):
cmd = "ip -6 addr list dev eth0 | grep 'inet6 fe80' | awk '{print $2}'"
cmd = "ip -6 addr list dev %s | grep 'inet6 fe80' | awk '{print $2}'" % self.backboneNetif
ret = self.bash(cmd)[0].split('/')[0]
return ret
@@ -440,7 +440,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
hop_limit = 5
if self.IsHost or self.IsBorderRouter:
ifName = 'eth0'
ifName = self.backboneNetif
else:
ifName = 'wpan0'
@@ -466,7 +466,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
hop_limit = 5
if self.IsHost or self.IsBorderRouter:
ifName = 'eth0'
ifName = self.backboneNetif
else:
ifName = 'wpan0'
@@ -496,7 +496,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
def __getEthGUA(self, filterByPrefix=None):
globalAddrs = []
cmd = 'ip -6 addr list dev eth0 | grep inet6'
cmd = 'ip -6 addr list dev %s | grep inet6' % self.backboneNetif
output = self.bash(cmd, sudo=False)
for line in output:
# example: inet6 2401:fa00:41:23:274a:1329:3ab9:d953/64 scope global dynamic noprefixroute
@@ -537,7 +537,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
def _deviceGetEtherMac(self):
# Harness wants it in string. Because wireshark filter for eth
# cannot be applies in hex
return self.bash('ip addr list dev eth0 | grep ether', sudo=False)[0].strip().split()[1]
return self.bash('ip addr list dev %s | grep ether' % self.backboneNetif, sudo=False)[0].strip().split()[1]
@watched
def _onCommissionStart(self):
@@ -555,7 +555,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
assert self.IsHost, "radvd service runs on Host only"
conf = "EOF"
conf += "\ninterface eth0"
conf += "\ninterface %s" % self.backboneNetif
conf += "\n{"
conf += "\n AdvSendAdvert on;"
conf += "\n"
@@ -645,7 +645,7 @@ class OpenThread_BR(OpenThreadTHCI, IThci):
alias, link_local_addr, port, thread_status = eval(line)
if thread_status == 2 and link_local_addr:
if (dst and link_local_addr in dst) or (link_local_addr not in addrs_blacklist):
return '%s%%eth0' % link_local_addr, port
return '%s%%%s' % (link_local_addr, self.backboneNetif), port
raise Exception('No active Border Agents found')