diff options
Diffstat (limited to 'src/dhcp-manager/nm-dhcp-dhclient-utils.c')
-rw-r--r-- | src/dhcp-manager/nm-dhcp-dhclient-utils.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/dhcp-manager/nm-dhcp-dhclient-utils.c b/src/dhcp-manager/nm-dhcp-dhclient-utils.c index 726d26c8d0..5340d21af6 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient-utils.c +++ b/src/dhcp-manager/nm-dhcp-dhclient-utils.c @@ -55,24 +55,29 @@ add_also_request (GPtrArray *array, const char *item) } static void -add_hostname4 (GString *str, const char *format, const char *hostname) +add_hostname4 (GString *str, const char *hostname, const char *fqdn) { char *plain_hostname, *dot; - if (hostname) { + if (fqdn) { + g_string_append_printf (str, FQDN_FORMAT "\n", fqdn); + g_string_append (str, + "send fqdn.encoded on;\n" + "send fqdn.server-update on;\n"); + } else if (hostname) { plain_hostname = g_strdup (hostname); dot = strchr (plain_hostname, '.'); /* get rid of the domain */ if (dot) *dot = '\0'; - g_string_append_printf (str, format, plain_hostname); + g_string_append_printf (str, HOSTNAME4_FORMAT "\n", plain_hostname); g_free (plain_hostname); } } static void -add_ip4_config (GString *str, GBytes *client_id, const char *hostname) +add_ip4_config (GString *str, GBytes *client_id, const char *hostname, const char *fqdn) { if (client_id) { const char *p; @@ -107,7 +112,7 @@ add_ip4_config (GString *str, GBytes *client_id, const char *hostname) g_string_append (str, "; # added by NetworkManager\n"); } - add_hostname4 (str, HOSTNAME4_FORMAT "\n", hostname); + add_hostname4 (str, hostname, fqdn); g_string_append_c (str, '\n'); @@ -195,6 +200,7 @@ nm_dhcp_dhclient_create_config (const char *interface, GBytes *client_id, const char *anycast_addr, const char *hostname, + const char *fqdn, const char *orig_path, const char *orig_contents, GBytes **out_new_client_id) @@ -232,7 +238,7 @@ nm_dhcp_dhclient_create_config (const char *interface, } /* Override config file hostname and use one from the connection */ - if (hostname) { + if (hostname || fqdn) { if (strncmp (p, HOSTNAME4_TAG, strlen (HOSTNAME4_TAG)) == 0) continue; if (strncmp (p, FQDN_TAG, strlen (FQDN_TAG)) == 0) @@ -298,7 +304,7 @@ nm_dhcp_dhclient_create_config (const char *interface, add_also_request (alsoreq, "dhcp6.domain-search"); add_also_request (alsoreq, "dhcp6.client-id"); } else { - add_ip4_config (new_contents, client_id, hostname); + add_ip4_config (new_contents, client_id, hostname, fqdn); add_also_request (alsoreq, "rfc3442-classless-static-routes"); add_also_request (alsoreq, "ms-classless-static-routes"); add_also_request (alsoreq, "static-routes"); |