+ # Remove the previous entry from cidrroute
+ cidrroute=$(echo $cidrroute | sed "s/$TMP//g")
+
+ # Add to counter
+ let ROUTECOUNTER=$ROUTECOUNTER+1;
+ let MAXCIDRROUTES=$MAXCIDRROUTES-1;
+
+ # Leave the loop if cidrroutes is empty (we've parsed everything)
+ [ ! -n "$cidrroute" ] && break
+
+ done
+
+ echo "done."
+ }
+
+ # 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"
+ }
+
+ [ -n "$ifc" ] || return
+
+ # 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
+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