summaryrefslogtreecommitdiff
path: root/src/dhcp-manager/nm-dhcp-dhclient-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dhcp-manager/nm-dhcp-dhclient-utils.c')
-rw-r--r--src/dhcp-manager/nm-dhcp-dhclient-utils.c20
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");