Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Oct 2007 15:49:57 -0700
From:      "Maksim Yevmenkin" <maksim.yevmenkin@gmail.com>
To:        "Mike Makonnen" <mtm@freebsd.org>
Cc:        freebsd-rc@freebsd.org
Subject:   Re: multiple instances of ppp
Message-ID:  <bb4a86c70710061549o14447dfye9553a42ef77cadc@mail.gmail.com>
In-Reply-To: <20071006215757.GA10458@terra.mike.lan>
References:  <bb4a86c70710061314j588ce9a9s6922d2c1e7100e6a@mail.gmail.com> <20071006215757.GA10458@terra.mike.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike,

On 10/6/07, Mike Makonnen <mtm@freebsd.org> wrote:
> On Sat, Oct 06, 2007 at 01:14:18PM -0700, Maksim Yevmenkin wrote:
> > hello,
> >
> > a friend of mine send me the following /etc/rc.c/ppp replacement
> > script. the idea is to start multiple instances of ppp at boot time
> > (possibly with different profiles).
> >
> > i'm not sure if this is ok to commit as it is, so i decided to ask if
> > there is a better way to handle this.
> >
> > any thoughts on the subject is very much appreciated.
>
> I like it, but it has several bugs and needs to be cleaned up first. My
> comments are inline.

thanks for your comments. what do you think about something like

# PROVIDE: ppp
# REQUIRE: netif isdnd
# KEYWORD: nojail

. /etc/rc.subr

name="ppp"
rcvar=`set_rcvar`
command="/usr/sbin/${name}"
start_cmd="ppp_start"
start_postcmd="ppp_poststart"

ppp_start_profile()
{
	local _ppp_profile, _ppp_mode, _ppp_nat

	_ppp_profile=$1

	# Check for ppp profile mode override.
	#
	eval _ppp_mode=\$ppp_${_ppp_profile}_mode
	if [ -z "$_ppp_mode" ]; then
		_ppp_mode=$ppp_mode
	fi

	# Check for ppp profile nat override.
	#
	eval _ppp_nat=\$ppp_${_ppp_profile}_nat
	if [ -z "$_ppp_nat" ]; then
		_ppp_nat=$ppp_nat
	fi

	# Establish ppp mode.
	#
	if [ "${_ppp_mode}" != "ddial" -a "${_ppp_mode}" != "direct" \
		-a "${_ppp_mode}" != "dedicated" \
		-a "${_ppp_mode}" != "background" ]; then
		_ppp_mode="auto"
	fi

	rc_flags="-quiet -${_ppp_mode}"

	# Switch on NAT mode?
	#
	case ${_ppp_nat} in
	[Yy][Ee][Ss])
		rc_flags="$rc_flags -nat"
		;;
	esac

	# Run!
	#
	echo su -m $ppp_user -c "$command ${rc_flags} ${_ppp_profile}"
}

ppp_start()
{
	local _p

	echo -n "Starting PPP profile:"

	for _p in $ppp_profile; do
		echo -n " $_p"
		ppp_start_profile $_p
	done

	echo "."
}

ppp_poststart()
{
	# Re-Sync ipfilter and pf so they pick up any new network interfaces
	#
	/etc/rc.d/ipfilter resync
	/etc/rc.d/pf resync
}

load_rc_config $name
run_rc_command "$1"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70710061549o14447dfye9553a42ef77cadc>