10696600cSBjoern A. Zeeb#!/bin/sh 20696600cSBjoern A. Zeeb# 30696600cSBjoern A. Zeeb# 40696600cSBjoern A. Zeeb 50696600cSBjoern A. Zeeb# PROVIDE: ppp 60696600cSBjoern A. Zeeb# REQUIRE: netif 70696600cSBjoern A. Zeeb# KEYWORD: nojail 80696600cSBjoern A. Zeeb 90696600cSBjoern A. Zeeb. /etc/rc.subr 100696600cSBjoern A. Zeeb 110696600cSBjoern A. Zeebname="ppp" 120696600cSBjoern A. Zeebdesc="Point to Point Protocol" 130696600cSBjoern A. Zeebrcvar="ppp_enable" 140696600cSBjoern A. Zeebcommand="/usr/sbin/${name}" 150696600cSBjoern A. Zeebstart_cmd="ppp_start" 160696600cSBjoern A. Zeebstop_cmd="ppp_stop" 170696600cSBjoern A. Zeebstart_postcmd="ppp_poststart" 180696600cSBjoern A. Zeeb 190696600cSBjoern A. Zeebppp_start_profile() 200696600cSBjoern A. Zeeb{ 210696600cSBjoern A. Zeeb local _ppp_profile _ppp_mode _ppp_nat _ppp_unit 220696600cSBjoern A. Zeeb local _ppp_profile_cleaned _punct _punct_c 230696600cSBjoern A. Zeeb 240696600cSBjoern A. Zeeb _ppp_profile=$1 250696600cSBjoern A. Zeeb _ppp_profile_cleaned=$1 260696600cSBjoern A. Zeeb _punct=". - / +" 270696600cSBjoern A. Zeeb for _punct_c in $_punct; do 280696600cSBjoern A. Zeeb _ppp_profile_cleaned=`ltr ${_ppp_profile_cleaned} ${_punct_c} '_'` 290696600cSBjoern A. Zeeb done 300696600cSBjoern A. Zeeb 310696600cSBjoern A. Zeeb # Check for ppp profile mode override. 320696600cSBjoern A. Zeeb # 330696600cSBjoern A. Zeeb eval _ppp_mode=\$ppp_${_ppp_profile_cleaned}_mode 340696600cSBjoern A. Zeeb if [ -z "$_ppp_mode" ]; then 350696600cSBjoern A. Zeeb _ppp_mode=$ppp_mode 360696600cSBjoern A. Zeeb fi 370696600cSBjoern A. Zeeb 380696600cSBjoern A. Zeeb # Check for ppp profile nat override. 390696600cSBjoern A. Zeeb # 400696600cSBjoern A. Zeeb eval _ppp_nat=\$ppp_${_ppp_profile_cleaned}_nat 410696600cSBjoern A. Zeeb if [ -z "$_ppp_nat" ]; then 420696600cSBjoern A. Zeeb _ppp_nat=$ppp_nat 430696600cSBjoern A. Zeeb fi 440696600cSBjoern A. Zeeb 450696600cSBjoern A. Zeeb # Establish ppp mode. 460696600cSBjoern A. Zeeb # 470696600cSBjoern A. Zeeb if [ "${_ppp_mode}" != "ddial" -a "${_ppp_mode}" != "direct" \ 480696600cSBjoern A. Zeeb -a "${_ppp_mode}" != "dedicated" \ 490696600cSBjoern A. Zeeb -a "${_ppp_mode}" != "background" ]; then 500696600cSBjoern A. Zeeb _ppp_mode="auto" 510696600cSBjoern A. Zeeb fi 520696600cSBjoern A. Zeeb 530696600cSBjoern A. Zeeb rc_flags="-quiet -${_ppp_mode}" 540696600cSBjoern A. Zeeb 550696600cSBjoern A. Zeeb # Switch on NAT mode? 560696600cSBjoern A. Zeeb # 570696600cSBjoern A. Zeeb case ${_ppp_nat} in 580696600cSBjoern A. Zeeb [Yy][Ee][Ss]) 590696600cSBjoern A. Zeeb rc_flags="$rc_flags -nat" 600696600cSBjoern A. Zeeb ;; 610696600cSBjoern A. Zeeb esac 620696600cSBjoern A. Zeeb 630696600cSBjoern A. Zeeb # Check for hard wired unit 640696600cSBjoern A. Zeeb eval _ppp_unit=\$ppp_${_ppp_profile_cleaned}_unit 650696600cSBjoern A. Zeeb if [ -n "${_ppp_unit}" ]; then 660696600cSBjoern A. Zeeb _ppp_unit="-unit${_ppp_unit}" 670696600cSBjoern A. Zeeb fi 680696600cSBjoern A. Zeeb rc_flags="$rc_flags $_ppp_unit" 690696600cSBjoern A. Zeeb 700696600cSBjoern A. Zeeb # Run! 710696600cSBjoern A. Zeeb # 720696600cSBjoern A. Zeeb su -m $ppp_user -c "$command ${rc_flags} ${_ppp_profile}" 730696600cSBjoern A. Zeeb} 740696600cSBjoern A. Zeeb 750696600cSBjoern A. Zeebppp_start() 760696600cSBjoern A. Zeeb{ 770696600cSBjoern A. Zeeb local _ppp_profile _p 780696600cSBjoern A. Zeeb 790696600cSBjoern A. Zeeb _ppp_profile=$* 800696600cSBjoern A. Zeeb if [ -z "${_ppp_profile}" ]; then 810696600cSBjoern A. Zeeb _ppp_profile=$ppp_profile 820696600cSBjoern A. Zeeb fi 830696600cSBjoern A. Zeeb 8419a6267dSJose Luis Duran startmsg -n "Starting PPP profile:" 850696600cSBjoern A. Zeeb 860696600cSBjoern A. Zeeb for _p in $_ppp_profile; do 8719a6267dSJose Luis Duran startmsg -n " $_p" 880696600cSBjoern A. Zeeb ppp_start_profile $_p 890696600cSBjoern A. Zeeb done 900696600cSBjoern A. Zeeb 9119a6267dSJose Luis Duran startmsg "." 920696600cSBjoern A. Zeeb} 930696600cSBjoern A. Zeeb 940696600cSBjoern A. Zeebppp_poststart() 950696600cSBjoern A. Zeeb{ 960696600cSBjoern A. Zeeb # Re-Sync ipfilter and pf so they pick up any new network interfaces 970696600cSBjoern A. Zeeb # 980696600cSBjoern A. Zeeb if [ -f /etc/rc.d/ipfilter ]; then 990696600cSBjoern A. Zeeb /etc/rc.d/ipfilter quietresync 1000696600cSBjoern A. Zeeb fi 1010696600cSBjoern A. Zeeb if [ -f /etc/rc.d/pf ]; then 1020696600cSBjoern A. Zeeb /etc/rc.d/pf quietresync 1030696600cSBjoern A. Zeeb fi 1040696600cSBjoern A. Zeeb} 1050696600cSBjoern A. Zeeb 1060696600cSBjoern A. Zeebppp_stop_profile() { 1070696600cSBjoern A. Zeeb local _ppp_profile 1080696600cSBjoern A. Zeeb 1090696600cSBjoern A. Zeeb _ppp_profile=$1 1100696600cSBjoern A. Zeeb 1110696600cSBjoern A. Zeeb /bin/pkill -f "^${command}.*[[:space:]]${_ppp_profile}\$" || \ 1120696600cSBjoern A. Zeeb echo -n "(not running)" 1130696600cSBjoern A. Zeeb} 1140696600cSBjoern A. Zeeb 1150696600cSBjoern A. Zeebppp_stop() { 1160696600cSBjoern A. Zeeb local _ppp_profile _p 1170696600cSBjoern A. Zeeb 1180696600cSBjoern A. Zeeb _ppp_profile=$* 1190696600cSBjoern A. Zeeb if [ -z "${_ppp_profile}" ]; then 1200696600cSBjoern A. Zeeb _ppp_profile=$ppp_profile 1210696600cSBjoern A. Zeeb fi 1220696600cSBjoern A. Zeeb 1230696600cSBjoern A. Zeeb echo -n "Stopping PPP profile:" 1240696600cSBjoern A. Zeeb 1250696600cSBjoern A. Zeeb for _p in $_ppp_profile; do 1260696600cSBjoern A. Zeeb echo -n " $_p" 1270696600cSBjoern A. Zeeb ppp_stop_profile $_p 1280696600cSBjoern A. Zeeb done 1290696600cSBjoern A. Zeeb 1300696600cSBjoern A. Zeeb echo "." 1310696600cSBjoern A. Zeeb} 1320696600cSBjoern A. Zeeb 1330696600cSBjoern A. Zeebload_rc_config $name 134*f99f0ee1SAlexander Leidinger 135*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: nojail keyword 136*f99f0ee1SAlexander Leidingerppp_svcj="NO" 137*f99f0ee1SAlexander Leidinger 1380696600cSBjoern A. Zeebrun_rc_command $* 139