#!/bin/bash
###############################################################################
#                                                                             #
# IPFire.org - A linux based firewall                                         #
# Copyright (C) 2013  IPFire Network Development Team                         #
#                                                                             #
# This program is free software: you can redistribute it and/or modify        #
# it under the terms of the GNU General Public License as published by        #
# the Free Software Foundation, either version 3 of the License, or           #
# (at your option) any later version.                                         #
#                                                                             #
# This program is distributed in the hope that it will be useful,             #
# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
# GNU General Public License for more details.                                #
#                                                                             #
# You should have received a copy of the GNU General Public License           #
# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
#                                                                             #
###############################################################################

. /usr/lib/network/functions

# Read network settings
network_settings_read

main() {
	local zone="${1}"
	assert isset zone

	if ! zone_exists "${zone}"; then
		log ERROR "Must pass valid zone: ${zone}"
		return ${EXIT_ERROR}
	fi

	# Find the hook of the zone, we got.
	local hook="$(zone_get_hook "${zone}")"
	assert isset hook

	# Write pppd configuration file.
	local config_file="${RUN_DIR}/ppp/${zone}/pppd.conf"
	hook_exec zone "${hook}" "ppp_write_config" "${zone}" "${config_file}"

	# Create trap function
	function cleanup() {
		rm -f "${config_file}"
	}
	trap "cleanup" EXIT TERM KILL

	# Start the angel process.
	pppd_angel "${zone}" "${config_file}" \
		--holdoff-time="10"
}

main "$@" || exit $?

exit ${EXIT_OK}
