#!/bin/sh
set -e
exec 9<$0
flock -x 9
case $2 in
    add)
        dev=$1
        devid=
        if [ -e /sys/class/net/${dev}/device ]; then
            eval $(readlink -f /sys/class/net/${dev}/device | sed 's#/sys/devices/\(.*\)#devid=\1#')
        else
            exit
        fi
        while read i n; do
            expr match "$i" "#" >/dev/null && continue || :
            [ -n "${devid}" ] && expr match "${devid}" "$i" >/dev/null && name=$n && break || :
            expr match "@${dev}" "$i" >/dev/null && name=$n && break || :
        done </etc/netdev
        # Call interface hotplug handler which can update Fru etc. 
        if [[ -f /usr/bin/netHotPlugHandler ]] ; then
            /usr/bin/netHotPlugHandler $1 $2
        fi
        [ -n "${name}" ]

        isup=`expr match "\`ip link show ${dev}\`" '.*UP'` || :
        if [ "$isup" -ne 0 ] ; then
            /sbin/ip link set dev ${dev} down
        fi
        /sbin/ip link set dev ${dev} name ${name}
        if [ "$isup" -ne 0 ] ; then
            /sbin/ip link set dev ${name} up
        fi
        if [ -s /etc/nethw ]; then
            read nethw < /etc/nethw
            /sbin/ip link set dev ${name} addr ${nethw}
        fi
        driver="/sys/devices/${devid}/driver"
        if [[ -e ${driver} && $(basename $(readlink -f ${driver})) = "tg3" ]]; then
            /usr/sbin/tg3fixhwaddr ${name}
        fi
        ;;
esac
