All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/2] netconfig: Add IPv4 domain name helper and installer
@ 2019-12-11  0:34 Tim Kourt
  2019-12-11  0:34 ` [PATCH v3 2/2] resolve: Add systemd-resolved domain name installer Tim Kourt
  2019-12-12 16:37 ` [PATCH v3 1/2] netconfig: Add IPv4 domain name helper and installer Denis Kenzior
  0 siblings, 2 replies; 4+ messages in thread
From: Tim Kourt @ 2019-12-11  0:34 UTC (permalink / raw)
  To: iwd

[-- Attachment #1: Type: text/plain, Size: 2166 bytes --]

The provided domain name helper allows to override the DHCP lease
option value with the static one from network configuration file.
---
 src/netconfig.c | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/src/netconfig.c b/src/netconfig.c
index c7e9f934..8d493496 100644
--- a/src/netconfig.c
+++ b/src/netconfig.c
@@ -278,6 +278,28 @@ static char **netconfig_ipv4_get_dns(struct netconfig *netconfig, uint8_t proto)
 	return NULL;
 }
 
+static char *netconfig_ipv4_get_domain_name(struct netconfig *netconfig,
+								uint8_t proto)
+{
+	const struct l_dhcp_lease *lease;
+	char *domain_name;
+
+	domain_name = l_settings_get_string(netconfig->active_settings,
+							"IPv4", "DomainName");
+	if (domain_name)
+		/* Allow to override the DHCP domain name with setting entry. */
+		return domain_name;
+
+	if (proto != RTPROT_DHCP)
+		return NULL;
+
+	lease = l_dhcp_client_get_lease(netconfig->dhcp_client);
+	if (!lease)
+		return NULL;
+
+	return l_dhcp_lease_get_domain_name(lease);
+}
+
 static struct netconfig_ifaddr *netconfig_ipv6_get_ifaddr(
 						struct netconfig *netconfig,
 						uint8_t proto)
@@ -727,6 +749,7 @@ static void netconfig_ipv4_ifaddr_add_cmd_cb(int error, uint16_t type,
 	struct netconfig *netconfig = user_data;
 	struct netconfig_ifaddr *ifaddr;
 	char **dns;
+	char *domain_name;
 
 	if (error && error != -EEXIST) {
 		l_error("netconfig: Failed to add IP address. "
@@ -751,12 +774,21 @@ static void netconfig_ipv4_ifaddr_add_cmd_cb(int error, uint16_t type,
 	dns = netconfig_ipv4_get_dns(netconfig, netconfig->rtm_protocol);
 	if (!dns) {
 		l_error("netconfig: Failed to obtain DNS addresses.");
-		goto done;
+		goto domain_name;
 	}
 
 	resolve_add_dns(netconfig->ifindex, ifaddr->family, dns);
 	l_strv_free(dns);
 
+domain_name:
+	domain_name = netconfig_ipv4_get_domain_name(netconfig,
+						netconfig->rtm_protocol);
+	if (!domain_name)
+		goto done;
+
+	resolve_add_domain_name(netconfig->ifindex, domain_name);
+	l_free(domain_name);
+
 done:
 	netconfig_ifaddr_destroy(ifaddr);
 }
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-12-12 16:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-11  0:34 [PATCH v3 1/2] netconfig: Add IPv4 domain name helper and installer Tim Kourt
2019-12-11  0:34 ` [PATCH v3 2/2] resolve: Add systemd-resolved domain name installer Tim Kourt
2019-12-11  6:59   ` Denis Kenzior
2019-12-12 16:37 ` [PATCH v3 1/2] netconfig: Add IPv4 domain name helper and installer Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.