. /usr/lib/network/header-zone
-HOOK_SETTINGS="HOOK ACCESS_CONCENTRATOR AUTH USERNAME PASSWORD"
-HOOK_SETTINGS="${HOOK_SETTINGS} SERVICE_NAME MTU IPV6 PREFIX_DELEGATION"
-
-# User credentials for the dialin.
-USERNAME=""
-PASSWORD=""
-
-# Set the authentication mechanism.
-AUTH=
-
-# Access Concentrator.
-ACCESS_CONCENTRATOR=""
-
-# Service name.
-SERVICE_NAME=""
-
-# Maximum Transmission Unit.
-# 1492 is a very common value for that.
-MTU=1492
+HOOK_SETTINGS=(
+ "ACCESS_CONCENTRATOR"
+ "AUTH"
+ "USERNAME"
+ "PASSWORD"
+ "SERVICE_NAME"
+ "MTU"
+ "IPV6"
+ "PREFIX_DELEGATION"
+)
# This hook can work with all authentication methods supported by pppd.
PPPOE_SUPPORTED_AUTH_METHODS="${PPP_SUPPORTED_AUTH_METHODS}"
PPPOE_PLUGIN="rp-pppoe.so"
# Request an IPv6 address.
-IPV6="true"
+DEFAULT_IPV6="true"
# Use IPv6 prefix delegation.
-PREFIX_DELEGATION="true"
+DEFAULT_PREFIX_DELEGATION="true"
hook_check_settings() {
assert isset USERNAME
while [ $# -gt 0 ]; do
case "${1}" in
--access-concentrator=*)
- ACCESS_CONCENTRATOR=$(cli_get_val ${1})
+ ACCESS_CONCENTRATOR=$(cli_get_val "${1}")
;;
--auth=*)
- AUTH=$(cli_get_val ${1})
+ AUTH=$(cli_get_val "${1}")
;;
--ipv6=*)
local value="$(cli_get_val "${1}")"
fi
;;
--mtu=*)
- MTU=$(cli_get_val ${1})
+ MTU=$(cli_get_val "${1}")
;;
--password=*)
- PASSWORD=$(cli_get_val ${1})
+ PASSWORD=$(cli_get_val "${1}")
;;
--prefix-delegation=*)
PREFIX_DELEGATION="$(cli_get_bool "${1}")"
;;
--service-name=*)
- SERVICE_NAME=$(cli_get_val ${1})
+ SERVICE_NAME=$(cli_get_val "${1}")
;;
--username=*)
- USERNAME=$(cli_get_val ${1})
+ USERNAME=$(cli_get_val "${1}")
;;
*)
warning "Unknown argument: ${1}" >&2
zone_settings_read "${zone}"
+ # Load the pppoe kernel module
+ module_load "pppoe"
+
# Bring up the port.
port_up "${port}"
pppd_stop ${zone}
# Bring down the port.
- log DEBUG "Bringing down port '${PORT}'."
- port_down ${PORT}
+ local port=$(__hook_get_port "${zone}")
+ if isset port; then
+ log DEBUG "Bringing down port '${port}'"
+ port_down "${port}"
+ fi
exit ${EXIT_OK}
}
# XXX display time since connection started
cli_headline 2 "Point-to-Point-over-Ethernet protocol"
+ cli_print_fmt1 2 "MAC-Remote" "$(db_get "${zone}/remote-address")"
+ cli_space
+
local proto
for proto in ${IP_SUPPORTED_PROTOCOLS}; do
- routing_db_exists ${zone} ${proto} || continue
+ db_exists "${zone}/${proto}" || continue
local headline
case "${proto}" in
esac
cli_headline 3 "${headline}"
- cli_print_fmt1 3 "IP address" "$(routing_db_get ${zone} ${proto} local-ip-address)"
- cli_print_fmt1 3 "Gateway" "$(routing_db_get ${zone} ${proto} remote-ip-address)"
- cli_print_fmt1 3 "DNS servers" "$(routing_db_get ${zone} ${proto} dns)"
- cli_space
- cli_print_fmt1 3 "MAC-Remote" "$(routing_db_get ${zone} ${proto} remote-address)"
+ cli_print_fmt1 3 "IP address" "$(db_get "${zone}/${proto}/local-ip-address")"
+ cli_print_fmt1 3 "Gateway" "$(db_get "${zone}/${proto}/remote-ip-address")"
+ cli_print_fmt1 3 "DNS servers" "$(db_get "${zone}/${proto}/domain-name-servers")"
cli_space
done
exit ${EXIT_OK}
}
+hook_port_up() {
+ assert [ $# -eq 2 ]
+
+ local zone="${1}"
+ local port="${2}"
+
+ # Try bringing up the port if it has not been brought up before
+ if ! device_exists "${port}"; then
+ port_create "${port}"
+ fi
+
+ # Make sure that the port is up
+ port_up "${port}"
+
+ exit ${EXIT_OK}
+}
+
+hook_port_down() {
+ assert [ $# -eq 2 ]
+
+ local zone="${1}"
+ local port="${2}"
+
+ if device_exists "${port}"; then
+ port_down "${port}"
+ fi
+
+ exit ${EXIT_OK}
+}
+
hook_ppp_ipv6_up() {
local zone="${1}"