#! /bin/sh

PREREQ=""

prereqs()
{
	echo "$PREREQ"
}

case $1 in
prereqs)
	prereqs
	exit 0
	;;
esac

. /scripts/functions
. /scripts/functions-uniklu

[ "$quiet" != "y" ] && log_begin_msg "Initializing network"
modprobe -Qb af_packet
# wait for devices to settle:
sleep 5
for i in $(cd /sys/class/net; find . -mindepth 1 -maxdepth 1 -type l | sed -e "s/\.\///" | grep -v "^lo$" ); do

    [ "$quiet" != "y" ] && _log_msg "adding $i ..."
    # to try later after installation:
    mkdir -p /etc/network
    echo "auto $i" >>/etc/network/interfaces
    echo "iface $i inet dhcp" >> /etc/network/interfaces

    ETH0CABLE=""
    DONT_USE_ETHTOOL=""
    DHCP_BACKGROUND=""
    # check for bloody AMD64 ChiliGreen Crap PC (network check fails!!):
    if [ "$(/bin/dd bs=1024 skip=960 count=64 if=/dev/mem 2> /dev/null | strings | grep GA-K8NSP)" != "" ]; then
      DONT_USE_ETHTOOL="yes"
    elif LANG=C ethtool $i 2>/dev/null | grep -qi 'No data available'; then
      DONT_USE_ETHTOOL="yes"
      DHCP_BACKGROUND=yes
    fi
    # skip cable test on sky2 and tg3:
    driver=$(LANG=C ethtool -i $i | gawk '/driver:/ {print $2}')
    if [ "$driver" = "sky2" -o "$driver" = "tg3" ];then
      DONT_USE_ETHTOOL="yes"
    fi

    if [ "$DONT_USE_ETHTOOL" != "yes" ]; then 
      ifconfig $i 10.0.0.10 up
      sleep 5
      ETH0CABLE=$(LANG=C ethtool $i 2>/dev/null | gawk '/Link detected:/ {print $3}')
      ifconfig $i down
      if [ "$ETH0CABLE" != "no" ]; then
        ipconfig $i 2>&1 1>/dev/null && echo "NETDEV=$i" > /tmp/NETDEV && sleep 5 && break
      fi
    else
      if [ "$DHCP_BACKGROUND" = "yes" ]; then
        # try:
        (ipconfig $i 2>&1 1>/dev/null && echo "NETDEV=$i" > /tmp/NETDEV ) &
	sleep 10
      else
        ipconfig $i 2>&1 1>/dev/null && echo "NETDEV=$i" > /tmp/NETDEV && sleep 5 && break
      fi
    fi
done
# add at least an eth0 entry when installing, otherwise useless
if [ "$BOOT" = "installimage" ]; then
  grep -q eth0 /etc/network/interfaces || \
    (mkdir -p /etc/network; \
    echo "auto eth0" >> /etc/network/interfaces; \
    echo "iface eth0 inet dhcp" >> /etc/network/interfaces)
fi
[ "$quiet" != "y" ] && log_end_msg

