auto-t: hwsim.py: convert addresses to 42:* format

mac80211_hwsim has a funny quirk with multiple addresses in
radios. Some operations require address index zero, some index
one. And these addresses (possibly a result of how test-runner
initializes radios) sometimes get mixed up. For example scan
results may show a BSS address as 02:00:00:00:00:00, while the
next test run shows 42:00:00:00:00:00.

Ultimately, sending out frames requires the first nibble of the
address to be 0x4 so to handle both variants of addresses described
above hwsim.py was updated to always bitwise OR the first byte
with 0x40.
This commit is contained in:
James Prestwood 2021-08-23 11:32:19 -07:00 committed by Denis Kenzior
parent 58d2814a92
commit f6683bab75
1 changed files with 14 additions and 2 deletions

View File

@ -335,14 +335,26 @@ class Hwsim(iwd.AsyncOpAbstract):
def object_manager(self):
return self._object_manager_if
@staticmethod
def _convert_address(address):
first = int(address[0:2], base=16)
first |= 0x40
first = format(first, 'x')
address = first + address[2:]
return address
def spoof_disassociate(self, radio, freq, station):
'''
Send a spoofed disassociate frame to a station
'''
dest = self._convert_address(radio.addresses[0].replace(':', ''))
frame = 'a0 00 3a 01'
frame += station.replace(':', '')
frame += radio.addresses[0].replace(':', '')
frame += radio.addresses[0].replace(':', '')
frame += dest
frame += dest
frame += '30 01 07 00'
self.spoof_frame(radio, freq, station, frame)