# This script runs last, after all network configuration
# has completed. It sets a property to let the framework
# know that setting up the interface is complete.

if [[ $interface == p2p* ]]
    then
    intf=p2p
    else
    intf=$interface
fi

# For debugging:
setprop dhcp.${intf}.reason "${reason}"

set_dns_props()
{
    case "${new_domain_name_servers}" in
    "")   return 0;;
    esac

    count=1
    for i in 1 2 3 4; do
        setprop dhcp.${intf}.dns${i} ""
    done

    count=1
    for dnsaddr in ${new_domain_name_servers}; do
        setprop dhcp.${intf}.dns${count} ${dnsaddr}
        count=$(($count + 1))
    done

    separator=" "
    if [ -z "$new_domain_name" ]; then
       separator=""
    else
        if [ -z "$new_domain_search" ]; then
            separator=""
        fi
    fi
    #[begin] fit the length of property value
    length1=$((${#new_domain_name} + ${#separator}))
    length2=$((${#new_domain_search} + ${length1}))

    if [[ ${length2} -gt ${MAX} ]]
        then
        length3=$((${MAX} - length1))

        length=0
        for dns in ${new_domain_search}; do
            if [[ $((${length} + ${#dns})) -gt ${length3} ]]
                then
                break
            fi
            length=$((${length} + 1))
            length=$((${length} + ${#dns}))
        done

        setprop dhcp.${interface}.domain "${new_domain_name}$separator${new_domain_search:0:$((${length} - 1))}"
        else
    setprop dhcp.${interface}.domain "${new_domain_name}$separator${new_domain_search}"
    fi

    #setprop dhcp.${interface}.domain "${new_domain_name}$separator${new_domain_search}"
    #[end] fit the length of property value

    setprop dhcp.${interface}.domain "${new_domain_name}$separator${new_domain_search}"
}

unset_dns_props()
{
    for i in 1 2 3 4; do
        setprop dhcp.${intf}.dns${i} ""
    done

    setprop dhcp.${interface}.domain ""
}

case "${reason}" in
BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT)
    setprop dhcp.${intf}.ipaddress  "${new_ip_address}"
    setprop dhcp.${intf}.gateway    "${new_routers%% *}"
    setprop dhcp.${intf}.mask       "${new_subnet_mask}"
    setprop dhcp.${intf}.leasetime  "${new_dhcp_lease_time}"
    setprop dhcp.${intf}.server     "${new_dhcp_server_identifier}"
    setprop dhcp.${intf}.mtu        "${new_interface_mtu}"
    setprop dhcp.${intf}.broadcastaddr "${new_broadcast_address}"
    setprop dhcp.tftpsname  "${new_tftp_server_name}"
    setprop dhcp.tftpserverlist  "${new_tftp_server_ip}"
    setprop dhcp.bootfile_name "${new_bootfile_name}"
    setprop dhcp.venspec1 "${new_vendor_specific_first}"
    setprop dhcp.venspec2  "${new_vendor_specific_sec}"
    setprop dhcp.${intf}.result "ok"
    ;;

EXPIRE|FAIL|IPV4LL|STOP)
    setprop dhcp.${intf}.result "failed"
    ;;

RELEASE)
    setprop dhcp.${intf}.result "released"
    ;;
esac
