#---------------------------------------------------------------------------- # /var/installl/include/retore-ip-eth - configuration of ethernet cards # # Creation : 2022-12-29 hbfl # 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. #---------------------------------------------------------------------------- # # update the ip-eth after a special package was stopped to restore default settings # included from bonding, brigde, etc.. # # --------------------------------------------------------------------------- # 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 } 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 eval ip_n='${IP_ETH_'${idx}'_IP_N}' if [ ${ip_n} -eq 0 ] then idx=$((${idx} + 1)) continue fi idy=1 while [ ${idy} -le ${ip_n:-0} ] do eval ipaddr='${IP_ETH_'${idx}'_IP_'${idy}'_IPADDR}' eval network='${IP_ETH_'${idx}'_IP_'${idy}'_NETWORK}' eval netmask='${IP_ETH_'${idx}'_IP_'${idy}'_NETMASK}' netmaskbits=$(/usr/bin/netcalc netmaskbits ${network}:${netmask}) # skip configuration if no ip name and ip address set if [ -n "${name}" -a -n "${ipaddr}" -a "${ipaddr}" != "0.0.0.0" ] then if [ ${idy} -ge 2 ] then /usr/sbin/ip addr add ${ipaddr}/${netmaskbits} brd + dev ${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 # wait for device state to become 'UP' (check value between angle brackets) jdx=10 while /usr/sbin/ip link show ${name} | /usr/bin/grep -i -q 'state DOWN' do if [ ${jdx} -lt 2 ] then echo " failed to start network interface '${name}'!" break else echo " waiting ${jdx} seconds for network interface '${name}' to be up." jdx=$((${jdx} - 2)) sleep 2 fi done fi idy=$((${idy} + 1)) done idx0=${idx} idx=$((${idx} + 1)) done