+++ /dev/null
-#!/bin/bash
-###############################################################################
-# #
-# IPFire.org - A linux based firewall #
-# Copyright (C) 2010 Michael Tremer & Christian Schmidt #
-# #
-# 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/header-config
-
-HOOK_SETTINGS="HOOK MTU SERVICE_NAME SUBNET MAX_SESSIONS"
-
-# Maximum Transmission Unit.
-MTU=1492
-
-# Service Name.
-SERVICE_NAME=
-
-# A subnet. Addresses from this subnet will be given to the remote hosts.
-# The net address will be the gateway address for the PPPoE server.
-SUBNET=
-
-# Defines the max. number of sessions per MAC address.
-# 0 = unlimited.
-MAX_SESSIONS=0
-
-function hook_check() {
- assert isset MTU
- assert isset SUBNET
- assert isset MAX_SESSIONS
-}
-
-function hook_create() {
- local zone=${1}
- shift
-
- while [ $# -gt 0 ]; do
- case "${1}" in
- --max-sessions=*)
- MAX_SESSIONS=$(cli_get_val ${1})
- ;;
- --mtu=*)
- MTU=$(cli_get_val ${1})
- ;;
- --service-name=*)
- SERVICE_NAME=$(cli_get_val ${1})
- ;;
- --subnet=*)
- SUBNET=$(cli_get_val ${1})
- ;;
- esac
- shift
- done
-
- config_write $(zone_dir ${zone})/configs/${HOOK} ${HOOK_SETTINGS}
-
- exit ${EXIT_OK}
-}
-
-function hook_up() {
- local zone=${1}
- local config=${2}
- shift 2
-
- # Start the PPPoE server.
- pppoe_server_start ${zone}
-
- exit ${EXIT_OK}
-}
-
-function hook_down() {
- local zone=${1}
- local config=${2}
- shift 2
-
- if ! device_exists ${zone}; then
- error "Zone '${zone}' doesn't exist."
- exit ${EXIT_ERROR}
- fi
-
- # Stop the PPPoE server.
- pppoe_server_stop ${zone}
-
- exit ${EXIT_OK}
-}
-
-function hook_status() {
- local zone=${1}
- local config=${2}
- shift 2
-
- if ! device_exists ${zone}; then
- error "Zone '${zone}' doesn't exist."
- exit ${EXIT_ERROR}
- fi
-
- config_read $(zone_dir ${zone})/configs/${config}
-
- local status
- if pppoe_server_status ${zone}; then
- status="${MSG_HOOK_UP}"
- else
- status="${MSG_HOOK_DOWN}"
- fi
- cli_statusline 3 "PPPoE server" "${status}"
-
- local gateway=$(ipv4_get_network ${SUBNET})
- cli_print_fmt1 3 "Gateway" "${gateway}"
-
- local start_address=$(ipv4_encode ${gateway})
- start_address=$(( ${start_address} + 1 ))
- start_address=$(ipv4_decode ${start_address})
- local end_address=$(ipv4_get_broadcast ${SUBNET})
-
- cli_print_fmt1 3 "Client range" \
- "${start_address}-${end_address}"
- cli_space
-
- local max_sessions=${MAX_SESSIONS}
- if [ "${max_sessions}" = "0" ]; then
- max_sessions="unlimited"
- fi
- cli_print_fmt1 3 "${max_sessions} session(s) per MAC"
- cli_space
-
- exit ${EXIT_OK}
-}