mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 04:18:07 +02:00
core: add device IPv4 and IPv6 config change signals
We'll use these later to pull the DNS manager code out of the device class and into the policy.
This commit is contained in:
parent
220d96ce72
commit
e48c681bb0
2 changed files with 39 additions and 14 deletions
|
|
@ -94,6 +94,8 @@ enum {
|
||||||
STATE_CHANGED,
|
STATE_CHANGED,
|
||||||
AUTOCONNECT_ALLOWED,
|
AUTOCONNECT_ALLOWED,
|
||||||
AUTH_REQUEST,
|
AUTH_REQUEST,
|
||||||
|
IP4_CONFIG_CHANGED,
|
||||||
|
IP6_CONFIG_CHANGED,
|
||||||
LAST_SIGNAL,
|
LAST_SIGNAL,
|
||||||
};
|
};
|
||||||
static guint signals[LAST_SIGNAL] = { 0 };
|
static guint signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
@ -3517,21 +3519,21 @@ nm_device_set_ip4_config (NMDevice *self,
|
||||||
|
|
||||||
priv = NM_DEVICE_GET_PRIVATE (self);
|
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||||
ip_iface = nm_device_get_ip_iface (self);
|
ip_iface = nm_device_get_ip_iface (self);
|
||||||
|
ip_ifindex = nm_device_get_ip_ifindex (self);
|
||||||
|
|
||||||
old_config = priv->ip4_config;
|
old_config = priv->ip4_config;
|
||||||
|
|
||||||
if (new_config && old_config)
|
if (new_config && old_config) {
|
||||||
diff = nm_ip4_config_diff (new_config, old_config);
|
diff = nm_ip4_config_diff (new_config, old_config);
|
||||||
|
if (diff == NM_IP4_COMPARE_FLAG_NONE)
|
||||||
/* No actual change, do nothing */
|
return TRUE; /* no actual change */
|
||||||
if (diff == NM_IP4_COMPARE_FLAG_NONE)
|
} else if (!new_config && !old_config)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
dns_mgr = nm_dns_manager_get (NULL);
|
dns_mgr = nm_dns_manager_get (NULL);
|
||||||
if (old_config) {
|
if (old_config) {
|
||||||
/* Remove any previous IP4 Config from the DNS manager */
|
/* Remove any previous IP4 Config from the DNS manager */
|
||||||
nm_dns_manager_remove_ip4_config (dns_mgr, ip_iface, old_config);
|
nm_dns_manager_remove_ip4_config (dns_mgr, ip_iface, old_config);
|
||||||
g_object_unref (old_config);
|
|
||||||
priv->ip4_config = NULL;
|
priv->ip4_config = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3541,10 +3543,8 @@ nm_device_set_ip4_config (NMDevice *self,
|
||||||
/* Don't touch the device's actual IP config if the connection is
|
/* Don't touch the device's actual IP config if the connection is
|
||||||
* assumed when NM starts.
|
* assumed when NM starts.
|
||||||
*/
|
*/
|
||||||
if (!assumed) {
|
if (!assumed)
|
||||||
ip_ifindex = nm_device_get_ip_ifindex (self);
|
|
||||||
success = nm_system_apply_ip4_config (ip_ifindex, new_config, nm_device_get_priority (self), diff);
|
success = nm_system_apply_ip4_config (ip_ifindex, new_config, nm_device_get_priority (self), diff);
|
||||||
}
|
|
||||||
|
|
||||||
if (success || assumed) {
|
if (success || assumed) {
|
||||||
/* Export over D-Bus */
|
/* Export over D-Bus */
|
||||||
|
|
@ -3560,6 +3560,10 @@ nm_device_set_ip4_config (NMDevice *self,
|
||||||
g_object_unref (dns_mgr);
|
g_object_unref (dns_mgr);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), NM_DEVICE_IP4_CONFIG);
|
g_object_notify (G_OBJECT (self), NM_DEVICE_IP4_CONFIG);
|
||||||
|
g_signal_emit (self, signals[IP4_CONFIG_CHANGED], 0, priv->ip4_config, old_config);
|
||||||
|
|
||||||
|
if (old_config)
|
||||||
|
g_object_unref (old_config);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
@ -3586,18 +3590,17 @@ nm_device_set_ip6_config (NMDevice *self,
|
||||||
|
|
||||||
old_config = priv->ip6_config;
|
old_config = priv->ip6_config;
|
||||||
|
|
||||||
if (new_config && old_config)
|
if (new_config && old_config) {
|
||||||
diff = nm_ip6_config_diff (new_config, old_config);
|
diff = nm_ip6_config_diff (new_config, old_config);
|
||||||
|
if (diff == NM_IP6_COMPARE_FLAG_NONE)
|
||||||
/* No actual change, do nothing */
|
return TRUE; /* no actual change */
|
||||||
if (diff == NM_IP6_COMPARE_FLAG_NONE)
|
} else if (!new_config && !old_config)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
dns_mgr = nm_dns_manager_get (NULL);
|
dns_mgr = nm_dns_manager_get (NULL);
|
||||||
if (old_config) {
|
if (old_config) {
|
||||||
/* Remove any previous IP6 Config from the DNS manager */
|
/* Remove any previous IP6 Config from the DNS manager */
|
||||||
nm_dns_manager_remove_ip6_config (dns_mgr, ip_iface, old_config);
|
nm_dns_manager_remove_ip6_config (dns_mgr, ip_iface, old_config);
|
||||||
g_object_unref (old_config);
|
|
||||||
priv->ip6_config = NULL;
|
priv->ip6_config = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3618,6 +3621,10 @@ nm_device_set_ip6_config (NMDevice *self,
|
||||||
g_object_unref (dns_mgr);
|
g_object_unref (dns_mgr);
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), NM_DEVICE_IP6_CONFIG);
|
g_object_notify (G_OBJECT (self), NM_DEVICE_IP6_CONFIG);
|
||||||
|
g_signal_emit (self, signals[IP6_CONFIG_CHANGED], 0, priv->ip6_config, old_config);
|
||||||
|
|
||||||
|
if (old_config)
|
||||||
|
g_object_unref (old_config);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
@ -4271,6 +4278,22 @@ nm_device_class_init (NMDeviceClass *klass)
|
||||||
_nm_marshal_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER,
|
_nm_marshal_VOID__POINTER_STRING_BOOLEAN_POINTER_POINTER,
|
||||||
G_TYPE_NONE, 5, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER, G_TYPE_POINTER);
|
G_TYPE_NONE, 5, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER, G_TYPE_POINTER);
|
||||||
|
|
||||||
|
signals[IP4_CONFIG_CHANGED] =
|
||||||
|
g_signal_new (NM_DEVICE_IP4_CONFIG_CHANGED,
|
||||||
|
G_OBJECT_CLASS_TYPE (object_class),
|
||||||
|
G_SIGNAL_RUN_FIRST,
|
||||||
|
0, NULL, NULL,
|
||||||
|
_nm_marshal_VOID__OBJECT_OBJECT,
|
||||||
|
G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_OBJECT);
|
||||||
|
|
||||||
|
signals[IP6_CONFIG_CHANGED] =
|
||||||
|
g_signal_new (NM_DEVICE_IP6_CONFIG_CHANGED,
|
||||||
|
G_OBJECT_CLASS_TYPE (object_class),
|
||||||
|
G_SIGNAL_RUN_FIRST,
|
||||||
|
0, NULL, NULL,
|
||||||
|
_nm_marshal_VOID__OBJECT_OBJECT,
|
||||||
|
G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_OBJECT);
|
||||||
|
|
||||||
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
|
||||||
&dbus_glib_nm_device_interface_object_info);
|
&dbus_glib_nm_device_interface_object_info);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,10 @@
|
||||||
#define NM_DEVICE_RFKILL_TYPE "rfkill-type" /* Internal only */
|
#define NM_DEVICE_RFKILL_TYPE "rfkill-type" /* Internal only */
|
||||||
#define NM_DEVICE_IFINDEX "ifindex" /* Internal only */
|
#define NM_DEVICE_IFINDEX "ifindex" /* Internal only */
|
||||||
|
|
||||||
/* Internal signal */
|
/* Internal signals */
|
||||||
#define NM_DEVICE_AUTH_REQUEST "auth-request"
|
#define NM_DEVICE_AUTH_REQUEST "auth-request"
|
||||||
|
#define NM_DEVICE_IP4_CONFIG_CHANGED "ip4-config-changed"
|
||||||
|
#define NM_DEVICE_IP6_CONFIG_CHANGED "ip6-config-changed"
|
||||||
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue