policy: move code from set_system_hostname() to _set_hostname()

This commit is contained in:
Beniamino Galvani 2016-02-22 10:10:15 +01:00
parent f87d25f7a1
commit 14d3103ba9

View file

@ -149,47 +149,15 @@ static void settings_set_hostname_cb (const char *hostname,
nm_dispatcher_call (DISPATCHER_ACTION_HOSTNAME, NULL, NULL, NULL, NULL, NULL, NULL);
}
static void
set_system_hostname (NMPolicy *self, const char *new_hostname, const char *msg)
{
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self);
char old_hostname[HOST_NAME_MAX + 1];
const char *name;
int ret;
if (!new_hostname)
name = FALLBACK_HOSTNAME4;
else if (!new_hostname[0]) {
g_warn_if_reached ();
name = FALLBACK_HOSTNAME4;
} else
name = new_hostname;
old_hostname[HOST_NAME_MAX] = '\0';
errno = 0;
ret = gethostname (old_hostname, HOST_NAME_MAX);
if (ret != 0) {
_LOGW (LOGD_DNS, "couldn't get the system hostname: (%d) %s",
errno, strerror (errno));
} else {
/* Don't set the hostname if it isn't actually changing */
if (nm_streq (name, old_hostname))
return;
}
_LOGI (LOGD_DNS, "setting system hostname to '%s' (%s)", name, msg);
nm_settings_set_transient_hostname (priv->settings,
name,
settings_set_hostname_cb,
NULL);
}
static void
_set_hostname (NMPolicy *policy,
const char *new_hostname,
const char *msg)
{
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (policy);
char old_hostname[HOST_NAME_MAX + 1];
const char *name;
int ret;
/* The incoming hostname *can* be NULL, which will get translated to
* 'localhost.localdomain' or such in the hostname policy code, but we
@ -221,9 +189,41 @@ _set_hostname (NMPolicy *policy,
priv->cur_hostname = g_strdup (new_hostname);
priv->hostname_changed = TRUE;
/* Notify the DNS manager of the hostname change so that the domain part, if
* present, can be added to the search list.
*/
nm_dns_manager_set_hostname (priv->dns_manager, priv->cur_hostname);
set_system_hostname (policy, priv->cur_hostname, msg);
/* Finally, set kernel hostname */
if (!priv->cur_hostname)
name = FALLBACK_HOSTNAME4;
else if (!priv->cur_hostname[0]) {
g_warn_if_reached ();
name = FALLBACK_HOSTNAME4;
} else
name = priv->cur_hostname;
old_hostname[HOST_NAME_MAX] = '\0';
errno = 0;
ret = gethostname (old_hostname, HOST_NAME_MAX);
if (ret != 0) {
_LOGW (LOGD_DNS, "couldn't get the system hostname: (%d) %s",
errno, strerror (errno));
} else {
/* Don't set the hostname if it isn't actually changing */
if (nm_streq (name, old_hostname))
return;
}
_LOGI (LOGD_DNS, "setting system hostname to '%s' (%s)", name, msg);
/* Ask NMSettings to update the transient hostname using its
* systemd-hostnamed proxy */
nm_settings_set_transient_hostname (priv->settings,
name,
settings_set_hostname_cb,
NULL);
}
static void