#!/bin/sh # # $Id: ifup,v 1.21 1999/08/25 14:15:36 mikrobi Exp $ # PATH=/sbin:/usr/sbin:/bin:/usr/bin cd /etc/sysconfig/network-scripts . /etc/sysconfig/network . /etc/rc.d/init.d/functions.network need_hostname CONFIG=$1 [ -z "$CONFIG" ] && { echo "usage: ifup " >&2 exit 1 } [ -f "/etc/sysconfig/interfaces/$CONFIG" ] || CONFIG=ifcfg-$CONFIG [ -f "/etc/sysconfig/interfaces/$CONFIG" ] || { echo "usage: ifup " >&2 exit 1 } if [ `id -u` != 0 ]; then if [ -x /usr/sbin/usernetctl ]; then exec /usr/sbin/usernetctl $CONFIG up fi echo "Users cannot control this device." >&2 exit 1 fi source_config if [ "foo$2" == "fooboot" -a "${ONBOOT}" == "no" ]; then exit fi IPSETUP=no # pelna nazwa dewajsa jaka podal user FULLDEVNAME="$DEVICE" # przyjmuje wartość np: "dummy" czy "eth" DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"` # przyjmuje eth0 przy {eth0,eth0:1,eth0:alias} DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'` if echo "$FULLDEVNAME" | grep -q ':' ; then ISALIAS=yes else ISALIAS=no fi # Old BOOTP variable if [ "$BOOTP" == "yes" ]; then BOOTPROTO=bootp fi if [ "$BOOTPROTO" == bootp -o "$BOOTPROTO" == "dhcp" ]; then PUMP=true fi # Is interface IPv6 only ? [ -z "$IPADDR" -a "$PUMP" != "true" ] && IPv6_ONLY=yes || IPv6_ONLY="" if [ -z "$IPv6_ONLY" ]; then if [ -z "$PREFIX" ] && [ -n "$NETMASK" ]; then PREFIX="`calcprefix $NETMASK`" fi if [ -z "$NETMASK" ] && [ -n "$PREFIX" ]; then NETMASK="`calcnetmask $PREFIX`" fi fi [ "$MULTICAST" == "yes" ] && MULTICAST=on || MULTICAST=off [ -z "$ARP" ] && ARP=yes [ "$ARP" == "yes" ] && ARP=on || ARP=off [ -n "$SRC_ADDR" ] && SRC_ADDR="src ${SRC_ADDR}" || SRC_ADDR="" [ -z "$PROTOCOL" ] && PROTOCOL=ip OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}" if [ -x "$OTHERSCRIPT" -a -z "$IPv6_ONLY" ]; then if [ "$DEFAULTHANDLING" == "yes" ]; then $OTHERSCRIPT $CONFIG $2 else exec $OTHERSCRIPT $CONFIG $2 fi fi # is this device available? (this catches PCMCIA devices for us) if ! (/sbin/ip link set arp ${ARP} dev ${DEVICE} > /dev/null 2>&1); then echo "Delaying ${FULLDEVNAME} initialization." exit 0 fi if [ "$SLAVE" == "yes" -a "$ISALIAS" == "no" -a "$MASTER" != "" -a -x /sbin/ifenslave ]; then RFLAG="" ; [ "${RECIEVE-ONLY}" == "yes" ] && RFLAG="-r" ip link set ${DEVICE} down echo "Enslaving $DEVICE to $MASTER" ifenslave $RFLAG "$MASTER" "$DEVICE" exit 0 fi if [ -n "$MACADDR" ]; then ip link set ${DEVICE} address ${MACADDR} fi if [ -n "$PUMP" ] && [ "$ISALIAS" == "no" ]; then echo -n "Determining IP information for $DEVICEFULLNAME..." if /sbin/pump -i $DEVICEFULLNAME ; then echo " done." else echo " failed." exit 1 fi else if [ -z "$IPv6_ONLY" ]; then if [ -z "$PREFIX" ]; then eval `/bin/ipcalc --prefix ${IPADDR}` fi if [ -z "$BROADCAST" ]; then eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}` fi if [ -z "$NETWORK" ]; then eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}` fi fi ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} up if [ -z "$IPv6_ONLY" ]; then ip -family inet addr add ${IPADDR}/${PREFIX} broadcast ${BROADCAST} dev ${DEVICE} label ${FULLDEVNAME} fi # IPv6 rules if [ "${IPV6_NETWORKING}" == "yes" ] ; then for ADDR in ${IPV6_ADDR} ; do ip -family inet6 addr add ${ADDR} dev ${DEVICE} label ${FULLDEVNAME} ip -family inet6 route add ${ADDR} dev ${DEVICE} done if [ -z "$IPv6_ONLY" ]; then ip -family inet6 addr add fe80::${IPADDR} dev ${DEVICE} label ${FULLDEVNAME} scope link fi fi # hack for 2.2 kernels if [ -z "$IPv6_ONLY" ]; then if [ "$ISALIAS" == "no" ] && [ -z "`ip -f inet route | sed "s/ .*//" | grep ${NETWORK}`" ]; then ip -family inet route add ${NETWORK}/${PREFIX} dev ${DEVICE} ${SRC_ADDR} else ip -family inet route add ${IPADDR}/32 dev ${DEVICE} ${SRC_ADDR} fi fi . /etc/sysconfig/network if [ "${GATEWAY}" != "" ]; then if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${DEVICE}" ]; then # set up default gateway ip -family inet route add default via ${GATEWAY} dev ${DEVICE} ${SRC_ADDR} DEFGW=${GATEWAY} fi fi if [ "$BOOTPROTO" = bootp -a "$ISALIAS" = no ]; then if [ -n "$GATEWAYS" ]; then for gw in $GATEWAYS; do if [ "$gw" != "${DEFGW}" ]; then ip -family inet route add default via $gw dev ${DEVICE} ${SRC_ADDR} fi done fi if [ -n "$DNSSRVS" -a -n "$SEARCH" ]; then echo "search $SEARCH" > /etc/resolv.conf for dns in $DNSSRVS; do echo "nameserver $dns" >> /etc/resolv.conf done fi if [ -n "$BOOTPHOSTNAME" -a -n "$NEEDHOSTNAME" ]; then set_hostname $BOOTPHOSTNAME fi fi fi if [ "$IPX" == yes ]; then /etc/sysconfig/network-scripts/ifup-ipx $DEVICE fi exec /etc/sysconfig/network-scripts/ifup-post $CONFIG