+ }
+
+ [ -n "$ifc" ] || return
+
+ # UCI State
+ change_state network "$ifc" lease_server "$serverid"
+ change_state network "$ifc" lease_acquired "$(sed -ne 's![^0-9].*$!!p' /proc/uptime)"
+ 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
+applied=
+for ifc in $interfaces __default; do
+ if [ "$ifc" = __default ]; then
+ ifc=""
+ [ -n "$applied" ] && continue
+ else
+ config_get ifname "$ifc" ifname
+ [ "$ifname" = "$interface" ] || continue
+
+ config_get proto "$ifc" proto
+ [ "$proto" = "dhcp" ] || continue
+ applied=true
+ fi
+
+ case "$1" in
+ deconfig)
+ ifconfig "$interface" 0.0.0.0
+ [ -n "$ifc" ] && {
+ 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
+done
+
+# user rules
+[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user