mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-01 02:30:11 +01:00
policy: move code from set_system_hostname() to _set_hostname()
This commit is contained in:
parent
f87d25f7a1
commit
14d3103ba9
1 changed files with 36 additions and 36 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue