xref: /freebsd/libexec/rc/rc.d/rfcomm_pppd_server (revision f99f0ee14e3af81c23150a6a340259ca8a33d01a)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb#
40696600cSBjoern A. Zeeb
50696600cSBjoern A. Zeeb# PROVIDE: rfcomm_pppd_server
60696600cSBjoern A. Zeeb# REQUIRE: DAEMON sdpd
70696600cSBjoern A. Zeeb# BEFORE: LOGIN
80696600cSBjoern A. Zeeb# KEYWORD: nojail
90696600cSBjoern A. Zeeb
100696600cSBjoern A. Zeeb. /etc/rc.subr
110696600cSBjoern A. Zeeb
120696600cSBjoern A. Zeebname="rfcomm_pppd_server"
130696600cSBjoern A. Zeebdesc="RFCOMM PPP daemon"
140696600cSBjoern A. Zeebrcvar="rfcomm_pppd_server_enable"
150696600cSBjoern A. Zeebcommand="/usr/sbin/rfcomm_pppd"
160696600cSBjoern A. Zeebstart_cmd="rfcomm_pppd_server_start"
170696600cSBjoern A. Zeebstop_cmd="rfcomm_pppd_server_stop"
180696600cSBjoern A. Zeebrequired_modules="ng_btsocket"
190696600cSBjoern A. Zeeb
200696600cSBjoern A. Zeebrfcomm_pppd_server_start_profile()
210696600cSBjoern A. Zeeb{
220696600cSBjoern A. Zeeb	local _profile _profile_cleaned _punct _punct_c
230696600cSBjoern A. Zeeb	local _bdaddr _channel _x
240696600cSBjoern A. Zeeb
250696600cSBjoern A. Zeeb	_profile=$1
260696600cSBjoern A. Zeeb	_profile_cleaned=$1
270696600cSBjoern A. Zeeb
280696600cSBjoern A. Zeeb	_punct=". - / +"
290696600cSBjoern A. Zeeb	for _punct_c in ${_punct} ; do
300696600cSBjoern A. Zeeb		_profile_cleaned=`ltr ${_profile_cleaned} ${_punct_c} '_'`
310696600cSBjoern A. Zeeb	done
320696600cSBjoern A. Zeeb
330696600cSBjoern A. Zeeb	rc_flags=""
340696600cSBjoern A. Zeeb
350696600cSBjoern A. Zeeb	# Check for RFCOMM PPP profile bdaddr override
360696600cSBjoern A. Zeeb	#
370696600cSBjoern A. Zeeb	eval _bdaddr=\$rfcomm_pppd_server_${_profile_cleaned}_bdaddr
380696600cSBjoern A. Zeeb	if [ -n "${_bdaddr}" ]; then
390696600cSBjoern A. Zeeb		rc_flags="${rc_flags} -a ${_bdaddr}"
400696600cSBjoern A. Zeeb	fi
410696600cSBjoern A. Zeeb
420696600cSBjoern A. Zeeb	# Check for RFCOMM PPP profile channel override
430696600cSBjoern A. Zeeb	#
440696600cSBjoern A. Zeeb	eval _channel=\$rfcomm_pppd_server_${_profile_cleaned}_channel
450696600cSBjoern A. Zeeb	if [ -z "${_channel}" ]; then
460696600cSBjoern A. Zeeb		_channel=1
470696600cSBjoern A. Zeeb	fi
480696600cSBjoern A. Zeeb	rc_flags="${rc_flags} -C ${_channel}"
490696600cSBjoern A. Zeeb
500696600cSBjoern A. Zeeb	# Check for RFCOMM PPP profile register SP override
510696600cSBjoern A. Zeeb	#
520696600cSBjoern A. Zeeb	eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_sp
530696600cSBjoern A. Zeeb	if [ -n "${_x}" ]; then
540696600cSBjoern A. Zeeb		if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_sp" ; then
550696600cSBjoern A. Zeeb			rc_flags="${rc_flags} -S"
560696600cSBjoern A. Zeeb		fi
570696600cSBjoern A. Zeeb	fi
580696600cSBjoern A. Zeeb
590696600cSBjoern A. Zeeb	# Check for RFCOMM PPP profile register DUN override
600696600cSBjoern A. Zeeb	#
610696600cSBjoern A. Zeeb	eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_dun
620696600cSBjoern A. Zeeb	if [ -n "${_x}" ]; then
630696600cSBjoern A. Zeeb		if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_dun" ; then
640696600cSBjoern A. Zeeb			rc_flags="${rc_flags} -D"
650696600cSBjoern A. Zeeb		fi
660696600cSBjoern A. Zeeb	fi
670696600cSBjoern A. Zeeb
680696600cSBjoern A. Zeeb	# Run!
690696600cSBjoern A. Zeeb	#
700696600cSBjoern A. Zeeb	$command -s ${rc_flags} -l ${_profile}
710696600cSBjoern A. Zeeb}
720696600cSBjoern A. Zeeb
730696600cSBjoern A. Zeebrfcomm_pppd_server_stop_profile()
740696600cSBjoern A. Zeeb{
750696600cSBjoern A. Zeeb	local _profile
760696600cSBjoern A. Zeeb
770696600cSBjoern A. Zeeb	_profile=$1
780696600cSBjoern A. Zeeb
790696600cSBjoern A. Zeeb	/bin/pkill -f "^${command}.*[[:space:]]${_profile}\$" || \
800696600cSBjoern A. Zeeb		echo -n "(not running)"
810696600cSBjoern A. Zeeb}
820696600cSBjoern A. Zeeb
830696600cSBjoern A. Zeebrfcomm_pppd_server_start()
840696600cSBjoern A. Zeeb{
850696600cSBjoern A. Zeeb	local _profile _p
860696600cSBjoern A. Zeeb
870696600cSBjoern A. Zeeb	_profile=$*
880696600cSBjoern A. Zeeb	if [ -z "${_profile}" ]; then
890696600cSBjoern A. Zeeb		_profile=${rfcomm_pppd_server_profile}
900696600cSBjoern A. Zeeb	fi
910696600cSBjoern A. Zeeb
9219a6267dSJose Luis Duran	startmsg -n "Starting RFCOMM PPP profile:"
930696600cSBjoern A. Zeeb
940696600cSBjoern A. Zeeb	for _p in ${_profile} ; do
9519a6267dSJose Luis Duran		startmsg -n " ${_p}"
960696600cSBjoern A. Zeeb		rfcomm_pppd_server_start_profile ${_p}
970696600cSBjoern A. Zeeb	done
980696600cSBjoern A. Zeeb
9919a6267dSJose Luis Duran	startmsg "."
1000696600cSBjoern A. Zeeb}
1010696600cSBjoern A. Zeeb
1020696600cSBjoern A. Zeebrfcomm_pppd_server_stop()
1030696600cSBjoern A. Zeeb{
1040696600cSBjoern A. Zeeb	local _profile _p
1050696600cSBjoern A. Zeeb
1060696600cSBjoern A. Zeeb	_profile=$*
1070696600cSBjoern A. Zeeb	if [ -z "${_profile}" ]; then
1080696600cSBjoern A. Zeeb		_profile=${rfcomm_pppd_server_profile}
1090696600cSBjoern A. Zeeb	fi
1100696600cSBjoern A. Zeeb
1110696600cSBjoern A. Zeeb	echo -n "Stopping RFCOMM PPP profile:"
1120696600cSBjoern A. Zeeb
1130696600cSBjoern A. Zeeb	for _p in ${_profile} ; do
1140696600cSBjoern A. Zeeb		echo -n " ${_p}"
1150696600cSBjoern A. Zeeb		rfcomm_pppd_server_stop_profile ${_p}
1160696600cSBjoern A. Zeeb	done
1170696600cSBjoern A. Zeeb
1180696600cSBjoern A. Zeeb	echo "."
1190696600cSBjoern A. Zeeb}
1200696600cSBjoern A. Zeeb
1210696600cSBjoern A. Zeebload_rc_config $name
122*f99f0ee1SAlexander Leidinger
123*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: nojail keyword
124*f99f0ee1SAlexander Leidingerrfcomm_pppd_server_svcj="NO"
125*f99f0ee1SAlexander Leidinger
1260696600cSBjoern A. Zeebrun_rc_command $*
127