#! /bin/sh

. /etc/utils.sh

# called from ifplugd

iface="$1"
action="$2"

CONMAN_STATUS_DIR=/tmp/conman/interfaces

case "$action" in
  up)
    # Clear any existing dynamic IP config.
    rm -f "/tmp/ip/dynamic/$iface"

    # Update ipv4 address on $iface
    ipapply "$iface"

    if [ "$iface" = pon0 ]; then
      # Fiber Jack
      ethtool -r eth0
      ifup man
    fi
    if is-spacecast && [ "$iface" = lan0 ]; then
      # Spacecast Box
      run-dhclient "$iface"
    fi
    if [ "$iface" = wan0 ]; then
      # Network Box
      # Start dhclient on the wan interfaces.
      run-dhclient "$iface"
      if interface_exists wan0.2; then
        run-dhclient wan0.2
      fi

      if [ -e "/sys/class/net/br0" ]; then
        # Stop any running dhclients on br0 now that the wan is up.
        killpid /var/run/dhclient.br0.pid
        killpid /var/run/dhclient6.br0.pid

        # Bridge mode might require br0 to switch address config.
        ipapply br0
      fi
    fi
    if is-wireless-client; then
      echo 1 >"$CONMAN_STATUS_DIR/$iface"

      if [ "$iface" = eth0 ] || [ "$iface" = moca0 ]; then
        run-dhclient br0
      elif startswith "$iface" wcli; then
        run-dhclient "$iface"
      fi
    fi

    QUIET=1 restart dnsmasq
    ;;
  down)
    # Update ipv4 address on $iface
    ipapply "$iface"

    if [ "$iface" = pon0 ]; then
      ethtool -r eth0
    fi
    if is-wireless-client; then
      echo 0 >"$CONMAN_STATUS_DIR/$iface"
    fi
    if [ "$iface" = "wan0" -a -e /sys/class/net/br0 ]; then
      # Run dhclient for bridge mode, ipapply will select the
      # appropriate configuration (static vs dynamic).
      ipapply br0
      run-dhclient br0
    fi

    QUIET=1 restart dnsmasq
    ;;
  *)
    echo "$0: unknown action '$action'"
    exit 1
esac
exit 0
