#!/bin/sh ######################################################################## # Begin /sbin/ifdown # # Description : Interface Up # # Authors : DJ Lucas - dj@linuxfromscratch.org # # Version : 00.02 # ######################################################################## . /lib/lsb/init-functions function get_args() { if test -z "${1}" ; then showhelp exit 1 fi while test -n "${1}" ; do case "${1}" in -c | --configfile) check_arg $1 $2 CONFIGFILE="${2}" shift 2 ;; eth* | iw* | wlan*) INTERFACE="${1}" shift 1 ;; -h | --help) showhelp exit 0 ;; *) showhelp echo "ERROR: '${1}' unknown argument" echo "" exit 2 ;; esac done } function check_arg() { echo "${2}" | grep -v "^-" > /dev/null if [ -z "${?}" -o ! -n "${2}" ]; then echo "Error: ${1} requires a valid argument." exit 2 fi } function showhelp() { echo "`/usr/bin/basename ${0}` brings up a valid network interface." echo "" echo "Options:" echo " -c --configfile The path to an interface configuration file" echo " If no configuration file is given, all files" echo " listed in ${NETWORK_DEVICES}/ifconfig. will" echo " be processed, regarless of the value of ONBOOT" echo " -h --help Show this help message and exit." echo "" echo "Examples:" echo " `/usr/bin/basename ${0}` eth0 -c ${NETWORK_DEVICES}/ifconfig.eth0/ipv4" echo " `/usr/bin/basename ${0}` eth0" echo "" echo "" } # Intialize empty variables so that the shell does not polute the script CONFIGFILE="" CONFIGDIR="" INTERFACE="" # Process command line arguments get_args ${@} # Handle common errors - No need to account for bootscripts, this should not # happen during boot or shutdown. if [ "${CONFIGFILE}x" != "x" -a ! -f "${CONFIGFILE}" ]; then echo "ERROR: ${CONFIGFILE} is not a valid network configuration file." echo "" exit 2 fi if [ "${INTERFACE}x" == "x" ]; then echo "ERROR: No interface was given" echo "" exit 2 else if ! grep "${INTERFACE}" /proc/net/dev 2>&1 > /dev/null; then echo "ERROR: ${INTERFACE} is not a valid network interface." echo "" exit 2 fi fi # If a configuration file is present, use it if [ "${CONFIGFILE}x" != "x" ]; then . "${CONFIGFILE}" if [ -x "/lib/network-services/${SERVICE}" ]; then # do the work # Check to make sure the interface is up link_status=`/sbin/ip link show "${INTERFACE}" | \ grep -o "state UP"` if [ "${link_status}" != "state UP" ]; then message="Bringing up the ${INTERFACE} interface..." /sbin/ip link set ${INTERFACE} up evaluate_retval standard fi if IFCONFIG=${CONFIGFILE} \ /lib/network-services/${SERVICE} ${INTERFACE} up; then mkdir -p "/run/network/ifconfig.${INTERFACE}" cp "${CONFIGFILE}" "/run/network/ifconfig.${INTERFACE}/" fi else echo "ERROR: Service '${SERVICE}' is not a valid service." echo "" exit 2 fi # No interface configuration file was given else # Process all available interface configuration files CONFIGDIR="/etc/network/ifconfig.${INTERFACE}" if [ -d "${CONFIGDIR}" ]; then FILES=`ls "${CONFIGDIR}"` for CONFIGFILE in ${FILES} do ( . "${CONFIGDIR}/${CONFIGFILE}" if [ -x "/lib/network-services/${SERVICE}" ]; then # Check to make sure the interface is up link_status=`/sbin/ip link show "${INTERFACE}" | \ grep -o "state UP"` if [ "${link_status}" != "state UP" ]; then message="Bringing up the ${INTERFACE} interface..." /sbin/ip link set ${INTERFACE} up evaluate_retval standard fi if IFCONFIG="${CONFIGDIR}/${CONFIGFILE}" \ /lib/network-services/${SERVICE} ${INTERFACE} up; then mkdir -p "/run/network/ifconfig.${INTERFACE}" cp "${CONFIGDIR}/${CONFIGFILE}" \ "/run/network/ifconfig.${INTERFACE}/" fi else echo "ERROR: Service '${SERVICE}' is not a valid service." echo "" exit 2 fi ) done fi fi