conf/72964

Vlad Manilici vman at fx.homeunix.org
Sat Oct 23 07:10:25 PDT 2004


The following reply was made to PR conf/72964; it has been noted by GNATS.

From: Vlad Manilici <vman at fx.homeunix.org>
To: freebsd-gnats-submit at FreeBSD.org
Cc:  
Subject: Re: conf/72964
Date: Sat, 23 Oct 2004 16:01:08 +0200

 hi,
 
 an updated version of the script:
 	- code rearrange
 	- allow for non-WEP setup (keyword: "none")
 	- shutdown the interfaces
 
 ================================================================================
 #!/bin/sh
 
 # $Id: wireless,v 1.10 2004/10/23 14:00:21 root Exp $
 
 # PROVIDE: wireless
 # REQUIRE: mountcritlocal
 # BEFORE: dhclient
 # KEYWORD: FreeBSD
 
 . /etc/rc.subr
 
 name="wireless"
 rcvar=`set_rcvar`
 start_cmd="wireless_start"
 stop_cmd="wireless_stop"
 
 # global: list of processed interfaces
 ifs=''
 
 # if_start $if $ssid $key
 if_start(){
 	if=$1
 	ssid=$2
 	key=$3
 
 	echo -n configuring interface $if / $ssid ...
 	if ifconfig $if 2>&1|grep -q 'does not exist'; then
 		echo ' does not exist'
 	elif ifconfig $if | grep -q 'status: associated'; then
 		echo ' already configured'
 	else
 		if [ "$key" = "none" ]; then
 			ifconfig $if inet 0.0.0.0 powersave\
 				station wlan ssid $ssid
 		else
 			ifconfig $if inet 0.0.0.0 powersave wepmode on\
 				station wlan ssid $ssid wepkey $key
 		fi
 
 		# delay
 		sleep 1; wicontrol -L >&-
 		if ifconfig $if | grep -q 'status: associated'; then
 			echo ' ok'
 		else
 			echo ' no association'
 			ifconfig $if down
 		fi
 	fi
 }
 
 # if_stop $if
 if_stop(){
 	if=$1
 
 	# skip if already processed
 	if echo $ifs|grep -qv $if; then
 		echo -n stopping interface $if ...
 
 		# remember this interface
 		ifs="$ifs $if"
 
 		if ifconfig $if 2>&1|grep -q 'does not exist'; then
 			echo ' does not exist'
 		elif ifconfig $if | grep -q 'status: associated'; then
 			ifconfig $if down
 			if ifconfig $if | grep -q 'status: associated'; then
 				echo ' error'
 			else
 				echo ' down'
 			fi
 		else
 			echo ' no association'
 		fi
 	fi
 }
 
 # cycle start|stop
 cycle(){
 	action=$1
 
 	# read configuration
 	for item in ${wireless_flags}; do
 		# read items
 		if [ -z "$if" ]; then
 			if=$item
 		elif [ -z "$ssid" ]; then
 			ssid=$item
 		elif [ -z "$key" ]; then
 			key=$item
 		fi
 
 		# configure
 		if [ -n "$if" -a -n "$ssid" -a -n "$key" ]; then
 
 			if [ "$action" = "start" ]; then
 				# start
 				if_start $if $ssid $key
 			elif [ "$action" = "stop" ]; then
 				# stop
 				if_stop $if
 			fi
 
 			# clean items
 			if=''
 			ssid=''
 			key=''
 		fi
 	done
 }
 
 wireless_start(){
 	cycle start
 }
 
 wireless_stop(){
 	cycle stop
 }
 
 load_rc_config $name
 run_rc_command "$1"
 
 ================================================================================
 
 vlad
 


More information about the freebsd-bugs mailing list