diff --git a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh
index a270c681d78edab9a907ff7a7f4a1e84a9f3dcdf..1e0aa68881dd795f8678d7a10f3f38eaa4025181 100755
--- a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh
+++ b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh
@@ -13,20 +13,25 @@ proto_dhcp_init_config() {
 	proto_config_add_boolean "broadcast"
 	proto_config_add_string "reqopts"
 	proto_config_add_string "iface6rd"
+	proto_config_add_string "customopts"
 }
 
 proto_dhcp_setup() {
 	local config="$1"
 	local iface="$2"
 
-	local ipaddr hostname clientid vendorid broadcast reqopts iface6rd
-	json_get_vars ipaddr hostname clientid vendorid broadcast reqopts iface6rd
+	local ipaddr hostname clientid vendorid broadcast reqopts iface6rd customopts
+	json_get_vars ipaddr hostname clientid vendorid broadcast reqopts iface6rd customopts
 
 	local opt dhcpopts
 	for opt in $reqopts; do
 		append dhcpopts "-O $opt"
 	done
 
+	for opt in $customopts; do
+		append dhcpopts "-x $opt"
+	done
+
 	[ "$broadcast" = 1 ] && broadcast="-B" || broadcast=
 	[ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C"
 	[ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd"