+ eval $(route -n | awk '
+ /^0.0.0.0\W{9}('$valid_gw')\W/ {next}
+ /^0.0.0.0/ {print "route del -net "$1" gw "$2";"}
+ ')
+
+ change_state network "$ifc" gateway "$router"
+ }
+
+
+ # DNS
+ config_get old_dns "$ifc" dns
+ user_dns=$(uci_get "network.$ifc.dns")
+ [ -n "$user_dns" ] && dns="$user_dns"
+
+ [ -n "$dns" ] && [ ! -s "${RESOLV_CONF}" -o "$dns" != "$old_dns" ] && {
+ echo "udhcpc: setting dns servers: $dns"
+ echo -n > "${RESOLV_CONF}.tmp"
+ for i in $dns ; do
+ echo "nameserver $i" >> "${RESOLV_CONF}.tmp"
+ done
+ ${domain:+echo search $domain} >> "${RESOLV_CONF}.tmp"
+ mv "${RESOLV_CONF}.tmp" "$RESOLV_CONF"
+
+ change_state network "$ifc" dnsdomain "$domain"
+ change_state network "$ifc" dns "$dns"
+ }
+
+
+ # UCI State
+ change_state network "$ifc" lease_server "$serverid"
+ change_state network "$ifc" lease_acquired "$(date '+%s')"
+ change_state network "$ifc" lease_lifetime "$lease"
+ [ -n "$ntpsrv" ] && change_state network "$ifc" lease_ntpsrv "$ntpsrv"
+ [ -n "$timesvr" ] && change_state network "$ifc" lease_timesrv "$timesvr"
+ [ -n "$hostname" ] && change_state network "$ifc" lease_hostname "$hostname"
+ [ -n "$timezone" ] && change_state network "$ifc" lease_timezone "$timezone"
+
+
+ # Hotplug
+ env -i ACTION="$1" INTERFACE="$ifc" DEVICE="$ifname" PROTO=dhcp /sbin/hotplug-call iface
+}
+
+
+scan_interfaces
+
+for ifc in $interfaces; do
+ config_get ifname "$ifc" ifname
+ [ "$ifname" = "$interface" ] || continue
+
+ config_get proto "$ifc" proto
+ [ "$proto" = "dhcp" ] || continue
+
+ case "$1" in
+ deconfig)
+ ifconfig "$interface" 0.0.0.0
+ env -i ACTION="ifdown" INTERFACE="$ifc" DEVICE="$ifname" PROTO=dhcp /sbin/hotplug-call iface
+
+ config_get device "$ifc" device
+ config_get ifname "$ifc" ifname
+ config_get aliases "$ifc" aliases
+ uci_revert_state network "$ifc"
+ [ -n "$device" ] && uci_set_state network "$ifc" device "$device"
+ [ -n "$ifname" ] && uci_set_state network "$ifc" ifname "$ifname"
+ [ -n "$aliases" ] && uci_set_state network "$ifc" aliases "$aliases"
+ ;;
+ renew)
+ setup_interface update
+ ;;
+ bound)
+ setup_interface ifup
+ ;;
+ esac
+
+ # user rules
+ [ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
+done