mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 00:10:07 +01:00
connectivity: merge branch 'connectivity-enable-dbus-bgo785117'
https://bugzilla.gnome.org/show_bug.cgi?id=785117 https://github.com/NetworkManager/NetworkManager/pull/23 https://mail.gnome.org/archives/networkmanager-list/2017-July/msg00035.html
This commit is contained in:
commit
2eb02543c2
16 changed files with 362 additions and 4 deletions
|
|
@ -140,6 +140,8 @@ permission_to_string (NMClientPermission perm)
|
|||
return NM_AUTH_PERMISSION_CHECKPOINT_ROLLBACK;
|
||||
case NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS:
|
||||
return NM_AUTH_PERMISSION_ENABLE_DISABLE_STATISTICS;
|
||||
case NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK:
|
||||
return NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK;
|
||||
default:
|
||||
return _("unknown");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,5 +151,14 @@
|
|||
</defaults>
|
||||
</action>
|
||||
|
||||
<action id="org.freedesktop.NetworkManager.enable-disable-connectivity-check">
|
||||
<_description>Enable or disable connectivity checking</_description>
|
||||
<_message>System policy prevents enabling or disabling connectivity checking</_message>
|
||||
<defaults>
|
||||
<allow_inactive>no</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
</policyconfig>
|
||||
|
||||
|
|
|
|||
|
|
@ -443,6 +443,28 @@
|
|||
-->
|
||||
<property name="Connectivity" type="u" access="read"/>
|
||||
|
||||
<!--
|
||||
ConnectivityCheckAvailable:
|
||||
|
||||
Indicates whether connectivity checking service has been
|
||||
configured. This may return true even if the service is not
|
||||
currently enabled.
|
||||
|
||||
This is primarily intended for use in a privacy control panel,
|
||||
as a way to determine whether to show an option to
|
||||
enable/disable the feature.
|
||||
-->
|
||||
<property name="ConnectivityCheckAvailable" type="b" access="read"/>
|
||||
|
||||
<!--
|
||||
ConnectivityCheckEnabled:
|
||||
|
||||
Indicates whether connectivity checking is enabled. This
|
||||
property can also be written to to disable connectivity
|
||||
checking (as a privacy control panel might want to do).
|
||||
-->
|
||||
<property name="ConnectivityCheckEnabled" type="b" access="readwrite"/>
|
||||
|
||||
<!--
|
||||
GlobalDnsConfiguration:
|
||||
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@ enum {
|
|||
PROP_WIMAX_HARDWARE_ENABLED,
|
||||
PROP_ACTIVE_CONNECTIONS,
|
||||
PROP_CONNECTIVITY,
|
||||
PROP_CONNECTIVITY_CHECK_AVAILABLE,
|
||||
PROP_CONNECTIVITY_CHECK_ENABLED,
|
||||
PROP_PRIMARY_CONNECTION,
|
||||
PROP_ACTIVATING_CONNECTION,
|
||||
PROP_DEVICES,
|
||||
|
|
@ -473,6 +475,72 @@ nm_client_wimax_hardware_get_enabled (NMClient *client)
|
|||
return nm_manager_wimax_hardware_get_enabled (NM_CLIENT_GET_PRIVATE (client)->manager);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_client_connectivity_check_get_available:
|
||||
* @client: a #NMClient
|
||||
*
|
||||
* Determine whether connectivity checking is available. This
|
||||
* requires that the URI of a connectivity service has been set in the
|
||||
* configuration file.
|
||||
*
|
||||
* Returns: %TRUE if connectivity checking is available.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
gboolean
|
||||
nm_client_connectivity_check_get_available (NMClient *client)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_CLIENT (client), FALSE);
|
||||
|
||||
if (!nm_client_get_nm_running (client))
|
||||
return FALSE;
|
||||
|
||||
return nm_manager_connectivity_check_get_available (NM_CLIENT_GET_PRIVATE (client)->manager);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_client_connectivity_check_get_enabled:
|
||||
* @client: a #NMClient
|
||||
*
|
||||
* Determine whether connectivity checking is enabled.
|
||||
*
|
||||
* Returns: %TRUE if connectivity checking is enabled.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
gboolean
|
||||
nm_client_connectivity_check_get_enabled (NMClient *client)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_CLIENT (client), FALSE);
|
||||
|
||||
if (!nm_client_get_nm_running (client))
|
||||
return FALSE;
|
||||
|
||||
return nm_manager_connectivity_check_get_enabled (NM_CLIENT_GET_PRIVATE (client)->manager);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_client_connectivity_check_set_enabled:
|
||||
* @client: a #NMClient
|
||||
* @enabled: %TRUE to enable connectivity checking
|
||||
*
|
||||
* Enable or disable connectivity checking. Note that if a
|
||||
* connectivity checking URI has not been configured, this will not
|
||||
* have any effect.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
void
|
||||
nm_client_connectivity_check_set_enabled (NMClient *client, gboolean enabled)
|
||||
{
|
||||
g_return_if_fail (NM_IS_CLIENT (client));
|
||||
|
||||
if (!nm_client_get_nm_running (client))
|
||||
return;
|
||||
|
||||
nm_manager_connectivity_check_set_enabled (NM_CLIENT_GET_PRIVATE (client)->manager, enabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_client_get_logging:
|
||||
* @client: a #NMClient
|
||||
|
|
@ -2593,6 +2661,7 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_WIRELESS_ENABLED:
|
||||
case PROP_WWAN_ENABLED:
|
||||
case PROP_WIMAX_ENABLED:
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
if (priv->manager)
|
||||
g_object_set_property (G_OBJECT (priv->manager), pspec->name, value);
|
||||
break;
|
||||
|
|
@ -2660,6 +2729,12 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_CONNECTIVITY:
|
||||
g_value_set_enum (value, nm_client_get_connectivity (self));
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_AVAILABLE:
|
||||
g_value_set_boolean (value, nm_client_connectivity_check_get_available (self));
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
g_value_set_boolean (value, nm_client_connectivity_check_get_enabled (self));
|
||||
break;
|
||||
case PROP_PRIMARY_CONNECTION:
|
||||
g_value_set_object (value, nm_client_get_primary_connection (self));
|
||||
break;
|
||||
|
|
@ -2897,6 +2972,34 @@ nm_client_class_init (NMClientClass *client_class)
|
|||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMClient::connectivity-check-available
|
||||
*
|
||||
* Whether a connectivity checking service has been configured.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_CONNECTIVITY_CHECK_AVAILABLE,
|
||||
g_param_spec_boolean (NM_CLIENT_CONNECTIVITY_CHECK_AVAILABLE, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMClient::connectivity-check-enabled
|
||||
*
|
||||
* Whether a connectivity checking service has been enabled.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_CONNECTIVITY_CHECK_ENABLED,
|
||||
g_param_spec_boolean (NM_CLIENT_CONNECTIVITY_CHECK_ENABLED, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* NMClient:primary-connection:
|
||||
*
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ G_BEGIN_DECLS
|
|||
#define NM_CLIENT_WIMAX_HARDWARE_ENABLED "wimax-hardware-enabled"
|
||||
#define NM_CLIENT_ACTIVE_CONNECTIONS "active-connections"
|
||||
#define NM_CLIENT_CONNECTIVITY "connectivity"
|
||||
#define NM_CLIENT_CONNECTIVITY_CHECK_AVAILABLE "connectivity-check-available"
|
||||
#define NM_CLIENT_CONNECTIVITY_CHECK_ENABLED "connectivity-check-enabled"
|
||||
#define NM_CLIENT_PRIMARY_CONNECTION "primary-connection"
|
||||
#define NM_CLIENT_ACTIVATING_CONNECTION "activating-connection"
|
||||
#define NM_CLIENT_DEVICES "devices"
|
||||
|
|
@ -103,6 +105,8 @@ G_BEGIN_DECLS
|
|||
* @NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK: permission to create checkpoints.
|
||||
* @NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS: controls whether device
|
||||
* statistics can be globally enabled or disabled
|
||||
* @NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK: controls whether
|
||||
* connectivity check can be enabled or disabled
|
||||
* @NM_CLIENT_PERMISSION_LAST: a reserved boundary value
|
||||
*
|
||||
* #NMClientPermission values indicate various permissions that NetworkManager
|
||||
|
|
@ -125,8 +129,9 @@ typedef enum {
|
|||
NM_CLIENT_PERMISSION_RELOAD = 13,
|
||||
NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK = 14,
|
||||
NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS = 15,
|
||||
NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK = 16,
|
||||
|
||||
NM_CLIENT_PERMISSION_LAST = 15,
|
||||
NM_CLIENT_PERMISSION_LAST = 16,
|
||||
} NMClientPermission;
|
||||
|
||||
/**
|
||||
|
|
@ -249,6 +254,16 @@ gboolean nm_client_wimax_get_enabled (NMClient *client);
|
|||
void nm_client_wimax_set_enabled (NMClient *client, gboolean enabled);
|
||||
gboolean nm_client_wimax_hardware_get_enabled (NMClient *client);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
gboolean nm_client_connectivity_check_get_available (NMClient *client);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
gboolean nm_client_connectivity_check_get_enabled (NMClient *client);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
void nm_client_connectivity_check_set_enabled (NMClient *client,
|
||||
gboolean enabled);
|
||||
|
||||
gboolean nm_client_get_logging (NMClient *client,
|
||||
char **level,
|
||||
char **domains,
|
||||
|
|
|
|||
|
|
@ -83,6 +83,9 @@ typedef struct {
|
|||
|
||||
gboolean wimax_enabled;
|
||||
gboolean wimax_hw_enabled;
|
||||
|
||||
gboolean connectivity_check_available;
|
||||
gboolean connectivity_check_enabled;
|
||||
} NMManagerPrivate;
|
||||
|
||||
enum {
|
||||
|
|
@ -99,6 +102,8 @@ enum {
|
|||
PROP_WIMAX_HARDWARE_ENABLED,
|
||||
PROP_ACTIVE_CONNECTIONS,
|
||||
PROP_CONNECTIVITY,
|
||||
PROP_CONNECTIVITY_CHECK_AVAILABLE,
|
||||
PROP_CONNECTIVITY_CHECK_ENABLED,
|
||||
PROP_PRIMARY_CONNECTION,
|
||||
PROP_ACTIVATING_CONNECTION,
|
||||
PROP_DEVICES,
|
||||
|
|
@ -179,6 +184,8 @@ init_dbus (NMObject *object)
|
|||
{ NM_MANAGER_WIMAX_HARDWARE_ENABLED, &priv->wimax_hw_enabled },
|
||||
{ NM_MANAGER_ACTIVE_CONNECTIONS, &priv->active_connections, NULL, NM_TYPE_ACTIVE_CONNECTION, "active-connection" },
|
||||
{ NM_MANAGER_CONNECTIVITY, &priv->connectivity },
|
||||
{ NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE, &priv->connectivity_check_available },
|
||||
{ NM_MANAGER_CONNECTIVITY_CHECK_ENABLED, &priv->connectivity_check_enabled },
|
||||
{ NM_MANAGER_PRIMARY_CONNECTION, &priv->primary_connection, NULL, NM_TYPE_ACTIVE_CONNECTION },
|
||||
{ NM_MANAGER_ACTIVATING_CONNECTION, &priv->activating_connection, NULL, NM_TYPE_ACTIVE_CONNECTION },
|
||||
{ NM_MANAGER_DEVICES, &priv->devices, NULL, NM_TYPE_DEVICE, "device" },
|
||||
|
|
@ -232,6 +239,8 @@ nm_permission_to_client (const char *nm)
|
|||
return NM_CLIENT_PERMISSION_CHECKPOINT_ROLLBACK;
|
||||
else if (!strcmp (nm, NM_AUTH_PERMISSION_ENABLE_DISABLE_STATISTICS))
|
||||
return NM_CLIENT_PERMISSION_ENABLE_DISABLE_STATISTICS;
|
||||
else if (!strcmp (nm, NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK))
|
||||
return NM_CLIENT_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK;
|
||||
|
||||
return NM_CLIENT_PERMISSION_NONE;
|
||||
}
|
||||
|
|
@ -501,6 +510,31 @@ nm_manager_wimax_hardware_get_enabled (NMManager *manager)
|
|||
return NM_MANAGER_GET_PRIVATE (manager)->wimax_hw_enabled;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_manager_connectivity_check_get_available (NMManager *manager)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_MANAGER (manager), FALSE);
|
||||
|
||||
return NM_MANAGER_GET_PRIVATE (manager)->connectivity_check_available;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_manager_connectivity_check_get_enabled (NMManager *manager)
|
||||
{
|
||||
return NM_MANAGER_GET_PRIVATE (manager)->connectivity_check_enabled;
|
||||
}
|
||||
|
||||
void
|
||||
nm_manager_connectivity_check_set_enabled (NMManager *manager, gboolean enabled)
|
||||
{
|
||||
g_return_if_fail (NM_IS_MANAGER (manager));
|
||||
|
||||
_nm_object_set_property (NM_OBJECT (manager),
|
||||
NM_DBUS_INTERFACE,
|
||||
"ConnectivityCheckEnabled",
|
||||
"b", enabled);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_manager_get_logging (NMManager *manager, char **level, char **domains, GError **error)
|
||||
{
|
||||
|
|
@ -1350,6 +1384,13 @@ set_property (GObject *object, guint prop_id,
|
|||
/* Let the property value flip when we get the change signal from NM */
|
||||
}
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
b = g_value_get_boolean (value);
|
||||
if (priv->connectivity_check_enabled != b) {
|
||||
nm_manager_connectivity_check_set_enabled (NM_MANAGER (object), b);
|
||||
/* Let the property value flip when we get the change signal from NM */
|
||||
}
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -1402,6 +1443,12 @@ get_property (GObject *object,
|
|||
case PROP_CONNECTIVITY:
|
||||
g_value_set_enum (value, priv->connectivity);
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_AVAILABLE:
|
||||
g_value_set_boolean (value, priv->connectivity_check_available);
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
g_value_set_boolean (value, priv->connectivity_check_enabled);
|
||||
break;
|
||||
case PROP_PRIMARY_CONNECTION:
|
||||
g_value_set_object (value, priv->primary_connection);
|
||||
break;
|
||||
|
|
@ -1521,6 +1568,18 @@ nm_manager_class_init (NMManagerClass *manager_class)
|
|||
NM_CONNECTIVITY_UNKNOWN,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_CONNECTIVITY_CHECK_AVAILABLE,
|
||||
g_param_spec_boolean (NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_CONNECTIVITY_CHECK_ENABLED,
|
||||
g_param_spec_boolean (NM_MANAGER_CONNECTIVITY_CHECK_ENABLED, "", "",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_PRIMARY_CONNECTION,
|
||||
g_param_spec_object (NM_MANAGER_PRIMARY_CONNECTION, "", "",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ G_BEGIN_DECLS
|
|||
#define NM_MANAGER_WIMAX_HARDWARE_ENABLED "wimax-hardware-enabled"
|
||||
#define NM_MANAGER_ACTIVE_CONNECTIONS "active-connections"
|
||||
#define NM_MANAGER_CONNECTIVITY "connectivity"
|
||||
#define NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE "connectivity-check-available"
|
||||
#define NM_MANAGER_CONNECTIVITY_CHECK_ENABLED "connectivity-check-enabled"
|
||||
#define NM_MANAGER_PRIMARY_CONNECTION "primary-connection"
|
||||
#define NM_MANAGER_ACTIVATING_CONNECTION "activating-connection"
|
||||
#define NM_MANAGER_DEVICES "devices"
|
||||
|
|
@ -97,6 +99,16 @@ gboolean nm_manager_wimax_get_enabled (NMManager *manager);
|
|||
void nm_manager_wimax_set_enabled (NMManager *manager, gboolean enabled);
|
||||
gboolean nm_manager_wimax_hardware_get_enabled (NMManager *manager);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
gboolean nm_manager_connectivity_check_get_available (NMManager *manager);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
gboolean nm_manager_connectivity_check_get_enabled (NMManager *manager);
|
||||
|
||||
NM_AVAILABLE_IN_1_10
|
||||
void nm_manager_connectivity_check_set_enabled (NMManager *manager,
|
||||
gboolean enabled);
|
||||
|
||||
gboolean nm_manager_get_logging (NMManager *manager,
|
||||
char **level,
|
||||
char **domains,
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#define NM_AUTH_PERMISSION_RELOAD "org.freedesktop.NetworkManager.reload"
|
||||
#define NM_AUTH_PERMISSION_CHECKPOINT_ROLLBACK "org.freedesktop.NetworkManager.checkpoint-rollback"
|
||||
#define NM_AUTH_PERMISSION_ENABLE_DISABLE_STATISTICS "org.freedesktop.NetworkManager.enable-disable-statistics"
|
||||
#define NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK "org.freedesktop.NetworkManager.enable-disable-connectivity-check"
|
||||
|
||||
#define NM_CLONED_MAC_PRESERVE "preserve"
|
||||
#define NM_CLONED_MAC_PERMANENT "permanent"
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE (
|
|||
PROP_CONFIG_DESCRIPTION,
|
||||
PROP_KEYFILE_USER,
|
||||
PROP_KEYFILE_INTERN,
|
||||
PROP_CONNECTIVITY_ENABLED,
|
||||
PROP_CONNECTIVITY_URI,
|
||||
PROP_CONNECTIVITY_INTERVAL,
|
||||
PROP_CONNECTIVITY_RESPONSE,
|
||||
|
|
@ -88,6 +89,7 @@ typedef struct {
|
|||
MatchSectionInfo *device_infos;
|
||||
|
||||
struct {
|
||||
gboolean enabled;
|
||||
char *uri;
|
||||
char *response;
|
||||
guint interval;
|
||||
|
|
@ -238,6 +240,14 @@ nm_config_data_get_plugins (const NMConfigData *self, gboolean allow_default)
|
|||
return _nm_utils_strv_cleanup (list, TRUE, TRUE, TRUE);
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_config_data_get_connectivity_enabled (const NMConfigData *self)
|
||||
{
|
||||
g_return_val_if_fail (self, FALSE);
|
||||
|
||||
return NM_CONFIG_DATA_GET_PRIVATE (self)->connectivity.enabled;
|
||||
}
|
||||
|
||||
const char *
|
||||
nm_config_data_get_connectivity_uri (const NMConfigData *self)
|
||||
{
|
||||
|
|
@ -1380,7 +1390,8 @@ nm_config_data_diff (NMConfigData *old_data, NMConfigData *new_data)
|
|||
|| g_strcmp0 (nm_config_data_get_config_description (old_data), nm_config_data_get_config_description (new_data)) != 0)
|
||||
changes |= NM_CONFIG_CHANGE_CONFIG_FILES;
|
||||
|
||||
if ( nm_config_data_get_connectivity_interval (old_data) != nm_config_data_get_connectivity_interval (new_data)
|
||||
if ( nm_config_data_get_connectivity_enabled (old_data) != nm_config_data_get_connectivity_enabled (new_data)
|
||||
|| nm_config_data_get_connectivity_interval (old_data) != nm_config_data_get_connectivity_interval (new_data)
|
||||
|| g_strcmp0 (nm_config_data_get_connectivity_uri (old_data), nm_config_data_get_connectivity_uri (new_data))
|
||||
|| g_strcmp0 (nm_config_data_get_connectivity_response (old_data), nm_config_data_get_connectivity_response (new_data)))
|
||||
changes |= NM_CONFIG_CHANGE_CONNECTIVITY;
|
||||
|
|
@ -1420,6 +1431,9 @@ get_property (GObject *object,
|
|||
case PROP_CONFIG_DESCRIPTION:
|
||||
g_value_set_string (value, nm_config_data_get_config_description (self));
|
||||
break;
|
||||
case PROP_CONNECTIVITY_ENABLED:
|
||||
g_value_set_boolean (value, nm_config_data_get_connectivity_enabled (self));
|
||||
break;
|
||||
case PROP_CONNECTIVITY_URI:
|
||||
g_value_set_string (value, nm_config_data_get_connectivity_uri (self));
|
||||
break;
|
||||
|
|
@ -1517,6 +1531,7 @@ constructed (GObject *object)
|
|||
priv->connection_infos = _match_section_infos_construct (priv->keyfile, NM_CONFIG_KEYFILE_GROUPPREFIX_CONNECTION);
|
||||
priv->device_infos = _match_section_infos_construct (priv->keyfile, NM_CONFIG_KEYFILE_GROUPPREFIX_DEVICE);
|
||||
|
||||
priv->connectivity.enabled = nm_config_keyfile_get_boolean (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "enabled", TRUE);
|
||||
priv->connectivity.uri = nm_strstrip (g_key_file_get_string (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "uri", NULL));
|
||||
priv->connectivity.response = g_key_file_get_string (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, "response", NULL);
|
||||
|
||||
|
|
@ -1663,6 +1678,12 @@ nm_config_data_class_init (NMConfigDataClass *config_class)
|
|||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_CONNECTIVITY_ENABLED] =
|
||||
g_param_spec_string (NM_CONFIG_DATA_CONNECTIVITY_ENABLED, "", "",
|
||||
NULL,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_CONNECTIVITY_URI] =
|
||||
g_param_spec_string (NM_CONFIG_DATA_CONNECTIVITY_URI, "", "",
|
||||
NULL,
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#define NM_CONFIG_DATA_CONFIG_DESCRIPTION "config-description"
|
||||
#define NM_CONFIG_DATA_KEYFILE_USER "keyfile-user"
|
||||
#define NM_CONFIG_DATA_KEYFILE_INTERN "keyfile-intern"
|
||||
#define NM_CONFIG_DATA_CONNECTIVITY_ENABLED "connectivity-enabled"
|
||||
#define NM_CONFIG_DATA_CONNECTIVITY_URI "connectivity-uri"
|
||||
#define NM_CONFIG_DATA_CONNECTIVITY_INTERVAL "connectivity-interval"
|
||||
#define NM_CONFIG_DATA_CONNECTIVITY_RESPONSE "connectivity-response"
|
||||
|
|
@ -159,6 +160,7 @@ const char *nm_config_data_get_value_cached (const NMConfigData *config_data, co
|
|||
gint nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, const char *key, gint default_value);
|
||||
|
||||
char **nm_config_data_get_plugins (const NMConfigData *config_data, gboolean allow_default);
|
||||
gboolean nm_config_data_get_connectivity_enabled (const NMConfigData *config_data);
|
||||
const char *nm_config_data_get_connectivity_uri (const NMConfigData *config_data);
|
||||
guint nm_config_data_get_connectivity_interval (const NMConfigData *config_data);
|
||||
const char *nm_config_data_get_connectivity_response (const NMConfigData *config_data);
|
||||
|
|
|
|||
|
|
@ -1590,6 +1590,33 @@ done:
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void nm_config_set_connectivity_check_enabled (NMConfig *self,
|
||||
gboolean enabled)
|
||||
{
|
||||
NMConfigPrivate *priv;
|
||||
GKeyFile *keyfile;
|
||||
|
||||
g_return_if_fail (NM_IS_CONFIG (self));
|
||||
|
||||
priv = NM_CONFIG_GET_PRIVATE (self);
|
||||
g_return_if_fail (priv->config_data);
|
||||
|
||||
keyfile = nm_config_data_clone_keyfile_intern (priv->config_data);
|
||||
|
||||
/* Remove existing groups */
|
||||
g_key_file_remove_group (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY, NULL);
|
||||
|
||||
if (!enabled) {
|
||||
g_key_file_set_value (keyfile, NM_CONFIG_KEYFILE_GROUP_CONNECTIVITY,
|
||||
"enabled", "false");
|
||||
}
|
||||
|
||||
nm_config_set_values (self, keyfile, TRUE, FALSE);
|
||||
g_key_file_unref (keyfile);
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_config_set_values:
|
||||
* @self: the NMConfig instance
|
||||
|
|
|
|||
|
|
@ -179,6 +179,8 @@ void _nm_config_sort_groups (char **groups, gsize ngroups);
|
|||
|
||||
gboolean nm_config_set_global_dns (NMConfig *self, NMGlobalDnsConfig *global_dns, GError **error);
|
||||
|
||||
void nm_config_set_connectivity_check_enabled (NMConfig *self, gboolean enabled);
|
||||
|
||||
/* internal defines ... */
|
||||
extern guint _nm_config_match_nm_version;
|
||||
extern char *_nm_config_match_env;
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
typedef struct {
|
||||
char *uri;
|
||||
char *response;
|
||||
gboolean enabled;
|
||||
guint interval;
|
||||
NMConfig *config;
|
||||
guint periodic_check_id;
|
||||
|
|
@ -343,7 +344,7 @@ nm_connectivity_check_async (NMConnectivity *self,
|
|||
simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
|
||||
nm_connectivity_check_async);
|
||||
|
||||
if (priv->uri && priv->interval && priv->curl_mhandle)
|
||||
if (priv->enabled)
|
||||
ehandle = curl_easy_init ();
|
||||
|
||||
if (ehandle) {
|
||||
|
|
@ -401,7 +402,7 @@ nm_connectivity_check_enabled (NMConnectivity *self)
|
|||
{
|
||||
NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self);
|
||||
|
||||
return (priv->uri && priv->interval && priv->curl_mhandle);
|
||||
return priv->enabled;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -419,6 +420,7 @@ update_config (NMConnectivity *self, NMConfigData *config_data)
|
|||
NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self);
|
||||
const char *uri, *response;
|
||||
guint interval;
|
||||
gboolean enabled;
|
||||
gboolean changed = FALSE;
|
||||
|
||||
/* Set the URI. */
|
||||
|
|
@ -454,6 +456,18 @@ update_config (NMConnectivity *self, NMConfigData *config_data)
|
|||
changed = TRUE;
|
||||
}
|
||||
|
||||
/* Set enabled flag. */
|
||||
enabled = nm_config_data_get_connectivity_enabled (config_data);
|
||||
/* connectivity checking also requires a valid URI, interval and
|
||||
* curl_mhandle */
|
||||
if (!(priv->uri && priv->interval && priv->curl_mhandle)) {
|
||||
enabled = FALSE;
|
||||
}
|
||||
if (priv->enabled != enabled) {
|
||||
priv->enabled = enabled;
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
/* Set the response. */
|
||||
response = nm_config_data_get_connectivity_response (config_data);
|
||||
if (g_strcmp0 (response, priv->response) != 0) {
|
||||
|
|
|
|||
|
|
@ -205,6 +205,8 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMManager,
|
|||
PROP_WIMAX_HARDWARE_ENABLED,
|
||||
PROP_ACTIVE_CONNECTIONS,
|
||||
PROP_CONNECTIVITY,
|
||||
PROP_CONNECTIVITY_CHECK_AVAILABLE,
|
||||
PROP_CONNECTIVITY_CHECK_ENABLED,
|
||||
PROP_PRIMARY_CONNECTION,
|
||||
PROP_PRIMARY_CONNECTION_TYPE,
|
||||
PROP_ACTIVATING_CONNECTION,
|
||||
|
|
@ -4868,6 +4870,7 @@ get_permissions_done_cb (NMAuthChain *chain,
|
|||
get_perm_add_result (self, chain, &results, NM_AUTH_PERMISSION_RELOAD);
|
||||
get_perm_add_result (self, chain, &results, NM_AUTH_PERMISSION_CHECKPOINT_ROLLBACK);
|
||||
get_perm_add_result (self, chain, &results, NM_AUTH_PERMISSION_ENABLE_DISABLE_STATISTICS);
|
||||
get_perm_add_result (self, chain, &results, NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK);
|
||||
|
||||
g_dbus_method_invocation_return_value (context,
|
||||
g_variant_new ("(a{ss})", &results));
|
||||
|
|
@ -4909,6 +4912,7 @@ impl_manager_get_permissions (NMManager *self,
|
|||
nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_RELOAD, FALSE);
|
||||
nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_CHECKPOINT_ROLLBACK, FALSE);
|
||||
nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_ENABLE_DISABLE_STATISTICS, FALSE);
|
||||
nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -5564,6 +5568,10 @@ prop_filter (GDBusConnection *connection,
|
|||
permission = NM_AUTH_PERMISSION_SETTINGS_MODIFY_GLOBAL_DNS;
|
||||
audit_op = NM_AUDIT_OP_NET_CONTROL;
|
||||
expected_type = G_VARIANT_TYPE ("a{sv}");
|
||||
} else if (!strcmp (propname, "ConnectivityCheckEnabled")) {
|
||||
glib_propname = NM_MANAGER_CONNECTIVITY_CHECK_ENABLED;
|
||||
permission = NM_AUTH_PERMISSION_ENABLE_DISABLE_CONNECTIVITY_CHECK;
|
||||
audit_op = NM_AUDIT_OP_NET_CONTROL;
|
||||
} else
|
||||
return message;
|
||||
interface_type = NMDBUS_TYPE_MANAGER_SKELETON;
|
||||
|
|
@ -6210,6 +6218,7 @@ get_property (GObject *object, guint prop_id,
|
|||
NMConfigData *config_data;
|
||||
const NMGlobalDnsConfig *dns_config;
|
||||
const char *type;
|
||||
NMConnectivity *connectivity;
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_VERSION:
|
||||
|
|
@ -6254,6 +6263,14 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_CONNECTIVITY:
|
||||
g_value_set_uint (value, priv->connectivity_state);
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_AVAILABLE:
|
||||
config_data = nm_config_get_data (priv->config);
|
||||
g_value_set_boolean (value, nm_config_data_get_connectivity_uri (config_data) != NULL);
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
connectivity = nm_connectivity_get ();
|
||||
g_value_set_boolean (value, nm_connectivity_check_enabled (connectivity));
|
||||
break;
|
||||
case PROP_PRIMARY_CONNECTION:
|
||||
nm_utils_g_value_set_object_path (value, priv->primary_connection);
|
||||
break;
|
||||
|
|
@ -6317,6 +6334,10 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_WIMAX_ENABLED:
|
||||
/* WIMAX is depreacted. This does nothing. */
|
||||
break;
|
||||
case PROP_CONNECTIVITY_CHECK_ENABLED:
|
||||
nm_config_set_connectivity_check_enabled (priv->config,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_GLOBAL_DNS_CONFIGURATION:
|
||||
dns_config = nm_global_dns_config_from_dbus (value, &error);
|
||||
if (!error)
|
||||
|
|
@ -6541,6 +6562,18 @@ nm_manager_class_init (NMManagerClass *manager_class)
|
|||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_CONNECTIVITY_CHECK_AVAILABLE] =
|
||||
g_param_spec_boolean (NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE, "", "",
|
||||
TRUE,
|
||||
G_PARAM_READABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_CONNECTIVITY_CHECK_ENABLED] =
|
||||
g_param_spec_boolean (NM_MANAGER_CONNECTIVITY_CHECK_ENABLED, "", "",
|
||||
TRUE,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_properties[PROP_PRIMARY_CONNECTION] =
|
||||
g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION, "", "",
|
||||
NULL,
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@
|
|||
#define NM_MANAGER_WIMAX_HARDWARE_ENABLED "wimax-hardware-enabled"
|
||||
#define NM_MANAGER_ACTIVE_CONNECTIONS "active-connections"
|
||||
#define NM_MANAGER_CONNECTIVITY "connectivity"
|
||||
#define NM_MANAGER_CONNECTIVITY_CHECK_AVAILABLE "connectivity-check-available"
|
||||
#define NM_MANAGER_CONNECTIVITY_CHECK_ENABLED "connectivity-check-enabled"
|
||||
#define NM_MANAGER_PRIMARY_CONNECTION "primary-connection"
|
||||
#define NM_MANAGER_PRIMARY_CONNECTION_TYPE "primary-connection-type"
|
||||
#define NM_MANAGER_ACTIVATING_CONNECTION "activating-connection"
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "nm-test-device.h"
|
||||
#include "platform/nm-fake-platform.h"
|
||||
#include "nm-bus-manager.h"
|
||||
#include "nm-connectivity.h"
|
||||
|
||||
#include "nm-test-utils-core.h"
|
||||
|
||||
|
|
@ -317,6 +318,38 @@ test_config_global_dns (void)
|
|||
g_object_unref (config);
|
||||
}
|
||||
|
||||
static void
|
||||
test_config_connectivity_check (void)
|
||||
{
|
||||
const char *CONFIG_INTERN = BUILDDIR"/test-connectivity-check-intern.conf";
|
||||
NMConfig *config;
|
||||
NMConnectivity *connectivity;
|
||||
|
||||
g_assert (g_file_set_contents (CONFIG_INTERN, "", 0, NULL));
|
||||
config = setup_config (NULL, SRCDIR "/NetworkManager.conf", CONFIG_INTERN, NULL,
|
||||
"/no/such/dir", "", NULL);
|
||||
connectivity = nm_connectivity_get();
|
||||
|
||||
g_assert (nm_connectivity_check_enabled (connectivity));
|
||||
|
||||
/* disable connectivity checking */
|
||||
g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal *");
|
||||
nm_config_set_connectivity_check_enabled (config, FALSE);
|
||||
g_test_assert_expected_messages ();
|
||||
|
||||
g_assert (!nm_connectivity_check_enabled (connectivity));
|
||||
|
||||
/* re-enable connectivity checking */
|
||||
g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal *");
|
||||
nm_config_set_connectivity_check_enabled (config, TRUE);
|
||||
g_test_assert_expected_messages ();
|
||||
|
||||
g_assert (nm_connectivity_check_enabled (connectivity));
|
||||
|
||||
g_object_unref (connectivity);
|
||||
g_object_unref (config);
|
||||
}
|
||||
|
||||
static void
|
||||
test_config_no_auto_default (void)
|
||||
{
|
||||
|
|
@ -1018,6 +1051,7 @@ main (int argc, char **argv)
|
|||
|
||||
g_test_add_func ("/config/set-values", test_config_set_values);
|
||||
g_test_add_func ("/config/global-dns", test_config_global_dns);
|
||||
g_test_add_func ("/config/connectivity-check", test_config_connectivity_check);
|
||||
|
||||
g_test_add_func ("/config/signal", test_config_signal);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue