diff options
author | Thomas Haller <thaller@redhat.com> | 2017-06-14 14:14:56 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-06-14 15:49:39 +0200 |
commit | 203ffede01a1295ce711e543eae87dbb00c287b0 (patch) | |
tree | d2c8684b259d5b2cd1b8d9f1bb1988f987e20c10 | |
parent | e02f5454fd92488d456594c6f520512cdf1d009a (diff) | |
download | NetworkManager-203ffede01a1295ce711e543eae87dbb00c287b0.tar.gz |
dhcp/systemd: add support for DHCPv4 domain search list (option 119)
-rw-r--r-- | src/dhcp/nm-dhcp-systemd.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dhcp/nm-dhcp-systemd.c b/src/dhcp/nm-dhcp-systemd.c index 6fb09907f0..b909475552 100644 --- a/src/dhcp/nm-dhcp-systemd.c +++ b/src/dhcp/nm-dhcp-systemd.c @@ -79,7 +79,6 @@ G_DEFINE_TYPE (NMDhcpSystemd, nm_dhcp_systemd, NM_TYPE_DHCP_CLIENT) #define DHCP_OPTION_NIS_DOMAIN 40 #define DHCP_OPTION_NIS_SERVERS 41 -#define DHCP_OPTION_DOMAIN_SEARCH 119 #define DHCP_OPTION_MS_ROUTES 249 #define DHCP_OPTION_WPAD 252 @@ -118,7 +117,7 @@ static const ReqOption dhcp4_requests[] = { { DHCP_OPTION_NIS_SERVERS, REQPREFIX "nis_servers", TRUE }, { SD_DHCP_OPTION_NTP_SERVER, REQPREFIX "ntp_servers", TRUE }, { SD_DHCP_OPTION_SERVER_IDENTIFIER, REQPREFIX "dhcp_server_identifier", TRUE }, - { DHCP_OPTION_DOMAIN_SEARCH, REQPREFIX "domain_search", TRUE }, + { SD_DHCP_OPTION_DOMAIN_SEARCH_LIST, REQPREFIX "domain_search", TRUE }, { SD_DHCP_OPTION_CLASSLESS_STATIC_ROUTE, REQPREFIX "rfc3442_classless_static_routes", TRUE }, { DHCP_OPTION_MS_ROUTES, REQPREFIX "ms_classless_static_routes", TRUE }, { DHCP_OPTION_WPAD, REQPREFIX "wpad", TRUE }, @@ -234,6 +233,7 @@ lease_to_ip4_config (const char *iface, NMPlatformIP4Address address; nm_auto_free_gstring GString *str = NULL; gs_free sd_dhcp_route **routes = NULL; + const char *const*search_domains = NULL; guint16 mtu; int r, num; guint64 end_time; @@ -294,6 +294,18 @@ lease_to_ip4_config (const char *iface, add_option (options, dhcp4_requests, SD_DHCP_OPTION_DOMAIN_NAME_SERVER, str->str); } + /* Search domains */ + num = sd_dhcp_lease_get_search_domains (lease, (char ***) &search_domains); + if (num > 0) { + nm_gstring_prepare (&str); + for (i = 0; i < num; i++) { + nm_ip4_config_add_search (ip4_config, search_domains[i]); + g_string_append_printf (str, "%s%s", str->len ? " " : "", search_domains[i]); + LOG_LEASE (LOGD_DHCP4, "domain search '%s'", search_domains[i]); + } + add_option (options, dhcp4_requests, SD_DHCP_OPTION_DOMAIN_SEARCH_LIST, str->str); + } + /* Domain Name */ r = sd_dhcp_lease_get_domainname (lease, &s); if (r == 0) { |