#! /bin/sh

. /etc/utils.sh

# called from ifplugd

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

CONMAN_STATUS_DIR=/tmp/conman/interfaces

case "$action" in
  up)
    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
        # 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
      # TODO(rofrankel):  Remove the second disjunct once we have wcli* Frenzy
      # interfaces.
      elif startswith "$iface" wcli; then
        run-dhclient "$iface"
      fi
    fi

    # Update ipv4 address on $iface
    ipapply "$iface"
    QUIET=1 restart dnsmasq
    ;;
  down)
    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).
      run-dhclient br0
      ipapply br0
    fi

    # Update ipv4 address on $iface
    ipapply "$iface"
    QUIET=1 restart dnsmasq
    ;;
  *)
    echo "$0: unknown action '$action'"
    exit 1
esac
exit 0
