#!/bin/sh ######################################################################## # Begin $NETWORK_DEVICES/services/ipv4-static-route # # Description : IPV4 Static Route Script # # Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org # # Version : 00.00 # # Notes : # ######################################################################## . /lib/network/hook-header HOOK_NAME=ipv4-static-route HOOK_TYPE=zone function check_config() { args= case "${TYPE}" in ""|network) need_ip=1 need_gateway=1 ;; default) need_gateway=1 args="${args} default" desc="default" ;; host) need_ip=1 ;; unreachable) need_ip=1 args="${args} unreachable" desc="unreachable" ;; *) log_failure_msg "Unknown route type (${TYPE}) in ${CONFIG}, cannot continue." exit ${EXIT_CONF_ERROR} ;; esac if [ -n "${need_ip}" ]; then if [ -z "${IP}" ]; then log_failure_msg "IP variable missing from ${CONFIG}, cannot continue." exit ${EXIT_CONF_ERROR} fi if [ -z "${PREFIX}" ]; then log_failure_msg "PREFIX variable missing from ${CONFIG}, cannot continue." exit ${EXIT_CONF_ERROR} fi args="${args} ${IP}/${PREFIX}" desc="${desc}${IP}/${PREFIX}" fi if [ -n "${need_gateway}" ]; then if [ -z "${GATEWAY}" ]; then log_failure_msg "GATEWAY variable missing from ${CONFIG}, cannot continue." exit ${EXIT_CONF_ERROR} fi args="${args} via ${GATEWAY}" fi } case "${action}" in add) while [ $# -gt 0 ]; do case "${1}" in --ip=*) IP=${1#--ip=} ;; --gateway=*) GATEWAY=${1#--gateway=} ;; --prefix=*) PREFIX=${1#--prefix=} ;; --type=*) TYPE=${1#--type=} ;; esac shift done check_config cat <${CONFIG_ZONES}/${zone}/${HOOK_NAME}_${IP-${GATEWAY}} HOOK="${HOOK_NAME}" IP="${IP}" GATEWAY="${GATEWAY}" PREFIX="${PREFIX}" TYPE="${TYPE}" EOF [ "$?" = "0" ] && exit ${EXIT_OK} || exit ${EXIT_ERROR} ;; help) ;; info) echo "HOOK_NAME=${HOOK_NAME}" echo "HOOK_TYPE=${HOOK_TYPE}" ;; pre-up) ;; post-up) boot_mesg "Adding '${desc}' route to zone ${zone}..." ip route add ${args} dev ${zone} evaluate_retval ;; pre-down) boot_mesg "Removing '${desc}' route from zone ${zone}..." ip route del ${args} dev ${zone} evaluate_retval ;; post-down) ;; discover) exit ${EXIT_ERROR} ;; *) echo "Usage: ${0} [interface] {up|down}" exit 1 ;; esac # End $NETWORK_DEVICES/services/ipv4-static-route