mirror of
https://github.com/espressif/openthread.git
synced 2026-06-05 21:14:49 +00:00
[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:
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user