Current Path : /sbin/ |
|
Current File : //sbin/ifup |
#!/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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 <device name>" >&2
exit 1
}
need_config "${CONFIG}"
[ -f "${CONFIG}" ] || {
echo $"$0: configuration for ${1} not found." >&2
echo $"Usage: ifup <device name>" >&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" ]; then
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 ${PHYSDEV} || {
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
ip link add dev ${DEVICE} link ${PHYSDEV} type vlan id ${VID} ${FLAG_REORDER_HDR} || {
(/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
}
fi
VDEV=`echo ${DEVICE} | sed -n 's/\(.\+\)\.\([0-9]\{1,4\}\)$/\1\/\2/p'`
if [ ! "${VDEV}" = "" ]; then
FILELIST=""
for FILE in /etc/sysctl.d/* ; do
is_ignored_file "${FILE}" && continue
test -f "${FILE}" && FILELIST=${FILELIST}" "${FILE}
done
grep -h "\.${VDEV}\." /etc/sysctl.conf ${FILELIST} | grep -v -e "^\s*;" -e "^\s*#" | sed -n 's/^\s*\(\S\+\)\s*=\s*\(\S\+\)/\1=\2/p' |
while read LINE ; do
sysctl -w "${LINE}"
done
fi
fi
fi
# Old BOOTP variable
if [ "${BOOTP}" = "yes" ]; then
BOOTPROTO=bootp
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-eth"
fi
exec ${OTHERSCRIPT} ${CONFIG} $2
Copyright 2K16 - 2K18 Indonesian Hacker Rulez