#!/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 " >&2 exit 1 } need_config "${CONFIG}" [ -f "${CONFIG}" ] || { echo $"$0: configuration for ${1} not found." >&2 echo $"Usage: ifup " >&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 ! 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 from distribution in near future." warning ifup >&2 net_log $"It is advised to switch to 'NetworkManager' instead - it provides 'ifup/ifdown' scripts as well." warning ifup >&2 fi if [ "foo$2" = "fooboot" ] && is_false "${ONBOOT}" then exit 0 fi if [ -n "$IN_HOTPLUG" ] && is_false "${HOTPLUG}" 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 is_true "${VLAN}" && is_false "$ISALIAS" && [ -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 is_false "${REORDER_HDR}"; then FLAG_REORDER_HDR="reorder_hdr off" fi if is_true "${GVRP}"; 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