#!/bin/sh
#
# [net] hotplug device script for murasaki
#                                       shuu@dotaster.com
#
# Please let me know command name (except RedHat type)
#  to up/down network.
#

is_true ()
{
  [ "$1" = "y" -o "$1" = "Y" -o "$1" = "yes" -o "$1" = "YES" ]
}

mask2pfxlen() {
  local i octet mask width=0

  IFS_SAVE=$IFS; IFS="."
  mask=$1
  test -n "$mask" || return 0

  for octet in $mask; do
    for i in 128 192 224 240 248 252 254 255; do
      test $octet -ge $i && let width=$width+1
    done
  done

  test $width -gt 0 && echo $width
  IFS=$IFS_SAVE
}

dotconf=/etc/hotplug/bin/usbnet.conf

test -e $dotconf || exit 1

. $dotconf

case "$INTERFACE" in
  eth*)
  # check network device
  # waiting for 6 sec until the device is found.
  for sec in 1 2 3
  do
    grep $INTERFACE /proc/net/dev > /dev/null
    if [ $? -eq 0 ];then
      break;
    fi
    sleep $sec
  done

  case "$1" in
    start)
    echo "Setting up link for ${INTERFACE}" > /dev/console
    if is_true $DHCP ; then
      dhcpcd -n $INTERFACE
    else
      NETMASKLEN=`mask2pfxlen $NETMASK`
      if [ -z ${BROADCAST} ]; then
      	BROADCAST="+"
      fi
      ip addr add ${IPADDR}/${NETMASKLEN} dev ${INTERFACE} brd ${BROADCAST} scope global >/dev/console 2>&1
      ip link set ${INTERFACE} up >/dev/console 2>&1
      ip route append default via ${GATEWAY} metric 30001
      # Update DNS stuff
      if [ -n "$DOMAIN$SEARCH$DNSSRVS$DNS_1$DNS_2$DNS_3" ] ; then
       	echo "# ${INTERFACE} begin" > /etc/resolv.conf.N
      	chmod og+r /etc/resolv.conf.N
	[ -n "$DOMAIN" ] && echo "domain $DOMAIN" >> /etc/resolv.conf.N
       	[ -n "$SEARCH" ] && echo "search $SEARCH" >> /etc/resolv.conf.N
       	for DNS in $DNSSRVS $DNS_1 $DNS_2 $DNS_3 ; do
       	    echo "nameserver $DNS" >> /etc/resolv.conf.N
       	done
       	echo "# ${INTERFACE} end" >> /etc/resolv.conf.N
       	sed -e "/# ${INTERFACE} begin/,/# ${INTERFACE} end/d" /etc/resolv.conf >> /etc/resolv.conf.N
   	mv /etc/resolv.conf.N /etc/resolv.conf
      fi
    fi
    if [ "$?" = "0" ]; then echo "Done"
    else                    echo "FAILED"; fi
    ;;
    stop)
    echo "Shutting down link for ${INTERFACE}" > /dev/console
    if is_true $DHCP ; then
      PID=`cat /var/run/dhcpc/dhcpcd-$INTERFACE.pid 2>/dev/null`
      if [ -n "$PID" ] ; then
	kill -TERM $PID
	sleep 2
      fi
    else
      ip link set down dev ${INTERFACE}
      ip addr del ${IPADDR} dev ${INTERFACE}
      # Remove nameservers
      if [ -n "grep \"# ${INTERFACE} begin\" /etc/resolv.conf" ]; then
       	sed -e "/# ${INTERFACE} begin/,/# ${INTERFACE} end/d" /etc/resolv.conf >/etc/resolv.conf.N
       	mv /etc/resolv.conf.N /etc/resolv.conf
      fi
        		     
    fi
    if [ "$?" = "0" ]; then echo "Done"
    else                    echo "FAILED"; fi
    ;;
    restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  esac
  ;;

  *)
  exit 1
  ;;
esac
exit 0

