mac80211: try to get interface addresses from wiphy sysfs 'addresses' if no mask is set
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 43326
This commit is contained in:
		| @@ -326,6 +326,13 @@ ${max_listen_int:+max_listen_interval=$max_listen_int} | |||||||
| EOF | EOF | ||||||
| } | } | ||||||
|  |  | ||||||
|  | mac80211_get_addr() { | ||||||
|  | 	local phy="$1" | ||||||
|  | 	local idx="$(($2 + 1))" | ||||||
|  |  | ||||||
|  | 	head -n $(($macidx + 1)) /sys/class/ieee80211/${phy}/addresses | tail -n1 | ||||||
|  | } | ||||||
|  |  | ||||||
| mac80211_generate_mac() { | mac80211_generate_mac() { | ||||||
| 	local phy="$1" | 	local phy="$1" | ||||||
| 	local id="${macidx:-0}" | 	local id="${macidx:-0}" | ||||||
| @@ -333,7 +340,18 @@ mac80211_generate_mac() { | |||||||
| 	local ref="$(cat /sys/class/ieee80211/${phy}/macaddress)" | 	local ref="$(cat /sys/class/ieee80211/${phy}/macaddress)" | ||||||
| 	local mask="$(cat /sys/class/ieee80211/${phy}/address_mask)" | 	local mask="$(cat /sys/class/ieee80211/${phy}/address_mask)" | ||||||
|  |  | ||||||
| 	[ "$mask" = "00:00:00:00:00:00" ] && mask="ff:ff:ff:ff:ff:ff"; | 	[ "$mask" = "00:00:00:00:00:00" ] && { | ||||||
|  | 		mask="ff:ff:ff:ff:ff:ff"; | ||||||
|  |  | ||||||
|  | 		[ "$(wc -l < /sys/class/ieee80211/${phy}/addresses)" -gt 1 ] && { | ||||||
|  | 			addr="$(mac80211_get_addr "$phy" "$id")" | ||||||
|  | 			[ -n "$addr" ] && { | ||||||
|  | 				echo "$addr" | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	local oIFS="$IFS"; IFS=":"; set -- $mask; IFS="$oIFS" | 	local oIFS="$IFS"; IFS=":"; set -- $mask; IFS="$oIFS" | ||||||
|  |  | ||||||
| 	local mask1=$1 | 	local mask1=$1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau