@@ -8310,9 +8310,12 @@
#endif
VERIFY_PERMISSION(OPT_P_DHCPDNS);
+ bool dhcp_optional = false;
+
if ((streq(p[1], "DOMAIN") || streq(p[1], "ADAPTER_DOMAIN_SUFFIX")) && p[2] && !p[3])
{
dhcp->domain = p[2];
+ dhcp_optional = true;
}
else if (streq(p[1], "DOMAIN-SEARCH") && p[2] && !p[3])
{
@@ -8325,6 +8328,7 @@
msg(msglevel, "--dhcp-option %s: maximum of %d search entries can be specified",
p[1], N_SEARCH_LIST_LEN);
}
+ dhcp_optional = true;
}
else if ((streq(p[1], "DNS") || streq(p[1], "DNS6")) && p[2] && !p[3]
&& (!strstr(p[2], ":") || ipv6_addr_safe(p[2])))
@@ -8336,6 +8340,7 @@
else
{
dhcp_option_address_parse("DNS", p[2], dhcp->dns, &dhcp->dns_len, msglevel);
+ dhcp_optional = true;
}
}
#if defined(_WIN32) || defined(TARGET_ANDROID)
@@ -8359,6 +8364,7 @@
else if (streq(p[1], "WINS") && p[2] && !p[3])
{
dhcp_option_address_parse("WINS", p[2], o->wins, &o->wins_len, msglevel);
+ o->dhcp_options |= DHCP_OPTIONS_DHCP_OPTIONAL;
}
else if (streq(p[1], "NTP") && p[2] && !p[3])
{
@@ -8390,6 +8396,13 @@
#else /* if defined(_WIN32) || defined(TARGET_ANDROID) */
setenv_foreign_option(options, (const char **)p, 3, es);
#endif /* if defined(_WIN32) || defined(TARGET_ANDROID) */
+
+ if (dhcp_optional)
+ {
+#if defined(_WIN32) || defined(TARGET_ANDROID)
+ o->dhcp_options |= DHCP_OPTIONS_DHCP_OPTIONAL;
+#endif
+ }
}
#ifdef _WIN32
else if (streq(p[0], "show-adapters") && !p[1])