mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-30 12:00:11 +01:00
device: add get_autoconnect_allowed() virtual function
It allows derived classes to override the autoconnect-allowed
state.
We already have
- NM_DEVICE_AUTOCONNECT property, which is two parts:
- NMDevicePrivate::autoconnect_user, which is settable via
D-Bus by the use, to allow the device to autoconnect.
- NMDevicePrivate::autoconnect_intern, which is set by
internal decision.
- NM_DEVICE_AUTOCONNECT_ALLOWED signal, where other devices can
subscribe to block autoconnect. Currently that is only used
by NMDeviceOlpcMesh.
These two make up for nm_device_autoconnect_allowed().
Add another way to allow derived classes to disable autoconnect
temporarily. This could also be achieved by having the device
subscribe to NM_DEVICE_AUTOCONNECT_ALLOWED of self, or by adding
a signal slot. But a plain function pointer seems easier.
(cherry picked from commit 6eaded9071)
This commit is contained in:
parent
da37c8ac6c
commit
4bf493fcaf
2 changed files with 15 additions and 1 deletions
|
|
@ -3444,6 +3444,12 @@ nm_device_set_autoconnect_both (NMDevice *self, gboolean autoconnect)
|
|||
nm_device_set_autoconnect_full (self, autoconnect, autoconnect);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_autoconnect_allowed (NMDevice *self)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
autoconnect_allowed_accumulator (GSignalInvocationHint *ihint,
|
||||
GValue *return_accu,
|
||||
|
|
@ -3466,10 +3472,12 @@ gboolean
|
|||
nm_device_autoconnect_allowed (NMDevice *self)
|
||||
{
|
||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
NMDeviceClass *klass = NM_DEVICE_GET_CLASS (self);
|
||||
GValue instance = G_VALUE_INIT;
|
||||
GValue retval = G_VALUE_INIT;
|
||||
|
||||
if (!nm_device_get_autoconnect (self))
|
||||
if ( !nm_device_get_autoconnect (self)
|
||||
|| !klass->get_autoconnect_allowed (self))
|
||||
return FALSE;
|
||||
|
||||
/* Unrealized devices can always autoconnect. */
|
||||
|
|
@ -13499,6 +13507,7 @@ nm_device_class_init (NMDeviceClass *klass)
|
|||
klass->have_any_ready_slaves = have_any_ready_slaves;
|
||||
|
||||
klass->get_type_description = get_type_description;
|
||||
klass->get_autoconnect_allowed = get_autoconnect_allowed;
|
||||
klass->can_auto_connect = can_auto_connect;
|
||||
klass->check_connection_compatible = check_connection_compatible;
|
||||
klass->check_connection_available = check_connection_available;
|
||||
|
|
|
|||
|
|
@ -243,6 +243,11 @@ typedef struct {
|
|||
|
||||
void (* set_enabled) (NMDevice *self, gboolean enabled);
|
||||
|
||||
/* allow derived classes to override the result of nm_device_autoconnect_allowed().
|
||||
* If the value changes, the class should call nm_device_emit_recheck_auto_activate(),
|
||||
* which emits NM_DEVICE_RECHECK_AUTO_ACTIVATE signal. */
|
||||
gboolean (* get_autoconnect_allowed) (NMDevice *self);
|
||||
|
||||
gboolean (* can_auto_connect) (NMDevice *self,
|
||||
NMConnection *connection,
|
||||
char **specific_object);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue