diff options
Diffstat (limited to 'libexec/rc/rc.d/rfcomm_pppd_server')
| -rwxr-xr-x | libexec/rc/rc.d/rfcomm_pppd_server | 126 | 
1 files changed, 126 insertions, 0 deletions
diff --git a/libexec/rc/rc.d/rfcomm_pppd_server b/libexec/rc/rc.d/rfcomm_pppd_server new file mode 100755 index 000000000000..810c1adc8e91 --- /dev/null +++ b/libexec/rc/rc.d/rfcomm_pppd_server @@ -0,0 +1,126 @@ +#!/bin/sh +# +# + +# PROVIDE: rfcomm_pppd_server +# REQUIRE: DAEMON sdpd +# BEFORE: LOGIN +# KEYWORD: nojail + +. /etc/rc.subr + +name="rfcomm_pppd_server" +desc="RFCOMM PPP daemon" +rcvar="rfcomm_pppd_server_enable" +command="/usr/sbin/rfcomm_pppd" +start_cmd="rfcomm_pppd_server_start" +stop_cmd="rfcomm_pppd_server_stop" +required_modules="ng_btsocket" + +rfcomm_pppd_server_start_profile() +{ +	local _profile _profile_cleaned _punct _punct_c +	local _bdaddr _channel _x + +	_profile=$1 +	_profile_cleaned=$1 + +	_punct=". - / +" +	for _punct_c in ${_punct} ; do +		_profile_cleaned=`ltr ${_profile_cleaned} ${_punct_c} '_'` +	done + +	rc_flags="" + +	# Check for RFCOMM PPP profile bdaddr override +	# +	eval _bdaddr=\$rfcomm_pppd_server_${_profile_cleaned}_bdaddr +	if [ -n "${_bdaddr}" ]; then +		rc_flags="${rc_flags} -a ${_bdaddr}" +	fi + +	# Check for RFCOMM PPP profile channel override +	# +	eval _channel=\$rfcomm_pppd_server_${_profile_cleaned}_channel +	if [ -z "${_channel}" ]; then +		_channel=1 +	fi +	rc_flags="${rc_flags} -C ${_channel}" + +	# Check for RFCOMM PPP profile register SP override +	# +	eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_sp +	if [ -n "${_x}" ]; then +		if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_sp" ; then +			rc_flags="${rc_flags} -S" +		fi +	fi + +	# Check for RFCOMM PPP profile register DUN override +	# +	eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_dun +	if [ -n "${_x}" ]; then +		if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_dun" ; then +			rc_flags="${rc_flags} -D" +		fi +	fi + +	# Run! +	# +	$command -s ${rc_flags} -l ${_profile} +} + +rfcomm_pppd_server_stop_profile() +{ +	local _profile + +	_profile=$1 + +	/bin/pkill -f "^${command}.*[[:space:]]${_profile}\$" || \ +		echo -n "(not running)" +} + +rfcomm_pppd_server_start() +{ +	local _profile _p + +	_profile=$* +	if [ -z "${_profile}" ]; then +		_profile=${rfcomm_pppd_server_profile} +	fi + +	startmsg -n "Starting RFCOMM PPP profile:" + +	for _p in ${_profile} ; do +		startmsg -n " ${_p}" +		rfcomm_pppd_server_start_profile ${_p} +	done + +	startmsg "." +} + +rfcomm_pppd_server_stop() +{ +	local _profile _p + +	_profile=$* +	if [ -z "${_profile}" ]; then +		_profile=${rfcomm_pppd_server_profile} +	fi + +	echo -n "Stopping RFCOMM PPP profile:" + +	for _p in ${_profile} ; do +		echo -n " ${_p}" +		rfcomm_pppd_server_stop_profile ${_p} +	done + +	echo "." +} + +load_rc_config $name + +# doesn't make sense to run in a svcj: nojail keyword +rfcomm_pppd_server_svcj="NO" + +run_rc_command $*  | 
