aboutsummaryrefslogtreecommitdiffstats
path: root/network-scripts/ifup
diff options
context:
space:
mode:
Diffstat (limited to 'network-scripts/ifup')
-rwxr-xr-xnetwork-scripts/ifup164
1 files changed, 164 insertions, 0 deletions
diff --git a/network-scripts/ifup b/network-scripts/ifup
new file mode 100755
index 00000000..d25db5af
--- /dev/null
+++ b/network-scripts/ifup
@@ -0,0 +1,164 @@
+#!/bin/bash
+# Network Interface Configuration System
+# Copyright (c) 1996-2009 Red Hat, Inc. all rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License, version 2,
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+unset WINDOW # defined by screen, conflicts with our usage
+
+. /etc/init.d/functions
+
+cd /etc/sysconfig/network-scripts
+. ./network-functions
+
+[ -f ../network ] && . ../network
+
+CONFIG=${1}
+
+[ -z "${CONFIG}" ] && {
+ echo $"Usage: ifup <configuration>" >&2
+ exit 1
+}
+
+need_config "${CONFIG}"
+
+[ -f "${CONFIG}" ] || {
+ echo $"$0: configuration for ${1} not found." >&2
+ echo $"Usage: ifup <configuration>" >&2
+ exit 1
+}
+
+if [ ${UID} != 0 ]; then
+ if [ -x /usr/sbin/usernetctl ]; then
+ source_config
+ if /usr/sbin/usernetctl ${CONFIG} report ; then
+ exec /usr/sbin/usernetctl ${CONFIG} up
+ fi
+ fi
+ echo $"Users cannot control this device." >&2
+ exit 1
+fi
+
+source_config
+
+if [ "foo$2" = "fooboot" ] && [ "${ONBOOT}" = "no" -o "${ONBOOT}" = "NO" ]
+then
+ exit 0
+fi
+if [ -n "$IN_HOTPLUG" ] && [ "${HOTPLUG}" = "no" -o "${HOTPLUG}" = "NO" ]
+then
+ exit 0
+fi
+if [ -n "$IN_HOTPLUG" -a "${TYPE}" = "Bridge" ];
+then
+ exit 0
+fi
+
+if [ "$_use_nm" = "true" -a -n "$UUID" -a "$REALDEVICE" != "lo" ]; then
+ if [ "foo$2" = "fooboot" ] && [ "${TYPE}" = "Wireless" ]; then
+ exit 0
+ fi
+ [ -n "${DEVICE}" ] && is_nm_handling ${DEVICE} && exit 0
+ nmcli con up uuid "$UUID"
+ exit $?
+fi
+
+# Ethernet 802.1Q VLAN support
+if [ "${VLAN}" = "yes" ] && [ "$ISALIAS" = "no" ] && [ -n "$DEVICE" ]; then
+ if [ -n "${VID}" ]; then
+ if test -z "$PHYSDEV"; then
+ net_log $"PHYSDEV should be set for device ${DEVICE}"
+ exit 1
+ fi
+ else
+ VID=""
+ MATCH='^.+\.[0-9]{1,4}$'
+ if [[ "${DEVICE}" =~ $MATCH ]]; then
+ VID=$(echo "${DEVICE}" | LC_ALL=C sed 's/^.*\.\([0-9]\+\)/\1/')
+ PHYSDEV=${DEVICE%.*}
+ fi
+ MATCH='^vlan[0-9]{1,4}?'
+ if [[ "${DEVICE}" =~ $MATCH ]]; then
+ VID=$(echo "${DEVICE}" | LC_ALL=C sed 's/^vlan0*//')
+ # PHYSDEV should be set in ifcfg-vlan* file
+ if test -z "$PHYSDEV"; then
+ net_log $"PHYSDEV should be set for device ${DEVICE}"
+ exit 1
+ fi
+ fi
+ fi
+ if [ -n "$VID" ]; then
+ if [ ! -d /proc/net/vlan ]; then
+ if ! modprobe 8021q >/dev/null 2>&1 ; then
+ net_log $"No 802.1Q VLAN support available in kernel for device ${DEVICE}"
+ exit 1
+ fi
+ fi
+
+ is_available_wait ${PHYSDEV} ${DEVTIMEOUT} || {
+ if [ "$?" = "1" ] ; then
+ net_log $"$alias device ${DEVICE} does not seem to be present, delaying initialization."
+ exit 1
+ else
+ exit 0
+ fi
+ }
+
+ # Link on Physical device needs to be up but no ip required
+ check_device_down ${PHYSDEV} && { ip -o link set dev ${PHYSDEV} up; }
+
+ if [ ! -f /proc/net/vlan/${DEVICE} ]; then
+ if [ "${REORDER_HDR}" = "no" -o "${REORDER_HDR}" = "0" ]; then
+ FLAG_REORDER_HDR="reorder_hdr off"
+ fi
+
+ if [ "${GVRP}" = "yes" -o "${GVRP}" = "1" ]; then
+ FLAG_GVRP="gvrp on"
+ fi
+
+ ip link add dev ${DEVICE} link ${PHYSDEV} type vlan id ${VID} ${FLAG_REORDER_HDR} ${FLAG_GVRP} || {
+ (/usr/bin/logger -p daemon.info -t ifup \
+ $"ERROR: could not add vlan ${VID} as ${DEVICE} on dev ${PHYSDEV}" &) &
+ net_log $"ERROR: could not add vlan ${VID} as ${DEVICE} on dev ${PHYSDEV}"
+ exit 1
+ }
+
+ [ -n "${VLAN_EGRESS_PRIORITY_MAP}" ] && ip link set ${DEVICE} type vlan egress ${VLAN_EGRESS_PRIORITY_MAP}
+ fi
+ fi
+
+ /usr/lib/systemd/systemd-sysctl \
+ --prefix "/proc/sys/net/ipv4/conf/${DEVICE}" \
+ --prefix "/proc/sys/net/ipv6/conf/${DEVICE}"
+fi
+
+if [ "${BOOTPROTO}" = "bootp" -o "${BOOTPROTO}" = "dhcp" ]; then
+ DYNCONFIG=true
+fi
+
+if [ -x /sbin/ifup-pre-local ]; then
+ /sbin/ifup-pre-local ${CONFIG} $2
+fi
+
+OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
+
+if [ ! -x ${OTHERSCRIPT} ]; then
+ OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${TYPE}"
+fi
+
+if [ ! -x ${OTHERSCRIPT} ]; then
+ OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
+fi
+
+exec ${OTHERSCRIPT} ${CONFIG} $2