mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-07 07:50:17 +01:00
core: update hostname when addresses on platform change
This commit is contained in:
parent
c7ecaeb103
commit
443c380f29
3 changed files with 48 additions and 10 deletions
|
|
@ -324,6 +324,7 @@ enum {
|
|||
RECHECK_AUTO_ACTIVATE,
|
||||
RECHECK_ASSUME,
|
||||
DNS_LOOKUP_DONE,
|
||||
PLATFORM_ADDRESS_CHANGED,
|
||||
LAST_SIGNAL,
|
||||
};
|
||||
static guint signals[LAST_SIGNAL] = {0};
|
||||
|
|
@ -3887,6 +3888,13 @@ _dev_l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, N
|
|||
| nmp_object_type_to_flags(NMP_OBJECT_TYPE_IP4_ADDRESS)
|
||||
| nmp_object_type_to_flags(NMP_OBJECT_TYPE_IP6_ADDRESS)))
|
||||
_dev_unamanged_check_external_down(self, TRUE);
|
||||
|
||||
if (NM_FLAGS_ANY(notify_data->platform_change_on_idle.obj_type_flags,
|
||||
nmp_object_type_to_flags(NMP_OBJECT_TYPE_IP4_ADDRESS)
|
||||
| nmp_object_type_to_flags(NMP_OBJECT_TYPE_IP6_ADDRESS))) {
|
||||
g_signal_emit(self, signals[PLATFORM_ADDRESS_CHANGED], 0);
|
||||
}
|
||||
|
||||
_dev_ipmanual_check_ready(self);
|
||||
update_external_connection(self);
|
||||
nm_device_queue_recheck_assume(self);
|
||||
|
|
@ -17875,6 +17883,16 @@ nm_device_class_init(NMDeviceClass *klass)
|
|||
NULL,
|
||||
G_TYPE_NONE,
|
||||
0);
|
||||
|
||||
signals[PLATFORM_ADDRESS_CHANGED] = g_signal_new(NM_DEVICE_PLATFORM_ADDRESS_CHANGED,
|
||||
G_OBJECT_CLASS_TYPE(object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
G_TYPE_NONE,
|
||||
0);
|
||||
}
|
||||
|
||||
/* Connection defaults from plugins */
|
||||
|
|
|
|||
|
|
@ -71,16 +71,17 @@
|
|||
#define NM_DEVICE_HAS_PENDING_ACTION "has-pending-action" /* Internal only */
|
||||
|
||||
/* Internal signals */
|
||||
#define NM_DEVICE_DNS_LOOKUP_DONE "dns-lookup-done"
|
||||
#define NM_DEVICE_L3CD_CHANGED "l3cd-changed"
|
||||
#define NM_DEVICE_IP6_PREFIX_DELEGATED "ip6-prefix-delegated"
|
||||
#define NM_DEVICE_IP6_SUBNET_NEEDED "ip6-subnet-needed"
|
||||
#define NM_DEVICE_REMOVED "removed"
|
||||
#define NM_DEVICE_RECHECK_AUTO_ACTIVATE "recheck-auto-activate"
|
||||
#define NM_DEVICE_RECHECK_ASSUME "recheck-assume"
|
||||
#define NM_DEVICE_STATE_CHANGED "state-changed"
|
||||
#define NM_DEVICE_LINK_INITIALIZED "link-initialized"
|
||||
#define NM_DEVICE_AUTOCONNECT_ALLOWED "autoconnect-allowed"
|
||||
#define NM_DEVICE_DNS_LOOKUP_DONE "dns-lookup-done"
|
||||
#define NM_DEVICE_L3CD_CHANGED "l3cd-changed"
|
||||
#define NM_DEVICE_IP6_PREFIX_DELEGATED "ip6-prefix-delegated"
|
||||
#define NM_DEVICE_IP6_SUBNET_NEEDED "ip6-subnet-needed"
|
||||
#define NM_DEVICE_REMOVED "removed"
|
||||
#define NM_DEVICE_RECHECK_AUTO_ACTIVATE "recheck-auto-activate"
|
||||
#define NM_DEVICE_RECHECK_ASSUME "recheck-assume"
|
||||
#define NM_DEVICE_STATE_CHANGED "state-changed"
|
||||
#define NM_DEVICE_LINK_INITIALIZED "link-initialized"
|
||||
#define NM_DEVICE_AUTOCONNECT_ALLOWED "autoconnect-allowed"
|
||||
#define NM_DEVICE_PLATFORM_ADDRESS_CHANGED "platform-address-changed"
|
||||
|
||||
#define NM_DEVICE_STATISTICS_REFRESH_RATE_MS "refresh-rate-ms"
|
||||
#define NM_DEVICE_STATISTICS_TX_BYTES "tx-bytes"
|
||||
|
|
|
|||
|
|
@ -2131,6 +2131,8 @@ device_l3cd_changed(NMDevice * device,
|
|||
update_ip_dns(self, AF_INET6, device);
|
||||
update_ip4_routing(self, TRUE);
|
||||
update_ip6_routing(self, TRUE);
|
||||
/* FIXME: since we already monitor platform addresses changes,
|
||||
* this is probably no longer necessary? */
|
||||
update_system_hostname(self, "ip conf");
|
||||
} else {
|
||||
nm_dns_manager_set_ip_config(priv->dns_manager,
|
||||
|
|
@ -2144,6 +2146,19 @@ device_l3cd_changed(NMDevice * device,
|
|||
nm_dns_manager_end_updates(priv->dns_manager, __func__);
|
||||
}
|
||||
|
||||
static void
|
||||
device_platform_address_changed(NMDevice *device, gpointer user_data)
|
||||
{
|
||||
NMPolicyPrivate *priv = user_data;
|
||||
NMPolicy * self = _PRIV_TO_SELF(priv);
|
||||
NMDeviceState state;
|
||||
|
||||
state = nm_device_get_state(device);
|
||||
if (state > NM_DEVICE_STATE_DISCONNECTED && state < NM_DEVICE_STATE_DEACTIVATING) {
|
||||
update_system_hostname(self, "address changed");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
|
|
@ -2180,6 +2195,10 @@ devices_list_register(NMPolicy *self, NMDevice *device)
|
|||
/* Connect state-changed with _after, so that the handler is invoked after other handlers. */
|
||||
g_signal_connect_after(device, NM_DEVICE_STATE_CHANGED, G_CALLBACK(device_state_changed), priv);
|
||||
g_signal_connect(device, NM_DEVICE_L3CD_CHANGED, G_CALLBACK(device_l3cd_changed), priv);
|
||||
g_signal_connect(device,
|
||||
NM_DEVICE_PLATFORM_ADDRESS_CHANGED,
|
||||
G_CALLBACK(device_platform_address_changed),
|
||||
priv);
|
||||
g_signal_connect(device,
|
||||
NM_DEVICE_IP6_PREFIX_DELEGATED,
|
||||
G_CALLBACK(device_ip6_prefix_delegated),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue