summaryrefslogtreecommitdiff
path: root/ifup
diff options
context:
space:
mode:
Diffstat (limited to 'ifup')
-rwxr-xr-xifup136
1 files changed, 136 insertions, 0 deletions
diff --git a/ifup b/ifup
new file mode 100755
index 0000000..7466150
--- /dev/null
+++ b/ifup
@@ -0,0 +1,136 @@
+#!/bin/sh
+########################################################################
+# Begin /sbin/ifup
+#
+# Description : Interface Up
+#
+# Authors : Nathan Coulson - nathan@linuxfromscratch.org
+# Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version : LFS 7.2
+#
+# Notes : The IFCONFIG variable is passed to the SERVICE script
+# in the /lib/services directory, to indicate what file the
+# service should source to get interface specifications.
+#
+########################################################################
+
+up()
+{
+ if ip link show $1 > /dev/null 2>&1; then
+ link_status=`ip link show $1`
+
+ if [ -n "${link_status}" ]; then
+ if ! echo "${link_status}" | grep -q UP; then
+ ip link set $1 up
+ fi
+ fi
+
+ else
+ echo "Interface ${IFACE} doesn't exist."
+ exit 1
+ fi
+}
+
+RELEASE="7.2"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifup, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --help | -h) help="y"; break ;;
+
+ --version | -V) echo "${VERSTR}"; exit 0 ;;
+
+ -*) echo "ifup: ${1}: invalid option" >&2
+ echo "${USAGE}" >& 2
+ exit 2 ;;
+
+ *) break ;;
+ esac
+done
+
+if [ -n "$help" ]; then
+ echo "${VERSTR}"
+ echo "${USAGE}"
+ echo
+ cat << HERE_EOF
+ifup is used to bring up a network interface. The interface
+parameter, e.g. eth0 or eth0:2, must match the trailing part of the
+interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
+
+HERE_EOF
+ exit 0
+fi
+
+file=/etc/sysconfig/ifconfig.${1}
+
+# Skip backup files
+[ "${file}" = "${file%""~""}" ] || exit 0
+
+#. /lib/lsb/init-functions
+
+echo "Bringing up the ${1} interface... "
+
+if [ ! -r "${file}" ]; then
+ echo "${file} is missing or cannot be accessed."
+ exit 1
+fi
+
+. $file
+
+if [ "$IFACE" = "" ]; then
+ echo "${file} does not define an interface [IFACE]."
+ exit 1
+fi
+
+# Do not process this service if started by boot, and ONBOOT
+# is not set to yes
+if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
+ echo "skipped"
+ exit 0
+fi
+
+for S in ${SERVICE}; do
+ if [ ! -x "/lib/services/${S}" ]; then
+ echo "Unable to process ${file}. Either "
+ echo "${MSG}the SERVICE '${S} was not present "
+ echo "${MSG}or cannot be executed."
+ echo "$MSG"
+ exit 1
+ fi
+done
+
+# Create/configure the interface
+for S in ${SERVICE}; do
+ IFCONFIG=${file} /lib/services/${S} ${IFACE} up
+done
+
+# Bring up the interface and any components
+for I in $IFACE $INTERFACE_COMPONENTS; do up $I; done
+
+# Set MTU if requested. Check if MTU has a "good" value.
+if test -n "${MTU}"; then
+ if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then
+ for I in $IFACE $INTERFACE_COMPONENTS; do
+ ip link set dev $I mtu $MTU;
+ done
+ else
+ echo "Invalid MTU $MTU"
+ fi
+fi
+
+# Set the route default gateway if requested
+if [ -n "${GATEWAY}" ]; then
+ if ip route | grep -q default; then
+ echo "Gateway already setup; skipping."
+ else
+ echo "Setting up default gateway..."
+ ip route add default via ${GATEWAY} dev ${IFACE}
+ #evaluate_retval
+ fi
+fi
+
+# End /sbin/ifup