import logging
logger = logging.getLogger()
import os
+import subprocess
+import time
import hostapd
import hwsim_utils
if ev is None:
raise Exception("GTK rekey timed out")
hwsim_utils.test_connectivity(dev[0].ifname, apdev[0]['ifname'])
+
+def test_ap_wpa2_bridge_fdb(dev, apdev):
+ """Bridge FDB entry removal"""
+ try:
+ ssid = "test-wpa2-psk"
+ passphrase = "12345678"
+ params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
+ params['bridge'] = 'ap-br0'
+ hostapd.add_ap(apdev[0]['ifname'], params)
+ subprocess.call(['sudo', 'brctl', 'setfd', 'ap-br0', '0'])
+ subprocess.call(['sudo', 'ip', 'link', 'set', 'dev', 'ap-br0', 'up'])
+ dev[0].connect(ssid, psk=passphrase, scan_freq="2412",
+ bssid=apdev[0]['bssid'])
+ dev[1].connect(ssid, psk=passphrase, scan_freq="2412",
+ bssid=apdev[0]['bssid'])
+ addr0 = dev[0].p2p_interface_addr()
+ hwsim_utils.test_connectivity_sta(dev[0], dev[1])
+ cmd = subprocess.Popen(['brctl', 'showmacs', 'ap-br0'],
+ stdout=subprocess.PIPE)
+ macs1 = cmd.stdout.read()
+ dev[0].request("DISCONNECT")
+ dev[1].request("DISCONNECT")
+ time.sleep(1)
+ cmd = subprocess.Popen(['brctl', 'showmacs', 'ap-br0'],
+ stdout=subprocess.PIPE)
+ macs2 = cmd.stdout.read()
+
+ addr1 = dev[1].p2p_interface_addr()
+ if addr0 not in macs1 or addr1 not in macs1:
+ raise Exception("Bridge FDB entry missing")
+ if addr0 in macs2 or addr1 in macs2:
+ raise Exception("Bridge FDB entry was not removed")
+ finally:
+ subprocess.call(['sudo', 'ip', 'link', 'set', 'dev', 'ap-br0', 'down'])
+ subprocess.call(['sudo', 'brctl', 'delbr', 'ap-br0'])