mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Cope with duplicate dhcp-options with tags (last one wins).
This commit is contained in:
@@ -91,6 +91,7 @@ struct dhcp_netid *option_filter(struct dhcp_netid *tags, struct dhcp_netid *con
|
|||||||
{
|
{
|
||||||
struct dhcp_netid *tagif = run_tag_if(tags);
|
struct dhcp_netid *tagif = run_tag_if(tags);
|
||||||
struct dhcp_opt *opt;
|
struct dhcp_opt *opt;
|
||||||
|
struct dhcp_opt *tmp;
|
||||||
|
|
||||||
/* flag options which are valid with the current tag set (sans context tags) */
|
/* flag options which are valid with the current tag set (sans context tags) */
|
||||||
for (opt = opts; opt; opt = opt->next)
|
for (opt = opts; opt; opt = opt->next)
|
||||||
@@ -135,7 +136,6 @@ struct dhcp_netid *option_filter(struct dhcp_netid *tags, struct dhcp_netid *con
|
|||||||
for (opt = opts; opt; opt = opt->next)
|
for (opt = opts; opt; opt = opt->next)
|
||||||
if (!(opt->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925 | DHOPT_TAGOK)) && !opt->netid)
|
if (!(opt->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925 | DHOPT_TAGOK)) && !opt->netid)
|
||||||
{
|
{
|
||||||
struct dhcp_opt *tmp;
|
|
||||||
for (tmp = opts; tmp; tmp = tmp->next)
|
for (tmp = opts; tmp; tmp = tmp->next)
|
||||||
if (tmp->opt == opt->opt && (tmp->flags & DHOPT_TAGOK))
|
if (tmp->opt == opt->opt && (tmp->flags & DHOPT_TAGOK))
|
||||||
break;
|
break;
|
||||||
@@ -145,6 +145,13 @@ struct dhcp_netid *option_filter(struct dhcp_netid *tags, struct dhcp_netid *con
|
|||||||
my_syslog(MS_DHCP | LOG_WARNING, _("Ignoring duplicate dhcp-option %d"), tmp->opt);
|
my_syslog(MS_DHCP | LOG_WARNING, _("Ignoring duplicate dhcp-option %d"), tmp->opt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finally, eliminate duplicate options later in the chain, and therefore earlier in the config file. */
|
||||||
|
for (opt = opts; opt; opt = opt->next)
|
||||||
|
if (opt->flags & DHOPT_TAGOK)
|
||||||
|
for (tmp = opt->next; tmp; tmp = tmp->next)
|
||||||
|
if (tmp->opt == opt->opt)
|
||||||
|
tmp->flags &= ~DHOPT_TAGOK;
|
||||||
|
|
||||||
return tagif;
|
return tagif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user