Avoid "ifconfig down" if the macaddr is not going to change.

For wireless interfaces, downing the interface after hostapd has
been started is unsupported and not guaranteed to work at all, but
that is exactly was OpenWRT does right now (maybe not for netifd).

And in this case it was alrady set by enable_mac80211 before hostapd
was started, so it's not going to change in prepare_interface.

Quoting Johannes Berg:
"Wow, ok, setting the interface down while the AP is up really isn't
a valid use of it. I'm actually amazed that it ever works at all
when you do this. Either this should be done the other way around,
or hostapd needs to get some smarts about it. For example, with the
start-AP function transition, I'm not sure even *beacon* after you
do this..."


Signed-off-by: Tobias Diedrich <ranma+open...@tdiedrich.de>

Index: package/base-files-network/files/lib/network/config.sh
===================================================================
--- package/base-files-network/files/lib/network/config.sh      (revision 31774)
+++ package/base-files-network/files/lib/network/config.sh      (working copy)
@@ -184,7 +184,11 @@
                config_get mtu "$config" mtu
                [ -n "$macaddr" ] || config_get macaddr "$config" macaddr
                config_get txqueuelen "$config" txqueuelen
-               [ -n "$macaddr" ] && $DEBUG ifconfig "$iface" down
+               local oldmacaddr
+               local uppermacaddr
+               oldmacaddr=`ifconfig "$iface" | head -1 | sed -e 's@.*HWaddr 
\([0-9A-F:]*\).*@\1@'`
+               uppermacaddr=`echo -n "$macaddr" | tr a-f A-F`
+               [ -n "$macaddr" -a "$uppermacaddr" != "$oldmacaddr" ] && $DEBUG 
ifconfig "$iface" down
                $DEBUG ifconfig "$iface" ${macaddr:+hw ether "$macaddr"} 
${mtu:+mtu $mtu} ${txqueuelen:+txqueuelen $txqueuelen} up
 
                [ "$proto" = none ] || ifconfig "$iface" 0.0.0.0

-- 
Tobias                                          PGP: http://8ef7ddba.uguu.de
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to