# #
###############################################################################
-. /lib/network/header-config
+. /usr/lib/network/header-config
HOOK_SETTINGS="HOOK ADDRESS PREFIX GATEWAY"
-function _check() {
+function hook_check() {
assert isset ADDRESS
assert isinteger PREFIX
fi
}
-function _create() {
+function hook_create() {
local zone=${1}
shift
exit ${EXIT_OK}
}
-function _up() {
+function hook_up() {
local zone=${1}
local config=${2}
shift 2
config_read $(zone_dir ${zone})/configs/${config}
- if ! zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
- ip addr add ${ADDRESS}/${PREFIX} dev ${zone}
- else
- warning "Do not set IPv4 address '${ADDRESS}/${PREFIX}' because it was already configured on zone '${zone}'."
- fi
+ ip_address_add ${zone} ${ADDRESS}/${PREFIX}
- if zone_is_nonlocal ${zone} && [ -n "${GATEWAY}" ]; then
- : # XXX to be done
- fi
+ # Save configuration
+ routing_db_set ${zone} ipv4 type "${HOOK}"
+ routing_db_set ${zone} ipv4 local-ip-address "${ADDRESS}/${PREFIX}"
+ routing_db_set ${zone} ipv4 remote-ip-address "${GATEWAY}"
+ routing_db_set ${zone} ipv4 active 1
+
+ routing_update ${zone} ipv4
+ routing_default_update
exit ${EXIT_OK}
}
-function _down() {
+function hook_down() {
local zone=${1}
local config=${2}
shift 2
config_read $(zone_dir ${zone})/configs/${config}
- if zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
- ip addr del ${ADDRESS}/${PREFIX} dev ${zone}
- fi
+ ip_address_del ${zone} ${ADDRESS}/${PREFIX}
+
+ # Update routing tables.
+ routing_default_update
exit ${EXIT_OK}
}
-function _status() {
+function hook_status() {
local zone=${1}
local config=${2}
shift 2
config_read $(zone_dir ${zone})/configs/${config}
- printf " %10s - " "${HOOK}"
- if zone_has_ipv4 ${zone} ${ADDRESS}/${PREFIX}; then
- echo -ne "${COLOUR_ENABLED}ENABLED ${COLOUR_NORMAL}"
+ local status
+ if zone_has_ip ${zone} ${ADDRESS}/${PREFIX}; then
+ status=${MSG_HOOK_UP}
else
- echo -ne "${COLOUR_DISABLED}DISABLED${COLOUR_NORMAL}"
+ status=${MSG_HOOK_DOWN}
fi
- echo " - ${ADDRESS}/${PREFIX}"
+ cli_statusline 3 "${HOOK}" "${status}"
+ cli_print_fmt1 3 "IPv4 address" "${ADDRESS}/${PREFIX}"
if [ -n "${GATEWAY}" ]; then
- echo " Gateway: ${GATEWAY}"
+ cli_print_fmt1 3 "Gateway" "${GATEWAY}"
fi
+ cli_space
exit ${EXIT_OK}
}
echo ${cidr}
fi
}
-
-run $@