1*0696600cSBjoern A. Zeeb#!/bin/sh 2*0696600cSBjoern A. Zeeb# 3*0696600cSBjoern A. Zeeb# $FreeBSD$ 4*0696600cSBjoern A. Zeeb# 5*0696600cSBjoern A. Zeeb 6*0696600cSBjoern A. Zeeb# PROVIDE: rfcomm_pppd_server 7*0696600cSBjoern A. Zeeb# REQUIRE: DAEMON sdpd 8*0696600cSBjoern A. Zeeb# BEFORE: LOGIN 9*0696600cSBjoern A. Zeeb# KEYWORD: nojail 10*0696600cSBjoern A. Zeeb 11*0696600cSBjoern A. Zeeb. /etc/rc.subr 12*0696600cSBjoern A. Zeeb 13*0696600cSBjoern A. Zeebname="rfcomm_pppd_server" 14*0696600cSBjoern A. Zeebdesc="RFCOMM PPP daemon" 15*0696600cSBjoern A. Zeebrcvar="rfcomm_pppd_server_enable" 16*0696600cSBjoern A. Zeebcommand="/usr/sbin/rfcomm_pppd" 17*0696600cSBjoern A. Zeebstart_cmd="rfcomm_pppd_server_start" 18*0696600cSBjoern A. Zeebstop_cmd="rfcomm_pppd_server_stop" 19*0696600cSBjoern A. Zeebrequired_modules="ng_btsocket" 20*0696600cSBjoern A. Zeeb 21*0696600cSBjoern A. Zeebrfcomm_pppd_server_start_profile() 22*0696600cSBjoern A. Zeeb{ 23*0696600cSBjoern A. Zeeb local _profile _profile_cleaned _punct _punct_c 24*0696600cSBjoern A. Zeeb local _bdaddr _channel _x 25*0696600cSBjoern A. Zeeb 26*0696600cSBjoern A. Zeeb _profile=$1 27*0696600cSBjoern A. Zeeb _profile_cleaned=$1 28*0696600cSBjoern A. Zeeb 29*0696600cSBjoern A. Zeeb _punct=". - / +" 30*0696600cSBjoern A. Zeeb for _punct_c in ${_punct} ; do 31*0696600cSBjoern A. Zeeb _profile_cleaned=`ltr ${_profile_cleaned} ${_punct_c} '_'` 32*0696600cSBjoern A. Zeeb done 33*0696600cSBjoern A. Zeeb 34*0696600cSBjoern A. Zeeb rc_flags="" 35*0696600cSBjoern A. Zeeb 36*0696600cSBjoern A. Zeeb # Check for RFCOMM PPP profile bdaddr override 37*0696600cSBjoern A. Zeeb # 38*0696600cSBjoern A. Zeeb eval _bdaddr=\$rfcomm_pppd_server_${_profile_cleaned}_bdaddr 39*0696600cSBjoern A. Zeeb if [ -n "${_bdaddr}" ]; then 40*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} -a ${_bdaddr}" 41*0696600cSBjoern A. Zeeb fi 42*0696600cSBjoern A. Zeeb 43*0696600cSBjoern A. Zeeb # Check for RFCOMM PPP profile channel override 44*0696600cSBjoern A. Zeeb # 45*0696600cSBjoern A. Zeeb eval _channel=\$rfcomm_pppd_server_${_profile_cleaned}_channel 46*0696600cSBjoern A. Zeeb if [ -z "${_channel}" ]; then 47*0696600cSBjoern A. Zeeb _channel=1 48*0696600cSBjoern A. Zeeb fi 49*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} -C ${_channel}" 50*0696600cSBjoern A. Zeeb 51*0696600cSBjoern A. Zeeb # Check for RFCOMM PPP profile register SP override 52*0696600cSBjoern A. Zeeb # 53*0696600cSBjoern A. Zeeb eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_sp 54*0696600cSBjoern A. Zeeb if [ -n "${_x}" ]; then 55*0696600cSBjoern A. Zeeb if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_sp" ; then 56*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} -S" 57*0696600cSBjoern A. Zeeb fi 58*0696600cSBjoern A. Zeeb fi 59*0696600cSBjoern A. Zeeb 60*0696600cSBjoern A. Zeeb # Check for RFCOMM PPP profile register DUN override 61*0696600cSBjoern A. Zeeb # 62*0696600cSBjoern A. Zeeb eval _x=\$rfcomm_pppd_server_${_profile_cleaned}_register_dun 63*0696600cSBjoern A. Zeeb if [ -n "${_x}" ]; then 64*0696600cSBjoern A. Zeeb if checkyesno "rfcomm_pppd_server_${_profile_cleaned}_register_dun" ; then 65*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} -D" 66*0696600cSBjoern A. Zeeb fi 67*0696600cSBjoern A. Zeeb fi 68*0696600cSBjoern A. Zeeb 69*0696600cSBjoern A. Zeeb # Run! 70*0696600cSBjoern A. Zeeb # 71*0696600cSBjoern A. Zeeb $command -s ${rc_flags} -l ${_profile} 72*0696600cSBjoern A. Zeeb} 73*0696600cSBjoern A. Zeeb 74*0696600cSBjoern A. Zeebrfcomm_pppd_server_stop_profile() 75*0696600cSBjoern A. Zeeb{ 76*0696600cSBjoern A. Zeeb local _profile 77*0696600cSBjoern A. Zeeb 78*0696600cSBjoern A. Zeeb _profile=$1 79*0696600cSBjoern A. Zeeb 80*0696600cSBjoern A. Zeeb /bin/pkill -f "^${command}.*[[:space:]]${_profile}\$" || \ 81*0696600cSBjoern A. Zeeb echo -n "(not running)" 82*0696600cSBjoern A. Zeeb} 83*0696600cSBjoern A. Zeeb 84*0696600cSBjoern A. Zeebrfcomm_pppd_server_start() 85*0696600cSBjoern A. Zeeb{ 86*0696600cSBjoern A. Zeeb local _profile _p 87*0696600cSBjoern A. Zeeb 88*0696600cSBjoern A. Zeeb _profile=$* 89*0696600cSBjoern A. Zeeb if [ -z "${_profile}" ]; then 90*0696600cSBjoern A. Zeeb _profile=${rfcomm_pppd_server_profile} 91*0696600cSBjoern A. Zeeb fi 92*0696600cSBjoern A. Zeeb 93*0696600cSBjoern A. Zeeb echo -n "Starting RFCOMM PPP profile:" 94*0696600cSBjoern A. Zeeb 95*0696600cSBjoern A. Zeeb for _p in ${_profile} ; do 96*0696600cSBjoern A. Zeeb echo -n " ${_p}" 97*0696600cSBjoern A. Zeeb rfcomm_pppd_server_start_profile ${_p} 98*0696600cSBjoern A. Zeeb done 99*0696600cSBjoern A. Zeeb 100*0696600cSBjoern A. Zeeb echo "." 101*0696600cSBjoern A. Zeeb} 102*0696600cSBjoern A. Zeeb 103*0696600cSBjoern A. Zeebrfcomm_pppd_server_stop() 104*0696600cSBjoern A. Zeeb{ 105*0696600cSBjoern A. Zeeb local _profile _p 106*0696600cSBjoern A. Zeeb 107*0696600cSBjoern A. Zeeb _profile=$* 108*0696600cSBjoern A. Zeeb if [ -z "${_profile}" ]; then 109*0696600cSBjoern A. Zeeb _profile=${rfcomm_pppd_server_profile} 110*0696600cSBjoern A. Zeeb fi 111*0696600cSBjoern A. Zeeb 112*0696600cSBjoern A. Zeeb echo -n "Stopping RFCOMM PPP profile:" 113*0696600cSBjoern A. Zeeb 114*0696600cSBjoern A. Zeeb for _p in ${_profile} ; do 115*0696600cSBjoern A. Zeeb echo -n " ${_p}" 116*0696600cSBjoern A. Zeeb rfcomm_pppd_server_stop_profile ${_p} 117*0696600cSBjoern A. Zeeb done 118*0696600cSBjoern A. Zeeb 119*0696600cSBjoern A. Zeeb echo "." 120*0696600cSBjoern A. Zeeb} 121*0696600cSBjoern A. Zeeb 122*0696600cSBjoern A. Zeebload_rc_config $name 123*0696600cSBjoern A. Zeebrun_rc_command $* 124