Initial commit.
This commit is contained in:
170
sysconfig/network-scripts/ifup
Executable file
170
sysconfig/network-scripts/ifup
Executable file
@@ -0,0 +1,170 @@
|
||||
#!/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
|
||||
}
|
||||
|
||||
if ! [ -f /etc/sysconfig/disable-deprecation-warnings ] && ! is_true ${DEPRECATION_WARNING_ISSUED}; then
|
||||
net_log $"You are using 'ifup' script provided by 'network-scripts', which are now deprecated." warning ifup >&2
|
||||
net_log $"'network-scripts' will be removed in one of the next major releases of RHEL." warning ifup >&2
|
||||
net_log $"It is advised to switch to 'NetworkManager' instead - it provides 'ifup/ifdown' scripts as well." warning ifup >&2
|
||||
fi
|
||||
|
||||
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 dev ${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
|
||||
Reference in New Issue
Block a user