#!/bin/bash PATH=/sbin:/usr/sbin:/bin:/usr/bin TEXTDOMAIN=initscripts cd /etc/sysconfig/network-scripts . network-functions . /etc/rc.d/init.d/functions need_hostname CONFIG=${1} [ -z "${CONFIG}" ] && { echo $"usage: ifup " >&2 exit 1 } [ -f "${CONFIG}" ] || CONFIG=ifcfg-${CONFIG} [ -f "${CONFIG}" ] || { echo $"usage: ifup " >&2 exit 1 } if [ ${UID} != 0 ]; then if [ -x /usr/sbin/usernetctl ]; then 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" -a "${ONBOOT}" = "no" -o "${ONBOOT}" = "NO" ] then exit fi IPSETUP=no DEVICETYPE=`echo ${DEVICE} | sed "s/[0-9]*$//"` REALDEVICE=`echo ${DEVICE} | sed 's/:.*//g'` if echo ${DEVICE} | grep -q ':' ; then ISALIAS=yes else ISALIAS=no fi if [ -n "${WIRELESS_ENC_KEY}" -a -x /sbin/iwconfig ]; then iwconfig ${DEVICE} enc ${WIRELESS_ENC_KEY} >/dev/null 2>&1 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 ${DEVICE} fi OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}" if [ -x ${OTHERSCRIPT} ]; then exec ${OTHERSCRIPT} ${CONFIG} $2 fi # is this device available? (this catches PCMCIA devices for us) LC_ALL= LANG= /sbin/ifconfig ${REALDEVICE} 2>&1 | grep -s "not found" > /dev/null if [ "$?" = "0" ]; then echo $"Delaying ${DEVICE} initialization." exit 1 fi if [ "${SLAVE}" = yes -a "${ISALIAS}" = no -a "${MASTER}" != "" -a \ -x /sbin/ifenslave ]; then RFLAG="" ; [ "${RECEIVEONLY}" = yes ] && RFLAG="-r" ifconfig ${DEVICE} down echo $"Enslaving ${DEVICE} to ${MASTER}" ifenslave ${RFLAG} "${MASTER}" "${DEVICE}" exit 0 fi if [ -n "${MACADDR}" ]; then ifconfig ${DEVICE} hw ether ${MACADDR} fi if [ -n "${DYNCONFIG}" ]; then PUMPARGS= DHCPCDARGS= if [ -n "${DHCP_HOSTNAME}" ]; then PUMPARGS="-h ${DHCP_HOSTNAME}" DHCPCDARGS="-h ${DHCP_HOSTNAME}" fi if [ -n "${NEEDHOSTNAME}" ]; then PUMPARGS="${PUMPARGS} --lookup-hostname" DHCPCDARGS="${DHCPCDARGS} -H" fi if [ "${PEERDNS}" = "no" ]; then PUMPARGS="${PUMPARGS} -d" DHCPDARGS="${DHCPDARGS} -R" fi echo -n $"Determining IP information for ${DEVICE}..." if [ -x /sbin/pump ] && /sbin/pump ${PUMPARGS} -i ${DEVICE} ; then echo $" done." elif [ -x /sbin/dhcpcd ] && /sbin/dhcpcd ${DHCPCDARGS} ${DEVICE} ; then echo $" done." else echo $" failed." exit 1 fi else if [ -z "${IPADDR}" ]; then # enable device without IP, useful for e.g. PPPoE ifconfig ${DEVICE} up ${MTU:+mtu $MTU} exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2} fi if [ -z "${NETMASK}" ]; then eval `/bin/ipcalc --netmask ${IPADDR}` fi if [ -z "${BROADCAST}" ]; then eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}` fi if [ -z "${NETWORK}" ]; then eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}` fi ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} \ $(toggle_value arp $ARP) \ $(toggle_value promisc $PROMISC) \ $(toggle_value allmulti $ALLMULTI) # don't re-add subnet route on 2.2 kernels, but add a route # to a non-local subnet. # stupid hack, but it should work if [ "$ISALIAS" = no ] && [ -z "`route -n | sed "s/ .*//" | grep ${NETWORK}`" ]; then route add -net ${NETWORK} netmask ${NETMASK} dev ${DEVICE} fi # this is broken! it's only here for compatibility with old RH systems if [ "${GATEWAY}" != "" -a "${GATEWAY}" != "none" ]; then route add default gw ${GATEWAY} metric 1 ${DEVICE} fi . /etc/sysconfig/network if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${DEVICE}" ]; then # set up default gateway if [ "${GATEWAY}" != "" ]; then route add default gw ${GATEWAY} ${DEVICE} DEFGW=${GATEWAY} elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then route add default ${DEVICE} fi fi fi . /etc/sysconfig/network # IPv6 initialisation? if [ "${NETWORKING_IPV6}" = "yes" ]; then /etc/sysconfig/network-scripts/ifup-ipv6 $DEVICE fi if [ "${IPX}" = yes ]; then /etc/sysconfig/network-scripts/ifup-ipx ${DEVICE} fi exec /etc/sysconfig/network-scripts/ifup-post ${CONFIG} ${2}