mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	move hostapd setup function to wireless-tools package, as it is driver independent
SVN-Revision: 5890
This commit is contained in:
		
							parent
							
								
									88e7da2bab
								
							
						
					
					
						commit
						d68a9310fb
					
				@ -45,71 +45,6 @@ scan_atheros() {
 | 
				
			|||||||
	config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${sta:+$sta }${wds:+$wds }"
 | 
						config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${sta:+$sta }${wds:+$wds }"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hostapd_setup_vif() {
 | 
					 | 
				
			||||||
	local vif="$1"
 | 
					 | 
				
			||||||
	local driver="$2"
 | 
					 | 
				
			||||||
	local hostapd_cfg=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# Examples:
 | 
					 | 
				
			||||||
	# psk-mixed/tkip 	=> WPA1+2 PSK, TKIP
 | 
					 | 
				
			||||||
	# wpa-psk2/tkip+aes	=> WPA2 PSK, CCMP+TKIP
 | 
					 | 
				
			||||||
	# wpa2/tkip+aes 	=> WPA2 RADIUS, CCMP+TKIP
 | 
					 | 
				
			||||||
	# ...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# TODO: move this parsing function somewhere generic, so that
 | 
					 | 
				
			||||||
	# later it can be reused by drivers that don't use hostapd
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	# crypto defaults: WPA2 vs WPA1
 | 
					 | 
				
			||||||
	case "$enc" in
 | 
					 | 
				
			||||||
		wpa2*|WPA2*|*PSK2*|*psk2*)
 | 
					 | 
				
			||||||
			wpa=2
 | 
					 | 
				
			||||||
			crypto="CCMP"
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
		*mixed*)
 | 
					 | 
				
			||||||
			wpa=3
 | 
					 | 
				
			||||||
			crypto="CCMP TKIP"
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
		*) 
 | 
					 | 
				
			||||||
			wpa=1
 | 
					 | 
				
			||||||
			crypto="TKIP"
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
	esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# explicit override for crypto setting
 | 
					 | 
				
			||||||
	case "$enc" in
 | 
					 | 
				
			||||||
		*tkip+aes|*TKIP+AES|*tkip+ccmp|*TKIP+CCMP) crypto="CCMP TKIP";;
 | 
					 | 
				
			||||||
		*tkip|*TKIP) crypto="TKIP";;
 | 
					 | 
				
			||||||
		*aes|*AES|*ccmp|*CCMP) crypto="CCMP";;
 | 
					 | 
				
			||||||
	esac
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	# use crypto/auth settings for building the hostapd config
 | 
					 | 
				
			||||||
	case "$enc" in
 | 
					 | 
				
			||||||
		*psk*|*PSK*)
 | 
					 | 
				
			||||||
			config_get psk "$vif" key
 | 
					 | 
				
			||||||
			append hostapd_cfg "wpa_passphrase=$psk" "$N"
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
		*wpa*|*WPA*)
 | 
					 | 
				
			||||||
		# FIXME: add wpa+radius here
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
		*)
 | 
					 | 
				
			||||||
			return 0;
 | 
					 | 
				
			||||||
		;;
 | 
					 | 
				
			||||||
	esac
 | 
					 | 
				
			||||||
	config_get ifname "$vif" ifname
 | 
					 | 
				
			||||||
	config_get bridge "$vif" bridge
 | 
					 | 
				
			||||||
	config_get ssid "$vif" ssid
 | 
					 | 
				
			||||||
	cat > /var/run/hostapd-$ifname.conf <<EOF
 | 
					 | 
				
			||||||
driver=$driver
 | 
					 | 
				
			||||||
interface=$ifname
 | 
					 | 
				
			||||||
${bridge:+bridge=$bridge}
 | 
					 | 
				
			||||||
ssid=$ssid
 | 
					 | 
				
			||||||
debug=0
 | 
					 | 
				
			||||||
wpa=$wpa
 | 
					 | 
				
			||||||
wpa_pairwise=$crypto
 | 
					 | 
				
			||||||
$hostapd_cfg
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
	hostapd -B /var/run/hostapd-$ifname.conf
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
disable_atheros() (
 | 
					disable_atheros() (
 | 
				
			||||||
	local device="$1"
 | 
						local device="$1"
 | 
				
			||||||
 | 
				
			|||||||
@ -61,6 +61,8 @@ define Build/UninstallDev
 | 
				
			|||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Package/wireless-tools/install
 | 
					define Package/wireless-tools/install
 | 
				
			||||||
 | 
						$(INSTALL_DIR) $(1)/lib/wifi
 | 
				
			||||||
 | 
						$(INSTALL_DATA)  ./files/wifi.sh $(1)/lib/wifi/generic.sh
 | 
				
			||||||
	$(INSTALL_DIR) $(1)/usr/lib
 | 
						$(INSTALL_DIR) $(1)/usr/lib
 | 
				
			||||||
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/libiw.so.28 $(1)/usr/lib/
 | 
						$(INSTALL_BIN) $(PKG_BUILD_DIR)/libiw.so.28 $(1)/usr/lib/
 | 
				
			||||||
	$(INSTALL_DIR) $(1)/usr/sbin
 | 
						$(INSTALL_DIR) $(1)/usr/sbin
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										66
									
								
								package/wireless-tools/files/wifi.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								package/wireless-tools/files/wifi.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					hostapd_setup_vif() {
 | 
				
			||||||
 | 
						local vif="$1"
 | 
				
			||||||
 | 
						local driver="$2"
 | 
				
			||||||
 | 
						local hostapd_cfg=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Examples:
 | 
				
			||||||
 | 
						# psk-mixed/tkip 	=> WPA1+2 PSK, TKIP
 | 
				
			||||||
 | 
						# wpa-psk2/tkip+aes	=> WPA2 PSK, CCMP+TKIP
 | 
				
			||||||
 | 
						# wpa2/tkip+aes 	=> WPA2 RADIUS, CCMP+TKIP
 | 
				
			||||||
 | 
						# ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# TODO: move this parsing function somewhere generic, so that
 | 
				
			||||||
 | 
						# later it can be reused by drivers that don't use hostapd
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						# crypto defaults: WPA2 vs WPA1
 | 
				
			||||||
 | 
						case "$enc" in
 | 
				
			||||||
 | 
							wpa2*|WPA2*|*PSK2*|*psk2*)
 | 
				
			||||||
 | 
								wpa=2
 | 
				
			||||||
 | 
								crypto="CCMP"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							*mixed*)
 | 
				
			||||||
 | 
								wpa=3
 | 
				
			||||||
 | 
								crypto="CCMP TKIP"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							*) 
 | 
				
			||||||
 | 
								wpa=1
 | 
				
			||||||
 | 
								crypto="TKIP"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# explicit override for crypto setting
 | 
				
			||||||
 | 
						case "$enc" in
 | 
				
			||||||
 | 
							*tkip+aes|*TKIP+AES|*tkip+ccmp|*TKIP+CCMP) crypto="CCMP TKIP";;
 | 
				
			||||||
 | 
							*tkip|*TKIP) crypto="TKIP";;
 | 
				
			||||||
 | 
							*aes|*AES|*ccmp|*CCMP) crypto="CCMP";;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						# use crypto/auth settings for building the hostapd config
 | 
				
			||||||
 | 
						case "$enc" in
 | 
				
			||||||
 | 
							*psk*|*PSK*)
 | 
				
			||||||
 | 
								config_get psk "$vif" key
 | 
				
			||||||
 | 
								append hostapd_cfg "wpa_passphrase=$psk" "$N"
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							*wpa*|*WPA*)
 | 
				
			||||||
 | 
							# FIXME: add wpa+radius here
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
							*)
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						config_get ifname "$vif" ifname
 | 
				
			||||||
 | 
						config_get bridge "$vif" bridge
 | 
				
			||||||
 | 
						config_get ssid "$vif" ssid
 | 
				
			||||||
 | 
						cat > /var/run/hostapd-$ifname.conf <<EOF
 | 
				
			||||||
 | 
					driver=$driver
 | 
				
			||||||
 | 
					interface=$ifname
 | 
				
			||||||
 | 
					${bridge:+bridge=$bridge}
 | 
				
			||||||
 | 
					ssid=$ssid
 | 
				
			||||||
 | 
					debug=0
 | 
				
			||||||
 | 
					wpa=$wpa
 | 
				
			||||||
 | 
					wpa_pairwise=$crypto
 | 
				
			||||||
 | 
					$hostapd_cfg
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
						hostapd -B /var/run/hostapd-$ifname.conf
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user