netifd: support DHCP sendopts as list options

Support config in the form of ....
	add_list sendopts=router:10.10.10.2
	add_list sendopts=nissrv:20.20.20.2
	add_list sendopts=0x7D:abba

This allows to configure sendopts having white spaces as option value

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
openwrt-18.06
Hans Dedecker 2018-02-24 16:52:38 +01:00
parent e9b58b22c1
commit 3bd2e195ec
2 changed files with 8 additions and 6 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=netifd PKG_NAME:=netifd
PKG_RELEASE:=3 PKG_RELEASE:=4
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git

View File

@ -16,7 +16,7 @@ proto_dhcp_init_config() {
proto_config_add_string 'reqopts:list(string)' proto_config_add_string 'reqopts:list(string)'
proto_config_add_boolean 'defaultreqopts:bool' proto_config_add_boolean 'defaultreqopts:bool'
proto_config_add_string iface6rd proto_config_add_string iface6rd
proto_config_add_string sendopts proto_config_add_array 'sendopts:list(string)'
proto_config_add_boolean delegate proto_config_add_boolean delegate
proto_config_add_string zone6rd proto_config_add_string zone6rd
proto_config_add_string zone proto_config_add_string zone
@ -25,21 +25,23 @@ proto_dhcp_init_config() {
proto_config_add_boolean classlessroute proto_config_add_boolean classlessroute
} }
proto_dhcp_add_sendopts() {
[ -n "$1" ] && append "$3" "-x $1"
}
proto_dhcp_setup() { proto_dhcp_setup() {
local config="$1" local config="$1"
local iface="$2" local iface="$2"
local ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute local ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute
json_get_vars ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute json_get_vars ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd delegate zone6rd zone mtu6rd customroutes classlessroute
local opt dhcpopts local opt dhcpopts
for opt in $reqopts; do for opt in $reqopts; do
append dhcpopts "-O $opt" append dhcpopts "-O $opt"
done done
for opt in $sendopts; do json_for_each_item proto_dhcp_add_sendopts sendopts dhcpopts
append dhcpopts "-x $opt"
done
[ -z "$hostname" ] && hostname="$(cat /proc/sys/kernel/hostname)" [ -z "$hostname" ] && hostname="$(cat /proc/sys/kernel/hostname)"
[ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts= [ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts=