mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 13:02:44 +01:00
resolve: Support .add_domain_name for resolvconf
Add ability to populate search domains for resolvconf based systems. Search domains are added using the 'search' directive and added using the <ifname>.domain key into resolvconf.
This commit is contained in:
parent
65fdc8f2fe
commit
8840d4623d
@ -385,6 +385,7 @@ static bool resolvconf_invoke(const char *ifname, const char *type,
|
|||||||
|
|
||||||
struct resolvconf {
|
struct resolvconf {
|
||||||
struct resolve super;
|
struct resolve super;
|
||||||
|
bool have_domain : 1;
|
||||||
bool have_dns : 1;
|
bool have_dns : 1;
|
||||||
char *ifname;
|
char *ifname;
|
||||||
};
|
};
|
||||||
@ -411,6 +412,22 @@ static void resolve_resolvconf_add_dns(struct resolve *resolve,
|
|||||||
rc->have_dns = true;
|
rc->have_dns = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void resolve_resolvconf_add_domain_name(struct resolve *resolve,
|
||||||
|
const char *domain_name)
|
||||||
|
{
|
||||||
|
struct resolvconf *rc =
|
||||||
|
l_container_of(resolve, struct resolvconf, super);
|
||||||
|
L_AUTO_FREE_VAR(char *, domain_str) = NULL;
|
||||||
|
|
||||||
|
if (L_WARN_ON(!resolvconf_path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
domain_str = l_strdup_printf("search %s\n", domain_name);
|
||||||
|
|
||||||
|
if (resolvconf_invoke(rc->ifname, "domain", domain_str))
|
||||||
|
rc->have_domain = true;
|
||||||
|
}
|
||||||
|
|
||||||
static void resolve_resolvconf_revert(struct resolve *resolve)
|
static void resolve_resolvconf_revert(struct resolve *resolve)
|
||||||
{
|
{
|
||||||
struct resolvconf *rc =
|
struct resolvconf *rc =
|
||||||
@ -419,7 +436,11 @@ static void resolve_resolvconf_revert(struct resolve *resolve)
|
|||||||
if (rc->have_dns)
|
if (rc->have_dns)
|
||||||
resolvconf_invoke(rc->ifname, "dns", NULL);
|
resolvconf_invoke(rc->ifname, "dns", NULL);
|
||||||
|
|
||||||
|
if (rc->have_domain)
|
||||||
|
resolvconf_invoke(rc->ifname, "domain", NULL);
|
||||||
|
|
||||||
rc->have_dns = false;
|
rc->have_dns = false;
|
||||||
|
rc->have_domain = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resolve_resolvconf_destroy(struct resolve *resolve)
|
static void resolve_resolvconf_destroy(struct resolve *resolve)
|
||||||
@ -433,6 +454,7 @@ static void resolve_resolvconf_destroy(struct resolve *resolve)
|
|||||||
|
|
||||||
static struct resolve_ops resolvconf_ops = {
|
static struct resolve_ops resolvconf_ops = {
|
||||||
.add_dns = resolve_resolvconf_add_dns,
|
.add_dns = resolve_resolvconf_add_dns,
|
||||||
|
.add_domain_name = resolve_resolvconf_add_domain_name,
|
||||||
.revert = resolve_resolvconf_revert,
|
.revert = resolve_resolvconf_revert,
|
||||||
.destroy = resolve_resolvconf_destroy,
|
.destroy = resolve_resolvconf_destroy,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user