#!/bin/sh
MODULEPATH=/home/sysuser/project/vpnportal
. $MODULEPATH/etc/settings
. $MODULEPATH/etc/settings.lan
#. /etc/settings
#[ -s /etc/$PROFILE/settings.eth ] || PROFILE=defaults
#. /etc/$PROFILE/settings.eth

case "$1" in
  start|restart)
    echo -n "Setting up network: "
    if [ "$1" = "restart" ]; then
      #killall dhcpd 2> /dev/null
      #killall dhcpcd 2> /dev/null
      #killall odhcp6c 2> /dev/null
      #killall radvd 2> /dev/null
      #/usr/sbin/bar-down eth0
      #/usr/sbin/bar-down eth1
      #/usr/sbin/bar6-down eth0
      #/usr/sbin/bar6-down eth1
      #killall wpa_supp 2> /dev/null
      sleep 1
    fi
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    ETH_IFNAME=eth0
    [ -z "$ETH_GATEWAY" ] && ETH_GATEWAY=0.0.0.0
    [ -z "$ETH_PRIMARY_DNS" ] && ETH_PRIMARY_DNS=0.0.0.0
    [ -z "$ETH_GATEWAY6" ] && ETH_GATEWAY6=::
    [ -z "$ETH_PRIMARY_DNS6" ] && ETH_PRIMARY_DNS6=::
    ETH2_IFNAME=eth1
    [ -z "$ETH2_GATEWAY" ] && ETH2_GATEWAY=0.0.0.0
    [ -z "$ETH2_PRIMARY_DNS" ] && ETH2_PRIMARY_DNS=0.0.0.0
    [ -z "$ETH2_GATEWAY6" ] && ETH2_GATEWAY6=::
    [ -z "$ETH2_PRIMARY_DNS6" ] && ETH2_PRIMARY_DNS6=::
    /sbin/ifconfig lo 127.0.0.1 up
    [ "$ETH_BRIDGED" = "1" ] && BRIDGED=1
    [ "$ETH2_BRIDGED" = "1" ] && BRIDGED=1
    if [ "$BRIDGED" = "1" ]; then
      if [ -d /proc/sys/net/ipv4/conf/br0 ]; then
        /usr/sbin/brctl delif br0 eth0 2> /dev/null
        /usr/sbin/brctl delif br0 eth1 2> /dev/null
      else
        /usr/sbin/brctl addbr br0
      fi
      if [ "$ETH_BRIDGED" = "1" ]; then
        /sbin/ifconfig eth0 0.0.0.0 up
        /bin/ip -6 addr flush dev eth0 scope global
        /usr/sbin/brctl addif br0 eth0
        ETH_IFNAME=br0
      fi
      if [ "$ETH2_BRIDGED" = "1" ]; then
        if [ -d /proc/sys/net/ipv4/conf/eth1 ]; then
          /sbin/ifconfig eth1 0.0.0.0 up
          /bin/ip -6 addr flush dev eth1 scope global
          /usr/sbin/brctl addif br0 eth1
        fi
        if [ "$ETH_BRIDGED" = "0" ]; then
          ETH2_IFNAME=br0
        else
          ETH2_IFNAME=
        fi
      fi
    elif [ -d /proc/sys/net/ipv4/conf/br0 ]; then
      /sbin/ifconfig br0 down
      /usr/sbin/brctl delif br0 eth0 2> /dev/null
      /usr/sbin/brctl delif br0 eth1 2> /dev/null
      [ -z "`/usr/sbin/brctl show | awk '/^br0/ {print $4}'`" ] && /usr/sbin/brctl delbr br0
    fi
    if [ "$ETH_BOOTPROTO" = "dhcp" ]; then
      /sbin/ifconfig $ETH_IFNAME 0.0.0.0 up
      /home/sysuser/util/netset $ETH_IFNAME dhcpclient
      #/usr/sbin/dhcpcd -b -q -o domain_name_servers -c /etc/scripts/dhcpcd -G $ETH_IFNAME 2> /dev/null &
    elif [ -n "$ETH_IPADDR" ] && [ -n "$ETH_NETMASK" ]; then
      /sbin/ifconfig $ETH_IFNAME $ETH_IPADDR netmask $ETH_NETMASK up
       /home/sysuser/util/netset $ETH_IFNAME static $ETH_IPADDR $ETH_NETMASK
      #/usr/sbin/bar-up eth0 $ETH_IFNAME $ETH_IPADDR $ETH_GATEWAY $ETH_PRIMARY_DNS 0.0.0.0
    else
      /sbin/ifconfig $ETH_IFNAME 0.0.0.0 down
    fi
    /bin/ip -6 addr flush dev $ETH_IFNAME scope global
    if [ "$ETH_BOOTPROTO6" = "dhcp" ]; then
      echo 0 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/disable_ipv6
      echo 1 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/forwarding
      echo 0 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/accept_ra
      /bin/ip -6 link set dev $ETH_IFNAME up
      /usr/sbin/odhcp6c -v -s /etc/scripts/odhcp6c $ETH_IFNAME &
    elif [ -n "$ETH_IPADDR6" ] && [ -n "ETH_NETMASK6" ]; then
      echo 0 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/disable_ipv6
      echo 1 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/forwarding
      echo 1 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/accept_ra
      /bin/ip -6 addr add $ETH_IPADDR6/$ETH_NETMASK6 dev $ETH_IFNAME
      /bin/ip -6 link set dev $ETH_IFNAME up
      /usr/sbin/bar6-up eth0 $ETH_IFNAME $ETH_IPADDR6 $ETH_GATEWAY6 $ETH_PRIMARY_DNS6
    elif [ "$ETH_PD_ENABLED" = "1" ]; then
      echo 0 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/disable_ipv6
      echo 1 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/forwarding
      echo 0 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/accept_ra
      /bin/ip -6 link set dev $ETH_IFNAME up
    else
      echo 1 > /proc/sys/net/ipv6/conf/$ETH_IFNAME/disable_ipv6
    fi
    if [ -n "$ETH2_IFNAME" ]; then
      if [ -d /proc/sys/net/ipv4/conf/$ETH2_IFNAME ]; then
        if [ "$ETH2_BOOTPROTO" = "dhcp" ]; then
          /sbin/ifconfig $ETH2_IFNAME 0.0.0.0 up
           /home/sysuser/util/netset $ETH2_IFNAME dhcpclient
          #/usr/sbin/dhcpcd -b -q -o domain_name_servers -c /etc/scripts/dhcpcd -G $ETH2_IFNAME 2> /dev/null &
        elif [ -n "$ETH2_IPADDR" ] && [ -n "$ETH2_NETMASK" ]; then
          /sbin/ifconfig $ETH2_IFNAME $ETH2_IPADDR netmask $ETH2_NETMASK up
          /home/sysuser/util/netset $ETH2_IFNAME static $ETH2_IPADDR $ETH2_NETMASK
          #/usr/sbin/bar-up eth1 $ETH2_IFNAME $ETH2_IPADDR $ETH2_GATEWAY $ETH2_PRIMARY_DNS 0.0.0.0
        else
          /sbin/ifconfig $ETH2_IFNAME 0.0.0.0 down
        fi
      fi
      if [ -d /proc/sys/net/ipv6/conf/$ETH2_IFNAME ]; then
        /bin/ip -6 addr flush dev $ETH2_IFNAME scope global
        if [ "$ETH2_BOOTPROTO6" = "dhcp" ]; then
          echo 0 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/disable_ipv6
          echo 1 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/forwarding
          echo 0 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/accept_ra
          /bin/ip -6 link set dev $ETH2_IFNAME up
          /usr/sbin/odhcp6c -v -s /etc/scripts/odhcp6c $ETH2_IFNAME &
        elif [ -n "$ETH2_IPADDR6" ] && [ -n "ETH2_NETMASK6" ]; then
          echo 0 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/disable_ipv6
          echo 1 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/forwarding
          echo 1 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/accept_ra
          /bin/ip -6 addr add $ETH2_IPADDR6/$ETH2_NETMASK6 dev $ETH2_IFNAME
          /bin/ip -6 link set dev $ETH2_IFNAME up
          /usr/sbin/bar6-up eth1 $ETH2_IFNAME $ETH2_IPADDR6 $ETH2_GATEWAY6 $ETH2_PRIMARY_DNS6
        elif [ "$ETH2_PD_ENABLED" = "1" ]; then
          echo 0 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/disable_ipv6
          echo 1 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/forwarding
          echo 0 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/accept_ra
          /bin/ip -6 link set dev $ETH2_IFNAME up
        else
          echo 1 > /proc/sys/net/ipv6/conf/$ETH2_IFNAME/disable_ipv6
        fi
      fi
    fi
    echo "done"
    if [ ! -d "/var/tmp/eth/" ]; then
        mkdir -p /var/tmp/eth/
    fi
    [ -f /var/tmp/eth/media ] && ETH_OLD_MEDIA=`cat /var/tmp/eth/media`
    if [ "$ETH_MEDIA" != "$ETH_OLD_MEDIA" ]; then
      echo -n "Setting up media type: "
      if [ "$ETH_MEDIA" = "100BaseTx-FD" ]; then
        /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off
      elif [ "$ETH_MEDIA" = "100BaseTx-HD" ]; then
        /usr/sbin/ethtool -s eth0 speed 100 duplex half autoneg off
      elif [ "$ETH_MEDIA" = "10BaseT-FD" ]; then
        /usr/sbin/ethtool -s eth0 speed 10 duplex full autoneg off
      elif [ "$ETH_MEDIA" = "10BaseT-HD" ]; then
        /usr/sbin/ethtool -s eth0 speed 10 duplex half autoneg off
      else
        /usr/sbin/ethtool -s eth0 autoneg on
      fi
      if [ $? = 0 ]; then echo "done"; else echo "failed"; fi
      echo -n $ETH_MEDIA > /var/tmp/eth/media
    fi
    [ -f /var/tmp/eth/media2 ] && ETH2_OLD_MEDIA=`cat /var/tmp/eth/media2`
    if [ "$ETH2_MEDIA" != "$ETH2_OLD_MEDIA" ]; then
      echo -n "Setting up media type: "
      if [ "$ETH2_MEDIA" = "100BaseTx-FD" ]; then
        /usr/sbin/ethtool -s eth1 speed 100 duplex full autoneg off
      elif [ "$ETH2_MEDIA" = "100BaseTx-HD" ]; then
        /usr/sbin/ethtool -s eth1 speed 100 duplex half autoneg off
      elif [ "$ETH2_MEDIA" = "10BaseT-FD" ]; then
        /usr/sbin/ethtool -s eth1 speed 10 duplex full autoneg off
      elif [ "$ETH2_MEDIA" = "10BaseT-HD" ]; then
        /usr/sbin/ethtool -s eth1 speed 10 duplex half autoneg off
      else
        /usr/sbin/ethtool -s eth1 autoneg on
      fi
      if [ $? = 0 ]; then echo "done"; else echo "failed"; fi
      echo -n $ETH2_MEDIA > /var/tmp/eth/media2
    fi
    if [ "$1" = "restart" ]; then
      echo -n "Restarting wpa_supplicant: "
    else
      echo -n "Starting wpa_supplicant: "
    fi
    if [ "$ETH_IEEE8021X_ENABLED" == "1" ]; then
      WPA_SUPP_CONF=/var/tmp/eth/$ETH_IFNAME-wpa_supplicant.conf
      echo -en "ctrl_interface=/var/tmp/run/$ETH_IFNAME-wpa_supplicant" \
               "\nap_scan=0" \
               "\nnetwork={" \
               "\n  key_mgmt=IEEE8021X" > $WPA_SUPP_CONF
      case "$ETH_IEEE8021X_METHOD" in
        TLS)
          ETH_CA_CERT_PATH=/var/tmp/eth/$ETH_IFNAME-ca.pem
          ETH_LOCAL_CERT_PATH=/var/tmp/eth/$ETH_IFNAME-local.pem
          ETH_LOCAL_KEY_PATH=/var/tmp/eth/$ETH_IFNAME-local.key
          decode $ETH_IEEE8021X_CA_CERT    > $ETH_CA_CERT_PATH
          decode $ETH_IEEE8021X_LOCAL_CERT > $ETH_LOCAL_CERT_PATH
          decode $ETH_IEEE8021X_LOCAL_KEY  > $ETH_LOCAL_KEY_PATH
          echo -en "\n  eap=TLS" \
                   "\n  identity=\"$ETH_IEEE8021X_IDENTITY\"" \
                   "\n  ca_cert=\"$ETH_CA_CERT_PATH\"" \
                   "\n  client_cert=\"$ETH_LOCAL_CERT_PATH\"" \
                   "\n  private_key=\"$ETH_LOCAL_KEY_PATH\"" \
                   "\n  private_key_passwd=\"`decode $ETH_IEEE8021X_PASSWORD`\"" >> $WPA_SUPP_CONF
          ;;
        *)
          echo -en "\n  eap=PEAP" \
                   "\n  phase2=\"auth=MSCHAPV2\"" \
                   "\n  identity=\"$ETH_IEEE8021X_IDENTITY\"" \
                   "\n  password=\"`decode $ETH_IEEE8021X_PASSWORD`\"" >> $WPA_SUPP_CONF
          ;;
      esac
      echo -e "\n}" >> $WPA_SUPP_CONF
      WPA_SUPP_IFNAMES="-Dwired -i$ETH_IFNAME -c$WPA_SUPP_CONF"
    fi
    if [ "$ETH2_IEEE8021X_ENABLED" == "1" ]; then
      WPA_SUPP_CONF=/var/tmp/eth/$ETH2_IFNAME-wpa_supplicant.conf
      if [ ! -d "/var/tmp/run/" ]; then
        mkdir -p /var/tmp/run/
      fi
      echo -en "ctrl_interface=/var/tmp/run/$ETH2_IFNAME-wpa_supplicant" \
               "\nap_scan=0" \
               "\nnetwork={" \
               "\n  key_mgmt=IEEE8021X" > $WPA_SUPP_CONF
      case "$ETH2_IEEE8021X_METHOD" in
        TLS)
          ETH2_CA_CERT_PATH=/var/tmp/eth/$ETH2_IFNAME-ca.pem
          ETH2_LOCAL_CERT_PATH=/var/tmp/eth/$ETH2_IFNAME-local.pem
          ETH2_LOCAL_KEY_PATH=/var/tmp/eth/$ETH2_IFNAME-local.key
          decode $ETH2_IEEE8021X_CA_CERT    > $ETH2_CA_CERT_PATH
          decode $ETH2_IEEE8021X_LOCAL_CERT > $ETH2_LOCAL_CERT_PATH
          decode $ETH2_IEEE8021X_LOCAL_KEY  > $ETH2_LOCAL_KEY_PATH
          echo -en "\n  eap=TLS" \
                   "\n  identity=\"$ETH2_IEEE8021X_IDENTITY\"" \
                   "\n  ca_cert=\"$ETH2_CA_CERT_PATH\"" \
                   "\n  client_cert=\"$ETH2_LOCAL_CERT_PATH\"" \
                   "\n  private_key=\"$ETH2_LOCAL_KEY_PATH\"" \
                   "\n  private_key_passwd=\"`decode $ETH2_IEEE8021X_PASSWORD`\"" >> $WPA_SUPP_CONF
          ;;
        *)
          echo -en "\n  eap=PEAP" \
                   "\n  phase2=\"auth=MSCHAPV2\"" \
                   "\n  identity=\"$ETH2_IEEE8021X_IDENTITY\"" \
                   "\n  password=\"`decode $ETH2_IEEE8021X_PASSWORD`\"" >> $WPA_SUPP_CONF
          ;;
      esac
      echo -e "\n}" >> $WPA_SUPP_CONF
      [ -n "$WPA_SUPP_IFNAMES" ] && WPA_SUPP_IFNAMES="$WPA_SUPP_IFNAMES -N"
      WPA_SUPP_IFNAMES="$WPA_SUPP_IFNAMES -Dwired -i$ETH2_IFNAME -c$WPA_SUPP_CONF"
    fi
    if [ -z "$WPA_SUPP_IFNAMES" ]; then
      echo "skipped"
    else
      ln -sf /usr/sbin/wpa_supplicant /var/tmp/eth/wpa_supp
      /var/tmp/eth/wpa_supp -s -B $WPA_SUPP_IFNAMES 2>/dev/null
      if [ $? = 0 ]; then echo "done"; else echo "failed"; exit 1; fi
    fi
    if [ "$1" = "restart" ]; then
      echo -n "Restarting dhcpd: "
    else
      echo -n "Starting dhcpd: "
    fi
    if [ "$ETH_DHCP_POOL_ENABLED"  != "1" ] &&
       [ "$ETH2_DHCP_POOL_ENABLED" != "1" ] &&
       [ "$ETH2_DHCP_STAT_ENABLED" != "1" ] &&
       [ "$ETH_DHCP_STAT_ENABLED"  != "1" ]; then
      echo "skipped"
	  /home/sysuser/bin/AdvProgramMgr reload
	killall udhcpd 2> /dev/null
      exit 0
    fi
    if [ "$ETH_DHCP_POOL_ENABLED" = "1" ]; then
      if [ -n "$ETH_IPADDR" -a -n "$ETH_NETMASK" -a -n "$ETH_DHCP_POOL_LO" -a -n "$ETH_DHCP_POOL_HI" ]; then
        ETH_SERVER="1"
        POOL="\\n  range $ETH_DHCP_POOL_LO $ETH_DHCP_POOL_HI;"
      fi
      if [ -n "$ETH_IPADDR6" -a -n "$ETH_NETMASK6" -a -n "$ETH_DHCP_POOL_LO6" -a -n "$ETH_DHCP_POOL_HI6" ]; then
        ETH_SERVER6="1"
        POOL6="\\n  range6 $ETH_DHCP_POOL_LO6 $ETH_DHCP_POOL_HI6;"
      fi
    fi
    if [ "$ETH2_DHCP_POOL_ENABLED" = "1" ]; then
      if [ -n "$ETH2_IPADDR" -a -n "$ETH2_NETMASK" -a -n "$ETH2_DHCP_POOL_LO" -a -n "$ETH2_DHCP_POOL_HI" ]; then
        ETH2_SERVER="1"
        POOL2="\\n  range $ETH2_DHCP_POOL_LO $ETH2_DHCP_POOL_HI;"
      fi
      if [ -n "$ETH2_IPADDR6"  -a -n "$ETH2_NETMASK6" -a -n "$ETH2_DHCP_POOL_LO6" -a -n "$ETH2_DHCP_POOL_HI6" ]; then
        ETH2_SERVER6="1"
        POOL62="\\n  range6 $ETH2_DHCP_POOL_LO6 $ETH2_DHCP_POOL_HI6;"
      fi
    fi
    if [ "$ETH_DHCP_STAT_ENABLED" = "1" ]; then
      [ -n "$ETH_IPADDR" -a -n "$ETH_NETMASK" ] && ETH_SERVER="1"
      [ -n "$ETH_DHCP_STAT_MAC1" ] && [ -n "$ETH_DHCP_STAT_IPADDR1" ] && HOST1="\\nhost 1 { hardware ethernet $ETH_DHCP_STAT_MAC1; fixed-address $ETH_DHCP_STAT_IPADDR1; }"
      [ -n "$ETH_DHCP_STAT_MAC2" ] && [ -n "$ETH_DHCP_STAT_IPADDR2" ] && HOST2="\\nhost 2 { hardware ethernet $ETH_DHCP_STAT_MAC2; fixed-address $ETH_DHCP_STAT_IPADDR2; }"
      [ -n "$ETH_DHCP_STAT_MAC3" ] && [ -n "$ETH_DHCP_STAT_IPADDR3" ] && HOST3="\\nhost 3 { hardware ethernet $ETH_DHCP_STAT_MAC3; fixed-address $ETH_DHCP_STAT_IPADDR3; }"
      [ -n "$ETH_DHCP_STAT_MAC4" ] && [ -n "$ETH_DHCP_STAT_IPADDR4" ] && HOST4="\\nhost 4 { hardware ethernet $ETH_DHCP_STAT_MAC4; fixed-address $ETH_DHCP_STAT_IPADDR4; }"
      [ -n "$ETH_DHCP_STAT_MAC5" ] && [ -n "$ETH_DHCP_STAT_IPADDR5" ] && HOST5="\\nhost 5 { hardware ethernet $ETH_DHCP_STAT_MAC5; fixed-address $ETH_DHCP_STAT_IPADDR5; }"
      [ -n "$ETH_DHCP_STAT_MAC6" ] && [ -n "$ETH_DHCP_STAT_IPADDR6" ] && HOST6="\\nhost 6 { hardware ethernet $ETH_DHCP_STAT_MAC6; fixed-address $ETH_DHCP_STAT_IPADDR6; }"
      [ -n "$ETH_IPADDR6"  -a -n "$ETH_NETMASK6"  ] && ETH_SERVER6="1"
      [ -n "$ETH_DHCP_STAT_MAC1" ] && [ -n "$ETH_DHCP_STAT_IPADDR61" ] && HOST61="\\nhost 1 { hardware ethernet $ETH_DHCP_STAT_MAC1; fixed-address6 $ETH_DHCP_STAT_IPADDR61; }"
      [ -n "$ETH_DHCP_STAT_MAC2" ] && [ -n "$ETH_DHCP_STAT_IPADDR62" ] && HOST62="\\nhost 2 { hardware ethernet $ETH_DHCP_STAT_MAC2; fixed-address6 $ETH_DHCP_STAT_IPADDR62; }"
      [ -n "$ETH_DHCP_STAT_MAC3" ] && [ -n "$ETH_DHCP_STAT_IPADDR63" ] && HOST63="\\nhost 3 { hardware ethernet $ETH_DHCP_STAT_MAC3; fixed-address6 $ETH_DHCP_STAT_IPADDR63; }"
      [ -n "$ETH_DHCP_STAT_MAC4" ] && [ -n "$ETH_DHCP_STAT_IPADDR64" ] && HOST64="\\nhost 4 { hardware ethernet $ETH_DHCP_STAT_MAC4; fixed-address6 $ETH_DHCP_STAT_IPADDR64; }"
      [ -n "$ETH_DHCP_STAT_MAC5" ] && [ -n "$ETH_DHCP_STAT_IPADDR65" ] && HOST65="\\nhost 5 { hardware ethernet $ETH_DHCP_STAT_MAC5; fixed-address6 $ETH_DHCP_STAT_IPADDR65; }"
      [ -n "$ETH_DHCP_STAT_MAC6" ] && [ -n "$ETH_DHCP_STAT_IPADDR66" ] && HOST66="\\nhost 6 { hardware ethernet $ETH_DHCP_STAT_MAC6; fixed-address6 $ETH_DHCP_STAT_IPADDR66; }"
    fi
    if [ "$ETH2_DHCP_STAT_ENABLED" = "1" ]; then
      [ -n "$ETH2_IPADDR" -a -n "$ETH2_NETMASK" ] && ETH2_SERVER="1"
      [ -n "$ETH2_DHCP_STAT_MAC1" ] && [ -n "$ETH2_DHCP_STAT_IPADDR1" ] && HOST21="\\nhost 21 { hardware ethernet $ETH2_DHCP_STAT_MAC1; fixed-address $ETH2_DHCP_STAT_IPADDR1; }"
      [ -n "$ETH2_DHCP_STAT_MAC2" ] && [ -n "$ETH2_DHCP_STAT_IPADDR2" ] && HOST22="\\nhost 22 { hardware ethernet $ETH2_DHCP_STAT_MAC2; fixed-address $ETH2_DHCP_STAT_IPADDR2; }"
      [ -n "$ETH2_DHCP_STAT_MAC3" ] && [ -n "$ETH2_DHCP_STAT_IPADDR3" ] && HOST23="\\nhost 23 { hardware ethernet $ETH2_DHCP_STAT_MAC3; fixed-address $ETH2_DHCP_STAT_IPADDR3; }"
      [ -n "$ETH2_DHCP_STAT_MAC4" ] && [ -n "$ETH2_DHCP_STAT_IPADDR4" ] && HOST24="\\nhost 24 { hardware ethernet $ETH2_DHCP_STAT_MAC4; fixed-address $ETH2_DHCP_STAT_IPADDR4; }"
      [ -n "$ETH2_DHCP_STAT_MAC5" ] && [ -n "$ETH2_DHCP_STAT_IPADDR5" ] && HOST25="\\nhost 25 { hardware ethernet $ETH2_DHCP_STAT_MAC5; fixed-address $ETH2_DHCP_STAT_IPADDR5; }"
      [ -n "$ETH2_DHCP_STAT_MAC6" ] && [ -n "$ETH2_DHCP_STAT_IPADDR6" ] && HOST26="\\nhost 26 { hardware ethernet $ETH2_DHCP_STAT_MAC6; fixed-address $ETH2_DHCP_STAT_IPADDR6; }"
      [ -n "$ETH2_IPADDR6" -a -n "$ETH2_NETMASK6" ] && ETH2_SERVER6="1"
      [ -n "$ETH2_DHCP_STAT_MAC1" ] && [ -n "$ETH2_DHCP_STAT_IPADDR61" ] && HOST621="\\nhost 21 { hardware ethernet $ETH2_DHCP_STAT_MAC1; fixed-address6 $ETH2_DHCP_STAT_IPADDR61; }"
      [ -n "$ETH2_DHCP_STAT_MAC2" ] && [ -n "$ETH2_DHCP_STAT_IPADDR62" ] && HOST622="\\nhost 22 { hardware ethernet $ETH2_DHCP_STAT_MAC2; fixed-address6 $ETH2_DHCP_STAT_IPADDR62; }"
      [ -n "$ETH2_DHCP_STAT_MAC3" ] && [ -n "$ETH2_DHCP_STAT_IPADDR63" ] && HOST623="\\nhost 23 { hardware ethernet $ETH2_DHCP_STAT_MAC3; fixed-address6 $ETH2_DHCP_STAT_IPADDR63; }"
      [ -n "$ETH2_DHCP_STAT_MAC4" ] && [ -n "$ETH2_DHCP_STAT_IPADDR64" ] && HOST624="\\nhost 24 { hardware ethernet $ETH2_DHCP_STAT_MAC4; fixed-address6 $ETH2_DHCP_STAT_IPADDR64; }"
      [ -n "$ETH2_DHCP_STAT_MAC5" ] && [ -n "$ETH2_DHCP_STAT_IPADDR65" ] && HOST625="\\nhost 25 { hardware ethernet $ETH2_DHCP_STAT_MAC5; fixed-address6 $ETH2_DHCP_STAT_IPADDR65; }"
      [ -n "$ETH2_DHCP_STAT_MAC6" ] && [ -n "$ETH2_DHCP_STAT_IPADDR66" ] && HOST626="\\nhost 26 { hardware ethernet $ETH2_DHCP_STAT_MAC6; fixed-address6 $ETH2_DHCP_STAT_IPADDR66; }"
    fi
    [ -n "$ETH_SERVER"  ] && ETH_IFNAMES="$ETH_IFNAMES $ETH_IFNAME"
    [ -n "$ETH2_SERVER" ] && ETH_IFNAMES="$ETH_IFNAMES $ETH2_IFNAME"
    if [ -n "$ETH_IFNAMES" ]; then
      CONF=/var/tmp/dhcp/dhcpd.conf
       if [ ! -d "/var/tmp/dhcp/" ]; then
        mkdir -p /var/tmp/dhcp/
      fi
      echo -e "max-lease-time 86400;" > $CONF
      echo -e "min-lease-time 60;" >> $CONF
      [ -n "$ETH_SERVER" ] && echo -e "\\nsubnet $ETH_NETWORK netmask $ETH_NETMASK {" \
        "$POOL" \
        "\\n  option routers $ETH_IPADDR;" \
        "\\n  option domain-name-servers $ETH_IPADDR;" \
        "\\n  default-lease-time $ETH_DHCP_LEASE_TIME;" \
        "\\n}" >> $CONF
      [ -n "$ETH2_SERVER" ] && echo -e "\\nsubnet $ETH2_NETWORK netmask $ETH2_NETMASK {" \
        "$POOL2" \
        "\\n  option routers $ETH2_IPADDR;" \
        "\\n  option domain-name-servers $ETH2_IPADDR;" \
        "\\n  default-lease-time $ETH2_DHCP_LEASE_TIME;" \
        "\\n}" >> $CONF
      echo -e "$HOST1$HOST2$HOST3$HOST4$HOST5$HOST6" >> $CONF
      echo -e "$HOST21$HOST22$HOST23$HOST24$HOST25$HOST26" >> $CONF
      LEASE=/tmp/dhcp/dhcpd.leases
      touch $LEASE
      /usr/sbin/dhcpd -q -cf $CONF -lf $LEASE $ETH_IFNAMES 2> /dev/null &
      [ -n "$ETH_SERVER" ] && /home/sysuser/util/netset $ETH_IFNAME dhcpserver start $ETH_DHCP_POOL_LO end $ETH_DHCP_POOL_HI \
      netmask $ETH_NETMASK gateway $ETH_IPADDR
      [ -n "$ETH2_SERVER" ] && /home/sysuser/util/netset $ETH2_IFNAME dhcpserver start $ETH2_DHCP_POOL_LO end $ETH2_DHCP_POOL_HI \
      netmask $ETH2_NETMASK gateway $ETH2_IPADDR
    fi
    RADVD_CONF=/var/tmp/dhcp/radvd.conf
    rm -f $RADVD_CONF
    if [ -n "$ETH_SERVER6" ]; then
      if [ $ETH_NETMASK6 -le 64 ]; then
        ADV_AUTO=on
      else
        ADV_AUTO=off
      fi
      echo -e "\\ninterface $ETH_IFNAME" \
              "\\n{" \
              "\\n  AdvSendAdvert on;" \
              "\\n  AdvManagedFlag on;" \
              "\\n  prefix $ETH_NETWORK6/$ETH_NETMASK6" \
              "\\n  {" \
              "\\n    AdvOnLink on;" \
              "\\n    AdvAutonomous $ADV_AUTO;" \
              "\\n    AdvValidLifetime $ETH_DHCP_LEASE_TIME6;" \
              "\\n    AdvPreferredLifetime $((5*$ETH_DHCP_LEASE_TIME6/8));" \
              "\\n  };" \
              "\\n  RDNSS $ETH_IPADDR6" \
              "\\n  {" \
              "\\n  };" \
              "\\n};" >> $RADVD_CONF
    fi
    if [ -n "$ETH2_SERVER6" ]; then
      if [ $ETH2_NETMASK6 -le 64 ]; then
        ADV_AUTO=on
      else
        ADV_AUTO=off
      fi
      echo -e "\\ninterface $ETH2_IFNAME" \
              "\\n{" \
              "\\n  AdvSendAdvert on;" \
              "\\n  AdvManagedFlag on;" \
              "\\n  prefix $ETH2_NETWORK6/$ETH2_NETMASK6" \
              "\\n  {" \
              "\\n    AdvOnLink on;" \
              "\\n    AdvAutonomous $ADV_AUTO;" \
              "\\n    AdvValidLifetime $ETH2_DHCP_LEASE_TIME6;" \
              "\\n    AdvPreferredLifetime $((5*$ETH2_DHCP_LEASE_TIME6/8));" \
              "\\n  };" \
              "\\n  RDNSS $ETH2_IPADDR6" \
              "\\n  {" \
              "\\n  };" \
              "\\n};" >> $RADVD_CONF
    fi
    [ -f $RADVD_CONF ] && /usr/sbin/radvd -C $RADVD_CONF
    [ -n "$ETH_SERVER6"  ] && ETH_IFNAMES6="$ETH_IFNAMES6 $ETH_IFNAME"
    [ -n "$ETH2_SERVER6" ] && ETH_IFNAMES6="$ETH_IFNAMES6 $ETH2_IFNAME"
    if [ -n "$ETH_IFNAMES6" ]; then
      CONF6=/var/tmp/dhcp/dhcpd6.conf
      if [ ! -d "/var/tmp/dhcp/" ]; then
        mkdir -p /var/tmp/dhcp/
      fi
      echo -e "max-lease-time 86400;" > $CONF6
      echo -e "min-lease-time 60;" >> $CONF6
      [ -n "$ETH_SERVER6" ] && echo -e "\\nsubnet6 $ETH_NETWORK6/$ETH_NETMASK6 {" \
        "$POOL6" \
        "\\n  option dhcp6.name-servers $ETH_IPADDR6;" \
        "\\n  default-lease-time $ETH_DHCP_LEASE_TIME6;" \
        "\\n}" >> $CONF6
      [ -n "$ETH2_SERVER6" ] && echo -e "\\nsubnet6 $ETH2_NETWORK6/$ETH2_NETMASK6 {" \
        "$POOL62" \
        "\\n  option dhcp6.name-servers $ETH2_IPADDR6;" \
        "\\n  default-lease-time $ETH2_DHCP_LEASE_TIME6;" \
        "\\n}" >> $CONF6
      echo -e "$HOST61$HOST62$HOST63$HOST64$HOST65$HOST66" >> $CONF6
      echo -e "$HOST621$HOST622$HOST623$HOST624$HOST625$HOST626" >> $CONF6
      LEASE6=/tmp/dhcp/dhcpd6.leases
      touch $LEASE6
      /usr/sbin/dhcpd -6 -q -cf $CONF6 -lf $LEASE6 $ETH_IFNAMES6 2> /dev/null &
    fi
    /home/sysuser/bin/AdvProgramMgr reload
    killall udhcpd 2> /dev/null
    if [ $? = 0 ]; then echo "done"; else echo "failed"; fi
    exit 0
    ;;
  stop)
    echo -n "Stopping dhcpd and dhcpcd: "
    killall dhcpd 2> /dev/null
    killall dhcpcd 2> /dev/null
    killall odhcp6c 2> /dev/null
    killall radvd 2> /dev/null
    RETVAL=$?
    /usr/sbin/bar-down eth0
    /usr/sbin/bar-down eth1
    /usr/sbin/bar6-down eth0
    /usr/sbin/bar6-down eth1
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    echo -n "Stopping wpa_supplicant: "
    killall wpa_supp 2> /dev/null
    WPA_SUPP_RETVAL=$?
    if [ $WPA_SUPP_RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    [ $RETVAL = 0 ] && RETVAL=$WPA_SUPP_RETVAL
    exit $RETVAL
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
