#!/bin/sh #---------------------------------------------------------------------------- # /etc/rc.d/ip-eth - ip configuration of ethernet cards # # Creation : 2001-02-04 fm # Last Update: $Id$ # # Copyright (c) 2001-@@YEAR@@ the eisfair team, team(at)eisfair(dot)org # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- . /etc/config.d/base . /etc/init.d/functions if [ "${IP_ETH_DEBUG}" = "yes" ] then set -x fi # --------------------------------------------------------------------------- # get network device name # --------------------------------------------------------------------------- get_name() { eth_name=${1} net_devices=$(/usr/bin/find /sys/class/net/ -maxdepth 1 -type l -printf '%f\n') # if name = eth? if echo "${net_devices}" | /usr/bin/grep -q -Ew "${eth_name}" then name=${eth_name} eth_found=true fi # if name != eth? if ! ${eth_found:-false} then name=$(echo "${net_devices}" | /usr/bin/grep -Ew '(enp[1-9]?[0-9]s[1-9]?[0-9][fu]?[1-9]?[0-9]?u?[1-9]?[0-9]?)|(en[os][1-9]?[0-9])|(enx[[:alnum:]]{12})') fi } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- case $1 in start) boot_mesg ' * Configuring ip on ethernet cards ...' idx0=0 idx=1 while [ ${idx} -le ${IP_ETH_N:-0} ] do eval name='${IP_ETH_'${idx}'_NAME}' eval ipaddr='${IP_ETH_'${idx}'_IPADDR}' eval network='${IP_ETH_'${idx}'_NETWORK}' eval netmask='${IP_ETH_'${idx}'_NETMASK}' # broadcast=$(/usr/local/bin/netcalc broadcast ${network}:${netmask}) netmaskbits=$(/usr/local/bin/netcalc netmaskbits ${network}:${netmask}) if [ -z "${name}" ] then get_name eth${idx0} fi # if no ip address, skip configuration if [ -n "${ipaddr}" -a "${ipaddr}" != "0.0.0.0" ] then # ifconfig ${name} ${ipaddr} netmask ${netmask} broadcast ${broadcast} if echo "${name}" | /usr/bin/grep -q ':' then /usr/sbin/ip addr add ${ipaddr}/${netmaskbits} dev ${name%:*} label ${name} /usr/sbin/ip link set ${name} up else /usr/sbin/ip -4 addr flush dev ${name} /usr/sbin/ip addr add ${ipaddr}/${netmaskbits} brd + dev ${name} /usr/sbin/ip link set ${name} up fi fi idx0=${idx} idx=$((${idx} + 1)) done evaluate_retval ;; stop) boot_mesg ' * Shutting down ip on ethernet cards ...' echo 'Network is going down now!' | /usr/bin/wall idx0=0 idx=1 while [ ${idx} -le ${IP_ETH_N:-0} ] do eval name='${IP_ETH_'${idx}'_NAME}' if [ -z "${name}" ] then get_name eth${idx0} fi # ifconfig ${name} down /usr/sbin/ip link set ${name} down idx0=${idx} idx=$((${idx} + 1)) done evaluate_retval ;; esac set +x # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------