summaryrefslogtreecommitdiff
path: root/src/nm-manager.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-05-31 14:31:29 +0200
committerThomas Haller <thaller@redhat.com>2016-06-01 13:30:00 +0200
commit19ea8f44b7a3931ccd038cb0afd48a09fd403413 (patch)
treeb0cf018ca749ffef9b0e6ec0ae4c2c2be8311dfd /src/nm-manager.c
parent70d194c159c80266140157db535700f8e44dbe0b (diff)
parentec53ed2cbaab754ddf1283658b5adfba8134e757 (diff)
downloadNetworkManager-th/nm-1-2-merge.tar.gz
all: merge branch 'master' into nm-1-2th/nm-1-2-merge
Since releasing 1.2.0, we maintain a stable branch 'nm-1-2' and implement new features on 'master'. Occasionally, we backport patches by cherry-picking from 'master'. While developing RHEL-7.3, we want essentially all those features and fixes from 'master' also show up in final RHEL-7.3, because that largely determines our priorities. One way to get 'master' stuff into RHEL-7.3, would be to release 1.4.0, and bring that to RHEL-7.3. The downside is, that we already have downstreams as a user of 'nm-1-2' branch (Ubuntu 16.04 LTS). Obviously, there are many useful and important fixes on 'master' that also should reach downstream. Would downstream also rebase with us to 1.4.0? Do we want to invest the effort to heavily maintain both a 'nm-1-4' and 'nm-1-2' branch upstream? After releasing 1.4.0, upstream has less motivation for the additional work to maintain an old-stable 'nm-1-2' branch. So I think this either means more work for upstream, or less upstream help with old-stable branch. The latter possibly also means a worse expirience for 'nm-1-2' users. The alternative is to bring 'nm-1-2' to RHEL-7.3, but that means we backport essentially everything from 'master'. Of course, that temporarily destabilizes our 'nm-1-2' somewhat (our 'master' is in a decent shape, so it shouldn't be that bad). It also means, that 'nm-1-2' will see large development/backporting efforts and thus our upstream stable branch isn't what one would traditionally consider a bugfix-only, stable branch. This is also exactly what we did for 'nm-1-0' branch at the RHEL-7.2 time and although it has downsides, I think it is preferable to above option. Upstream is not going to maintain a bugfix-only 'nm-1-2' branch. If somebody wants that, he must be prepared to do the work and maintain such a "stable" branch based on 1.2.2 himself. Do note, that 'master' is supposed to be backward compatible, and all the gazillion of changes that happend there are considered to be an improvement. Thus, we bring all those improvements to 'nm-1-2', not only bugfixes. Also note, that after this large merge we are going to take the time to test and fix possible regressions before releasing 1.2.4. You can also think of 1.2.4 as a new backward compatible version of NetworkManager and 'master' was the development branch towards that. Now, instead of cherry-picking basically everything, re-merge 'master' into 'nm-1-2'. The outcome is pretty similar, the difference is: + doing it in one rush is considerabily less work, and you can easily verify that the backports are correct via `git diff master`. + we anyway backport everything. Thus a real merge in our git history better represents what is happening. + with a real merge, git has a new merge-parent and future backports will less conflict. - we don't have a fine-grained history of cherry-picked patches on 'nm-1-2'. Instead, there is only this one merge-commit. Of course, the real history is all here and comes from 'master', on HEAD^2. - it also means, if downstream wants to patch 1.2.2 release, it must find the appropriate patch on HEAD^2. - the large merge plays less nice with git-annotate and git-bisect, but still acceptable. I think the time to do this is good, because - 'master' is in a relatively good shape - there are many useful fixes to backport - 1.2.4 is still a bit out, and we can find regressions that this merge may cause. - RHEL-7.3 is even farther away and thus all the testing effort immediately benefits 'nm-1-2'. Yet another alternative to a real merge or extensive cherry-picking would be to do a `git merge --squash master`. However, I think that a real merge better expresses what actually happened. Conflicts: clients/cli/settings.c clients/common/nm-vpn-helpers.c configure.ac libnm-core/Makefile.am libnm-core/nm-vpn-editor-plugin.c man/common.ent.in po/pt_BR.po po/sv.po shared/nm-macros-internal.h shared/nm-test-utils.h shared/nm-version-macros.h.in src/devices/bluetooth/nm-bluez-device.c src/devices/nm-device-ethernet.c src/devices/nm-device.c src/devices/nm-device.h src/devices/wwan/nm-modem-broadband.c src/dhcp-manager/nm-dhcp-systemd.c src/dns-manager/nm-dns-dnsmasq.c src/dns-manager/nm-dns-manager.c src/dnsmasq-manager/tests/test-dnsmasq-utils.c src/nm-auth-subject.c src/nm-connection-provider.c src/nm-connection-provider.h src/nm-core-utils.c src/nm-ip4-config.c src/nm-ip6-config.c src/nm-manager.c src/platform/nm-fake-platform.c src/platform/nm-linux-platform.c src/platform/nm-platform-utils.c src/platform/nm-platform-utils.h src/platform/nm-platform.c src/platform/nm-platform.h src/ppp-manager/nm-ppp-manager.c src/settings/nm-settings.c src/tests/test-ip4-config.c src/vpn-manager/nm-vpn-connection.c
Diffstat (limited to 'src/nm-manager.c')
-rw-r--r--src/nm-manager.c225
1 files changed, 66 insertions, 159 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index b4e832dfb0..333e47366f 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -21,13 +21,14 @@
#include "nm-default.h"
+#include "nm-manager.h"
+
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
-#include "nm-manager.h"
#include "nm-bus-manager.h"
#include "nm-vpn-manager.h"
#include "nm-device.h"
@@ -45,7 +46,6 @@
#include "nm-sleep-monitor.h"
#include "nm-connectivity.h"
#include "nm-policy.h"
-#include "nm-connection-provider.h"
#include "nm-session-monitor.h"
#include "nm-activation-request.h"
#include "nm-core-internal.h"
@@ -90,15 +90,13 @@ typedef struct {
gboolean sw_enabled;
gboolean hw_enabled;
RfKillType rtype;
+ NMConfigRunStatePropertyType key;
const char *desc;
- const char *key;
const char *prop;
const char *hw_prop;
} RadioState;
typedef struct {
- char *state_file;
-
GSList *active_connections;
GSList *authorizing_connections;
guint ac_cleanup_id;
@@ -144,7 +142,16 @@ typedef struct {
gboolean devices_inited;
} NMManagerPrivate;
-#define NM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_MANAGER, NMManagerPrivate))
+struct _NMManager {
+ NMExportedObject parent;
+ NMManagerPrivate priv;
+};
+
+typedef struct {
+ NMExportedObjectClass parent;
+} NMManagerClass;
+
+#define NM_MANAGER_GET_PRIVATE(o) ({ nm_assert (NM_IS_MANAGER (o)); &((o)->priv); })
G_DEFINE_TYPE (NMManager, nm_manager, NM_TYPE_EXPORTED_OBJECT)
@@ -167,7 +174,6 @@ static guint signals[LAST_SIGNAL] = { 0 };
NM_GOBJECT_PROPERTIES_DEFINE (NMManager,
PROP_VERSION,
PROP_STATE,
- PROP_STATE_FILE,
PROP_STARTUP,
PROP_NETWORKING_ENABLED,
PROP_WIRELESS_ENABLED,
@@ -401,7 +407,7 @@ find_ac_for_connection (NMManager *manager, NMConnection *connection)
}
/* Filter out connections that are already active.
- * nm_settings_get_connections() returns sorted list. We need to preserve the
+ * nm_settings_get_connections_sorted() returns sorted list. We need to preserve the
* order so that we didn't change auto-activation order (recent timestamps
* are first).
* Caller is responsible for freeing the returned list with g_slist_free().
@@ -410,7 +416,7 @@ GSList *
nm_manager_get_activatable_connections (NMManager *manager)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager);
- GSList *all_connections = nm_settings_get_connections (priv->settings);
+ GSList *all_connections = nm_settings_get_connections_sorted (priv->settings);
GSList *connections = NULL, *iter;
NMSettingsConnection *connection;
@@ -1125,7 +1131,7 @@ system_create_virtual_device (NMManager *self, NMConnection *connection)
}
/* Create backing resources if the device has any autoconnect connections */
- connections = nm_settings_get_connections (priv->settings);
+ connections = nm_settings_get_connections_sorted (priv->settings);
for (iter = connections; iter; iter = g_slist_next (iter)) {
NMConnection *candidate = iter->data;
NMSettingConnection *s_con;
@@ -1160,7 +1166,7 @@ retry_connections_for_parent_device (NMManager *self, NMDevice *device)
g_return_if_fail (device);
- connections = nm_settings_get_connections (priv->settings);
+ connections = nm_settings_get_connections_sorted (priv->settings);
for (iter = connections; iter; iter = g_slist_next (iter)) {
NMConnection *candidate = iter->data;
gs_free_error GError *error = NULL;
@@ -1229,7 +1235,7 @@ system_unmanaged_devices_changed_cb (NMSettings *settings,
unmanaged_specs = nm_settings_get_unmanaged_specs (priv->settings);
for (iter = priv->devices; iter; iter = g_slist_next (iter))
- nm_device_set_unmanaged_by_user_config (NM_DEVICE (iter->data), unmanaged_specs);
+ nm_device_set_unmanaged_by_user_settings (NM_DEVICE (iter->data), unmanaged_specs);
}
static void
@@ -1268,54 +1274,6 @@ system_hostname_changed_cb (NMSettings *settings,
/* General NMManager stuff */
/*******************************************************************/
-/* Store value into key-file; supported types: boolean, int, string */
-static gboolean
-write_value_to_state_file (const char *filename,
- const char *group,
- const char *key,
- GType value_type,
- gpointer value,
- GError **error)
-{
- GKeyFile *key_file;
- char *data;
- gsize len = 0;
- gboolean ret = FALSE;
-
- g_return_val_if_fail (filename != NULL, FALSE);
- g_return_val_if_fail (group != NULL, FALSE);
- g_return_val_if_fail (key != NULL, FALSE);
- g_return_val_if_fail (value_type == G_TYPE_BOOLEAN ||
- value_type == G_TYPE_INT ||
- value_type == G_TYPE_STRING,
- FALSE);
-
- key_file = g_key_file_new ();
-
- g_key_file_set_list_separator (key_file, ',');
- g_key_file_load_from_file (key_file, filename, G_KEY_FILE_KEEP_COMMENTS, NULL);
- switch (value_type) {
- case G_TYPE_BOOLEAN:
- g_key_file_set_boolean (key_file, group, key, *((gboolean *) value));
- break;
- case G_TYPE_INT:
- g_key_file_set_integer (key_file, group, key, *((gint *) value));
- break;
- case G_TYPE_STRING:
- g_key_file_set_string (key_file, group, key, *((const gchar **) value));
- break;
- }
-
- data = g_key_file_to_data (key_file, &len, NULL);
- if (data) {
- ret = g_file_set_contents (filename, data, len, error);
- g_free (data);
- }
- g_key_file_free (key_file);
-
- return ret;
-}
-
static gboolean
radio_enabled_for_rstate (RadioState *rstate, gboolean check_changeable)
{
@@ -1944,7 +1902,7 @@ add_device (NMManager *self, NMDevice *device, GError **error)
type_desc = nm_device_get_type_desc (device);
g_assert (type_desc);
- nm_device_set_unmanaged_by_user_config (device, nm_settings_get_unmanaged_specs (priv->settings));
+ nm_device_set_unmanaged_by_user_settings (device, nm_settings_get_unmanaged_specs (priv->settings));
nm_device_set_unmanaged_flags (device,
NM_UNMANAGED_SLEEPING,
@@ -1999,11 +1957,12 @@ factory_component_added_cb (NMDeviceFactory *factory,
GObject *component,
gpointer user_data)
{
+ NMManager *self = user_data;
GSList *iter;
- g_return_val_if_fail (NM_IS_MANAGER (user_data), FALSE);
+ g_return_val_if_fail (self, FALSE);
- for (iter = NM_MANAGER_GET_PRIVATE (user_data)->devices; iter; iter = iter->next) {
+ for (iter = NM_MANAGER_GET_PRIVATE (self)->devices; iter; iter = iter->next) {
if (nm_device_notify_component_added ((NMDevice *) iter->data, component))
return TRUE;
}
@@ -2079,6 +2038,9 @@ platform_link_added (NMManager *self,
if (!ignore) {
_LOGW (LOGD_HW, "%s: factory failed to create device: %s",
plink->name, error->message);
+ } else {
+ _LOGD (LOGD_HW, "%s: factory failed to create device: %s",
+ plink->name, error->message);
}
return;
}
@@ -2641,7 +2603,7 @@ find_slaves (NMManager *manager,
* even if a slave was already active, it might be deactivated during
* master reactivation.
*/
- all_connections = nm_settings_get_connections (priv->settings);
+ all_connections = nm_settings_get_connections_sorted (priv->settings);
for (iter = all_connections; iter; iter = iter->next) {
NMSettingsConnection *master_connection = NULL;
NMDevice *master_device = NULL;
@@ -3375,7 +3337,7 @@ _activation_auth_done (NMActiveConnection *active,
g_dbus_method_invocation_return_value (context,
g_variant_new ("(o)",
nm_exported_object_get_path (NM_EXPORTED_OBJECT (active))));
- nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, TRUE,
+ nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, TRUE, NULL,
subject, NULL);
g_object_unref (active);
return;
@@ -3387,7 +3349,7 @@ _activation_auth_done (NMActiveConnection *active,
}
g_assert (error);
- nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, FALSE,
+ nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, FALSE, NULL,
subject, error->message);
_internal_activation_failed (self, active, error->message);
@@ -3475,7 +3437,7 @@ impl_manager_activate_connection (NMManager *self,
error:
if (connection) {
- nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, FALSE,
+ nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ACTIVATE, connection, FALSE, NULL,
subject, error->message);
}
g_clear_object (&active);
@@ -3524,6 +3486,7 @@ activation_add_done (NMSettings *settings,
nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ADD_ACTIVATE,
nm_active_connection_get_settings_connection (active),
TRUE,
+ NULL,
nm_active_connection_get_subject (active),
NULL);
return;
@@ -3538,6 +3501,7 @@ activation_add_done (NMSettings *settings,
nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ADD_ACTIVATE,
NULL,
FALSE,
+ NULL,
nm_active_connection_get_subject (active),
error->message);
g_clear_error (&local);
@@ -3582,6 +3546,7 @@ _add_and_activate_auth_done (NMActiveConnection *active,
nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ADD_ACTIVATE,
NULL,
FALSE,
+ NULL,
nm_active_connection_get_subject (active),
error->message);
g_dbus_method_invocation_take_error (context, error);
@@ -3633,7 +3598,7 @@ impl_manager_add_and_activate_connection (NMManager *self,
if (!subject)
goto error;
- all_connections = nm_settings_get_connections (priv->settings);
+ all_connections = nm_settings_get_connections_sorted (priv->settings);
if (vpn) {
/* Try to fill the VPN's connection setting and name at least */
if (!nm_connection_get_setting_vpn (connection)) {
@@ -3683,7 +3648,7 @@ impl_manager_add_and_activate_connection (NMManager *self,
return;
error:
- nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ADD_ACTIVATE, NULL, FALSE, subject, error->message);
+ nm_audit_log_connection_op (NM_AUDIT_OP_CONN_ADD_ACTIVATE, NULL, FALSE, NULL, subject, error->message);
g_clear_object (&connection);
g_slist_free (all_connections);
g_clear_object (&subject);
@@ -3779,6 +3744,7 @@ deactivate_net_auth_done_cb (NMAuthChain *chain,
nm_audit_log_connection_op (NM_AUDIT_OP_CONN_DEACTIVATE,
nm_active_connection_get_settings_connection (active),
!error,
+ NULL,
nm_auth_chain_get_subject (chain),
error ? error->message : NULL);
}
@@ -3852,7 +3818,7 @@ impl_manager_deactivate_connection (NMManager *self,
done:
if (error) {
if (connection) {
- nm_audit_log_connection_op (NM_AUDIT_OP_CONN_DEACTIVATE, connection, FALSE,
+ nm_audit_log_connection_op (NM_AUDIT_OP_CONN_DEACTIVATE, connection, FALSE, NULL,
subject, error->message);
}
g_dbus_method_invocation_take_error (context, error);
@@ -4192,21 +4158,9 @@ static void
_internal_enable (NMManager *self, gboolean enable)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
- GError *error = NULL;
- /* Update "NetworkingEnabled" key in state file */
- if (priv->state_file) {
- if (!write_value_to_state_file (priv->state_file,
- "main", "NetworkingEnabled",
- G_TYPE_BOOLEAN, (gpointer) &enable,
- &error)) {
- /* Not a hard error */
- _LOGW (LOGD_SUSPEND, "writing to state file %s failed: %s",
- priv->state_file,
- error->message);
- g_clear_error (&error);
- }
- }
+ nm_config_state_set (priv->config, TRUE, FALSE,
+ NM_CONFIG_STATE_PROPERTY_NETWORKING_ENABLED, enable);
_LOGI (LOGD_SUSPEND, "%s requested (sleeping: %s enabled: %s)",
enable ? "enable" : "disable",
@@ -4592,7 +4546,7 @@ nm_manager_start (NMManager *self, GError **error)
* connection-added signals thus devices have to be created manually.
*/
_LOGD (LOGD_CORE, "creating virtual devices...");
- connections = nm_settings_get_connections (priv->settings);
+ connections = nm_settings_get_connections_sorted (priv->settings);
for (iter = connections; iter; iter = iter->next)
connection_changed (self, NM_CONNECTION (iter->data));
g_slist_free (connections);
@@ -5144,7 +5098,6 @@ manager_radio_user_toggled (NMManager *self,
gboolean enabled)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
- GError *error = NULL;
gboolean old_enabled, new_enabled;
/* Don't touch devices if asleep/networking disabled */
@@ -5158,17 +5111,8 @@ manager_radio_user_toggled (NMManager *self,
}
/* Update enabled key in state file */
- if (priv->state_file) {
- if (!write_value_to_state_file (priv->state_file,
- "main", rstate->key,
- G_TYPE_BOOLEAN, (gpointer) &enabled,
- &error)) {
- _LOGW (LOGD_CORE, "writing to state file %s failed: %s",
- priv->state_file,
- error->message);
- g_clear_error (&error);
- }
- }
+ nm_config_state_set (priv->config, TRUE, FALSE,
+ rstate->key, enabled);
/* When the user toggles the radio, their request should override any
* daemon (like ModemManager) enabled state that can be changed. For WWAN
@@ -5230,34 +5174,22 @@ nm_manager_get (void)
return singleton_instance;
}
-NMConnectionProvider *
-nm_connection_provider_get (void)
+NMSettings *
+nm_settings_get (void)
{
- NMConnectionProvider *p;
-
g_return_val_if_fail (singleton_instance, NULL);
- p = NM_CONNECTION_PROVIDER (NM_MANAGER_GET_PRIVATE (singleton_instance)->settings);
- g_return_val_if_fail (p, NULL);
- return p;
+ return NM_MANAGER_GET_PRIVATE (singleton_instance)->settings;
}
NMManager *
-nm_manager_setup (const char *state_file,
- gboolean initial_net_enabled,
- gboolean initial_wifi_enabled,
- gboolean initial_wwan_enabled)
+nm_manager_setup (void)
{
NMManager *self;
g_return_val_if_fail (!singleton_instance, singleton_instance);
- self = g_object_new (NM_TYPE_MANAGER,
- NM_MANAGER_NETWORKING_ENABLED, initial_net_enabled,
- NM_MANAGER_WIRELESS_ENABLED, initial_wifi_enabled,
- NM_MANAGER_WWAN_ENABLED, initial_wwan_enabled,
- NM_MANAGER_STATE_FILE, state_file,
- NULL);
+ self = g_object_new (NM_TYPE_MANAGER, NULL);
nm_assert (NM_IS_MANAGER (self));
singleton_instance = self;
@@ -5275,6 +5207,7 @@ constructed (GObject *object)
NMManager *self = NM_MANAGER (object);
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
NMConfigData *config_data;
+ const NMConfigState *state;
G_OBJECT_CLASS (nm_manager_parent_class)->constructed (object);
@@ -5320,6 +5253,13 @@ constructed (GObject *object)
g_signal_connect (priv->connectivity, "notify::" NM_CONNECTIVITY_STATE,
G_CALLBACK (connectivity_changed), self);
+ state = nm_config_state_get (priv->config);
+
+ priv->net_enabled = state->net_enabled;
+
+ priv->radio_states[RFKILL_TYPE_WLAN].user_enabled = state->wifi_enabled;
+ priv->radio_states[RFKILL_TYPE_WWAN].user_enabled = state->wwan_enabled;
+
priv->rfkill_mgr = nm_rfkill_manager_new ();
g_signal_connect (priv->rfkill_mgr,
"rfkill-changed",
@@ -5346,14 +5286,14 @@ nm_manager_init (NMManager *self)
memset (priv->radio_states, 0, sizeof (priv->radio_states));
priv->radio_states[RFKILL_TYPE_WLAN].user_enabled = TRUE;
- priv->radio_states[RFKILL_TYPE_WLAN].key = "WirelessEnabled";
+ priv->radio_states[RFKILL_TYPE_WLAN].key = NM_CONFIG_STATE_PROPERTY_WIFI_ENABLED;
priv->radio_states[RFKILL_TYPE_WLAN].prop = NM_MANAGER_WIRELESS_ENABLED;
priv->radio_states[RFKILL_TYPE_WLAN].hw_prop = NM_MANAGER_WIRELESS_HARDWARE_ENABLED;
priv->radio_states[RFKILL_TYPE_WLAN].desc = "WiFi";
priv->radio_states[RFKILL_TYPE_WLAN].rtype = RFKILL_TYPE_WLAN;
priv->radio_states[RFKILL_TYPE_WWAN].user_enabled = TRUE;
- priv->radio_states[RFKILL_TYPE_WWAN].key = "WWANEnabled";
+ priv->radio_states[RFKILL_TYPE_WWAN].key = NM_CONFIG_STATE_PROPERTY_WWAN_ENABLED;
priv->radio_states[RFKILL_TYPE_WWAN].prop = NM_MANAGER_WWAN_ENABLED;
priv->radio_states[RFKILL_TYPE_WWAN].hw_prop = NM_MANAGER_WWAN_HARDWARE_ENABLED;
priv->radio_states[RFKILL_TYPE_WWAN].desc = "WWAN";
@@ -5516,33 +5456,15 @@ set_property (GObject *object, guint prop_id,
GError *error = NULL;
switch (prop_id) {
- case PROP_STATE_FILE:
- /* construct-only */
- priv->state_file = g_value_dup_string (value);
- break;
- case PROP_NETWORKING_ENABLED:
- /* construct-only */
- priv->net_enabled = g_value_get_boolean (value);
- break;
case PROP_WIRELESS_ENABLED:
- if (!priv->rfkill_mgr) {
- /* called during object construction. */
- priv->radio_states[RFKILL_TYPE_WLAN].user_enabled = g_value_get_boolean (value);
- } else {
- manager_radio_user_toggled (NM_MANAGER (object),
- &priv->radio_states[RFKILL_TYPE_WLAN],
- g_value_get_boolean (value));
- }
+ manager_radio_user_toggled (NM_MANAGER (object),
+ &priv->radio_states[RFKILL_TYPE_WLAN],
+ g_value_get_boolean (value));
break;
case PROP_WWAN_ENABLED:
- if (!priv->rfkill_mgr) {
- /* called during object construction. */
- priv->radio_states[RFKILL_TYPE_WWAN].user_enabled = g_value_get_boolean (value);
- } else {
- manager_radio_user_toggled (NM_MANAGER (object),
- &priv->radio_states[RFKILL_TYPE_WWAN],
- g_value_get_boolean (value));
- }
+ manager_radio_user_toggled (NM_MANAGER (object),
+ &priv->radio_states[RFKILL_TYPE_WWAN],
+ g_value_get_boolean (value));
break;
case PROP_WIMAX_ENABLED:
/* WIMAX is depreacted. This does nothing. */
@@ -5620,7 +5542,6 @@ dispose (GObject *object)
g_clear_object (&priv->settings);
}
- g_clear_pointer (&priv->state_file, g_free);
g_clear_object (&priv->vpn_manager);
/* Unregister property filter */
@@ -5665,8 +5586,6 @@ nm_manager_class_init (NMManagerClass *manager_class)
GObjectClass *object_class = G_OBJECT_CLASS (manager_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (manager_class);
- g_type_class_add_private (manager_class, sizeof (NMManagerPrivate));
-
exported_object_class->export_path = NM_DBUS_PATH;
/* virtual methods */
@@ -5682,13 +5601,6 @@ nm_manager_class_init (NMManagerClass *manager_class)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
- obj_properties[PROP_STATE_FILE] =
- g_param_spec_string (NM_MANAGER_STATE_FILE, "", "",
- NULL,
- G_PARAM_WRITABLE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS);
-
obj_properties[PROP_STATE] =
g_param_spec_uint (NM_MANAGER_STATE, "", "",
0, NM_STATE_DISCONNECTED, 0,
@@ -5704,14 +5616,13 @@ nm_manager_class_init (NMManagerClass *manager_class)
obj_properties[PROP_NETWORKING_ENABLED] =
g_param_spec_boolean (NM_MANAGER_NETWORKING_ENABLED, "", "",
TRUE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
obj_properties[PROP_WIRELESS_ENABLED] =
g_param_spec_boolean (NM_MANAGER_WIRELESS_ENABLED, "", "",
TRUE,
G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
obj_properties[PROP_WIRELESS_HARDWARE_ENABLED] =
@@ -5724,7 +5635,6 @@ nm_manager_class_init (NMManagerClass *manager_class)
g_param_spec_boolean (NM_MANAGER_WWAN_ENABLED, "", "",
TRUE,
G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
obj_properties[PROP_WWAN_HARDWARE_ENABLED] =
@@ -5844,8 +5754,7 @@ nm_manager_class_init (NMManagerClass *manager_class)
g_signal_new (NM_MANAGER_DEVICE_ADDED,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (NMManagerClass, device_added),
- NULL, NULL, NULL,
+ 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, NM_TYPE_DEVICE);
/* Emitted for both realized devices and placeholder devices */
@@ -5861,8 +5770,7 @@ nm_manager_class_init (NMManagerClass *manager_class)
g_signal_new (NM_MANAGER_DEVICE_REMOVED,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (NMManagerClass, device_removed),
- NULL, NULL, NULL,
+ 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, NM_TYPE_DEVICE);
/* Emitted for both realized devices and placeholder devices */
@@ -5877,8 +5785,7 @@ nm_manager_class_init (NMManagerClass *manager_class)
g_signal_new (NM_MANAGER_STATE_CHANGED,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (NMManagerClass, state_changed),
- NULL, NULL, NULL,
+ 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_UINT);
signals[CHECK_PERMISSIONS] =