#!/bin/sh . /lib/functions.sh . ../netifd-proto.sh init_proto "$@" proto_dhcp_init_config() { proto_config_add_string "ipaddr" proto_config_add_string "netmask" proto_config_add_string "hostname" proto_config_add_string "clientid" proto_config_add_string "vendorid" proto_config_add_boolean "broadcast" proto_config_add_string "reqopts" proto_config_add_string "iface6rd" } proto_dhcp_setup() { local config="$1" local iface="$2" local ipaddr clientid vendorid broadcast reqopts iface6rd json_get_vars ipaddr clientid vendorid broadcast reqopts iface6rd model=$(uci -q get misc.hardware.model) [ -z "$model" ] && model=$(cat /proc/xiaoqiang/model) hostname="MiWiFi-$model" local opt dhcpopts for opt in $reqopts; do append dhcpopts "-O $opt" done [ "$broadcast" = 1 ] && broadcast="-B" || broadcast= [ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C" [ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd" proto_export "INTERFACE=$config" proto_run_command "$config" udhcpc \ -p /var/run/udhcpc-$iface.pid \ -s /lib/netifd/dhcp.script \ -f -t 0 -i "$iface" \ -H $hostname \ ${ipaddr:+-r $ipaddr} \ ${vendorid:+-V $vendorid} \ $broadcast $dhcpopts } proto_dhcp_teardown() { local interface="$1" proto_kill_command "$interface" } add_protocol dhcp