From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6563978180611018614==" MIME-Version: 1.0 From: Tim Kourt Subject: [PATCH v3 1/2] netconfig: Add IPv4 domain name helper and installer Date: Tue, 10 Dec 2019 16:34:53 -0800 Message-ID: <20191211003454.16767-1-tim.a.kourt@linux.intel.com> List-Id: To: iwd@lists.01.org --===============6563978180611018614== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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 =3D 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 !=3D RTPROT_DHCP) + return NULL; + + lease =3D 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 =3D user_data; struct netconfig_ifaddr *ifaddr; char **dns; + char *domain_name; = if (error && error !=3D -EEXIST) { l_error("netconfig: Failed to add IP address. " @@ -751,12 +774,21 @@ static void netconfig_ipv4_ifaddr_add_cmd_cb(int erro= r, uint16_t type, dns =3D 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 =3D 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 --===============6563978180611018614==--