diff options
author | Erik Fonnesbeck <efonnes@gmail.com> | 2010-12-02 15:27:17 -0700 |
---|---|---|
committer | Erik Fonnesbeck <efonnes@gmail.com> | 2010-12-02 15:40:20 -0700 |
commit | acb0bce0454bbaeeaa419145f17bf042decab930 (patch) | |
tree | 7ab0a7b6757b6a4ae925b6de2f85872166394605 /etc/inc | |
parent | 650cb13be26d102770c46d41dc0a540affef37a5 (diff) | |
download | pfsense-acb0bce0454bbaeeaa419145f17bf042decab930.zip pfsense-acb0bce0454bbaeeaa419145f17bf042decab930.tar.gz |
Restore the original MAC address before running hostapd to work around a hostapd bug. Ticket #841
Diffstat (limited to 'etc/inc')
-rw-r--r-- | etc/inc/interfaces.inc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index a45ea12..04ab574 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1896,6 +1896,7 @@ function interface_wireless_clone($realif, $wlcfg) { pfSense_interface_rename($newif, $realif); // FIXME: not sure what ngctl is for. Doesn't work. // mwexec("/usr/sbin/ngctl name {$newif}: {$realif}", false); + file_put_contents("{$g['tmp_path']}/{$realif}_oldmac", get_interface_mac($realif)); } return true; } @@ -2256,6 +2257,14 @@ EOD; fwrite($fd_set, "{$wpa_supplicant} -B -i {$if} -c {$g['varetc_path']}/wpa_supplicant_{$if}.conf\n"); } if ($wlcfg['mode'] == "hostap") { + /* restore old mac to make hostapd happy */ + if (file_exists("{$g['tmp_path']}/{$if}_oldmac")) { + $if_oldmac = file_get_contents("{$g['tmp_path']}/{$if}_oldmac"); + if (is_macaddr($if_oldmac)) + fwrite($fd_set, "{$ifconfig} " . escapeshellarg($if) . + " link " . escapeshellarg($if_oldmac) . "\n"); + } + fwrite($fd_set, "{$hostapd} -B {$g['varetc_path']}/hostapd_{$if}.conf\n"); } } |