diff options
Diffstat (limited to 'src/nm-manager.c')
| -rw-r--r-- | src/nm-manager.c | 519 |
1 files changed, 244 insertions, 275 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c index dc394a49..289a91d6 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -154,7 +154,6 @@ enum { INTERNAL_DEVICE_REMOVED, STATE_CHANGED, CHECK_PERMISSIONS, - USER_PERMISSIONS_CHANGED, ACTIVE_CONNECTION_ADDED, ACTIVE_CONNECTION_REMOVED, CONFIGURE_QUIT, @@ -164,8 +163,7 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMManager, PROP_VERSION, PROP_STATE, PROP_STATE_FILE, @@ -190,9 +188,7 @@ enum { /* Not exported */ PROP_HOSTNAME, PROP_SLEEPING, - - LAST_PROP -}; +); NM_DEFINE_SINGLETON_INSTANCE (NMManager); @@ -287,7 +283,7 @@ _active_connection_cleanup (gpointer user_data) iter = iter->next; if (nm_active_connection_get_state (ac) == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED) { if (active_connection_remove (self, ac)) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); } } g_object_thaw_notify (G_OBJECT (self)); @@ -359,7 +355,7 @@ active_connection_add (NMManager *self, NMActiveConnection *active) /* Only notify D-Bus if the active connection is actually exported */ if (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (active))) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); } const GSList * @@ -458,7 +454,7 @@ _config_changed_cb (NMConfig *config, NMConfigData *config_data, NMConfigChangeF NULL); if (NM_FLAGS_HAS (changes, NM_CONFIG_CHANGE_GLOBAL_DNS_CONFIG)) - g_object_notify (G_OBJECT (self), NM_MANAGER_GLOBAL_DNS_CONFIGURATION); + _notify (self, PROP_GLOBAL_DNS_CONFIGURATION); } /************************************************************************/ @@ -622,7 +618,7 @@ set_state (NMManager *self, NMState state) _LOGI (LOGD_CORE, "NetworkManager state is now %s", _nm_state_to_string (state)); - g_object_notify (G_OBJECT (self), NM_MANAGER_STATE); + _notify (self, PROP_STATE); g_signal_emit (self, signals[STATE_CHANGED], 0, priv->state); } @@ -641,7 +637,7 @@ checked_connectivity (GObject *object, GAsyncResult *result, gpointer user_data) else if ( connectivity == NM_CONNECTIVITY_PORTAL || connectivity == NM_CONNECTIVITY_LIMITED) set_state (manager, NM_STATE_CONNECTED_SITE); - g_object_notify (G_OBJECT (manager), NM_MANAGER_CONNECTIVITY); + _notify (manager, PROP_CONNECTIVITY); } g_object_unref (manager); @@ -710,7 +706,7 @@ nm_manager_update_metered (NMManager *self) if (value != priv->metered) { priv->metered = value; _LOGD (LOGD_CORE, "new metered value: %d", (int) priv->metered); - g_object_notify (G_OBJECT (self), NM_MANAGER_METERED); + _notify (self, PROP_METERED); } } @@ -756,7 +752,7 @@ manager_device_state_changed (NMDevice *device, case NM_DEVICE_STATE_DISCONNECTED: case NM_DEVICE_STATE_PREPARE: case NM_DEVICE_STATE_FAILED: - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (self, PROP_ACTIVE_CONNECTIONS); break; default: break; @@ -801,7 +797,7 @@ check_if_startup_complete (NMManager *self) _LOGI (LOGD_CORE, "startup complete"); priv->startup = FALSE; - g_object_notify (G_OBJECT (self), "startup"); + _notify (self, PROP_STARTUP); /* We don't have to watch notify::has-pending-action any more. */ for (iter = priv->devices; iter; iter = iter->next) { @@ -873,12 +869,13 @@ remove_device (NMManager *self, priv->devices = g_slist_remove (priv->devices, device); if (nm_device_is_real (device)) { - g_signal_emit (self, signals[DEVICE_REMOVED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_DEVICES); nm_device_removed (device); + + g_signal_emit (self, signals[DEVICE_REMOVED], 0, device); + _notify (self, PROP_DEVICES); } g_signal_emit (self, signals[INTERNAL_DEVICE_REMOVED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_ALL_DEVICES); + _notify (self, PROP_ALL_DEVICES); nm_exported_object_clear_and_unexport (&device); @@ -1234,7 +1231,7 @@ system_hostname_changed_cb (NMSettings *settings, g_free (priv->hostname); priv->hostname = hostname; - g_object_notify (G_OBJECT (self), NM_MANAGER_HOSTNAME); + _notify (self, PROP_HOSTNAME); nm_dhcp_manager_set_default_hostname (nm_dhcp_manager_get (), priv->hostname); } @@ -1798,7 +1795,7 @@ device_realized (NMDevice *device, { /* Emit D-Bus signals */ g_signal_emit (self, signals[DEVICE_ADDED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_DEVICES); + _notify (self, PROP_DEVICES); } static void @@ -1930,7 +1927,7 @@ add_device (NMManager *self, NMDevice *device, GError **error) nm_settings_device_added (priv->settings, device); g_signal_emit (self, signals[INTERNAL_DEVICE_ADDED], 0, device); - g_object_notify (G_OBJECT (self), NM_MANAGER_ALL_DEVICES); + _notify (self, PROP_ALL_DEVICES); for (iter = priv->devices; iter; iter = iter->next) { NMDevice *d = iter->data; @@ -2009,7 +2006,6 @@ platform_link_added (NMManager *self, { NMDeviceFactory *factory; NMDevice *device = NULL; - GError *error = NULL; gboolean nm_plugin_missing = FALSE; GSList *iter; @@ -2022,6 +2018,7 @@ platform_link_added (NMManager *self, for (iter = NM_MANAGER_GET_PRIVATE (self)->devices; iter; iter = iter->next) { NMDevice *candidate = iter->data; gboolean compatible = TRUE; + gs_free_error GError *error = NULL; if (strcmp (nm_device_get_iface (candidate), plink->name)) continue; @@ -2039,7 +2036,6 @@ platform_link_added (NMManager *self, _LOGD (LOGD_DEVICE, "(%s): failed to realize from plink: '%s'", plink->name, error->message); - g_clear_error (&error); /* Try next unrealized device */ } @@ -2048,13 +2044,13 @@ platform_link_added (NMManager *self, factory = nm_device_factory_manager_find_factory_for_link_type (plink->type); if (factory) { gboolean ignore = FALSE; + gs_free_error GError *error = NULL; device = nm_device_factory_create_device (factory, plink->name, plink, NULL, &ignore, &error); if (!device) { if (!ignore) { _LOGW (LOGD_HW, "%s: factory failed to create device: %s", plink->name, error->message); - g_clear_error (&error); } return; } @@ -2078,6 +2074,8 @@ platform_link_added (NMManager *self, } if (device) { + gs_free_error GError *error = NULL; + if (nm_plugin_missing) nm_device_set_nm_plugin_missing (device, TRUE); if (nm_device_realize_start (device, plink, NULL, &error)) { @@ -2086,7 +2084,6 @@ platform_link_added (NMManager *self, } else { _LOGW (LOGD_DEVICE, "%s: failed to realize device: %s", plink->name, error->message); - g_clear_error (&error); } g_object_unref (device); } @@ -2389,9 +2386,8 @@ find_master (NMManager *self, master_connection = nm_device_get_settings_connection (master_device); if (master_connection && !is_compatible_with_slave (NM_CONNECTION (master_connection), connection)) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The active connection on %s is not a valid master for '%s'", - nm_device_get_iface (master_device), - nm_connection_get_id (connection)); + "The active connection on %s is not compatible", + nm_device_get_iface (master_device)); return FALSE; } } else { @@ -2486,8 +2482,7 @@ ensure_master_active_connection (NMManager *self, g_assert (!master_connection || master_connection == device_connection); if (device_connection && !is_compatible_with_slave (NM_CONNECTION (device_connection), connection)) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The active connection on %s is not a valid master for '%s'", - nm_device_get_iface (master_device), + "The active connection %s is not compatible", nm_connection_get_id (connection)); return NULL; } @@ -2526,8 +2521,6 @@ ensure_master_active_connection (NMManager *self, master_device, subject, error); - if (!master_ac) - g_prefix_error (error, "%s", "Master device activation failed: "); g_slist_free (connections); return master_ac; } @@ -2537,8 +2530,7 @@ ensure_master_active_connection (NMManager *self, g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_CONNECTION, - "No compatible connection found for master device %s.", - nm_device_get_iface (master_device)); + "No compatible connection found."); return NULL; } @@ -2546,8 +2538,7 @@ ensure_master_active_connection (NMManager *self, g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "Master device %s unmanaged or not available for activation", - nm_device_get_iface (master_device)); + "Device unmanaged or not available for activation"); } else if (master_connection) { gboolean found_device = FALSE; @@ -2576,16 +2567,13 @@ ensure_master_active_connection (NMManager *self, candidate, subject, error); - if (!master_ac) - g_prefix_error (error, "%s", "Master device activation failed: "); return master_ac; } g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_DEVICE, - "No compatible disconnected device found for master connection %s.", - nm_settings_connection_get_uuid (master_connection)); + "No device available"); } else g_assert_not_reached (); @@ -2716,19 +2704,12 @@ autoconnect_slaves (NMManager *self, static gboolean _internal_activate_vpn (NMManager *self, NMActiveConnection *active, GError **error) { - gboolean success; - g_assert (NM_IS_VPN_CONNECTION (active)); nm_exported_object_export (NM_EXPORTED_OBJECT (active)); - success = nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, - NM_VPN_CONNECTION (active), - error); - if (success) - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); - else - nm_exported_object_unexport (NM_EXPORTED_OBJECT (active)); - return success; + return nm_vpn_manager_activate_connection (NM_MANAGER_GET_PRIVATE (self)->vpn_manager, + NM_VPN_CONNECTION (active), + error); } /* Traverse the device to disconnected state. This means that the device is ready @@ -2890,8 +2871,11 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Try to find the master connection/device if the connection has a dependency */ if (!find_master (self, applied, device, &master_connection, &master_device, &master_ac, - error)) + error)) { + g_prefix_error (error, "Can not find a master for %s: ", + nm_settings_connection_get_id (connection)); return FALSE; + } /* Ensure there's a master active connection the new connection we're * activating can depend on. @@ -2910,8 +2894,10 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Ensure eg bond slave and the candidate master is a bond master */ if (master_connection && !is_compatible_with_slave (NM_CONNECTION (master_connection), applied)) { - g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, - "The master connection was not compatible"); + g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_DEPENDENCY_FAILED, + "The master connection '%s' is not compatible with '%s'", + nm_settings_connection_get_id (master_connection), + nm_settings_connection_get_id (connection)); return FALSE; } @@ -2924,8 +2910,13 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * master_device, error); if (!master_ac) { - if (error) - g_assert (*error); + if (master_device) { + g_prefix_error (error, "Master device '%s' can't be activated: ", + nm_device_get_ip_iface (device)); + } else { + g_prefix_error (error, "Master connection '%s' can't be activated: ", + nm_settings_connection_get_id (connection)); + } return FALSE; } } @@ -2951,7 +2942,6 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * /* Export the new ActiveConnection to clients and start it on the device */ nm_exported_object_export (NM_EXPORTED_OBJECT (active)); - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS); nm_device_queue_activation (device, NM_ACT_REQUEST (active)); return TRUE; } @@ -3423,7 +3413,7 @@ impl_manager_activate_connection (NMManager *self, device = nm_manager_get_device_by_path (self, device_path); if (!device) { error = g_error_new (NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_DEVICE, - "Cannot activate unknown device %s", device_path); + "Can not activate an unknown device '%s'", device_path); goto error; } @@ -3522,6 +3512,7 @@ activation_add_done (NMSettings *settings, FALSE, nm_active_connection_get_subject (active), error->message); + g_object_unref (active); g_clear_error (&local); } @@ -3712,7 +3703,7 @@ nm_manager_deactivate_connection (NMManager *manager, } if (success) - g_object_notify (G_OBJECT (manager), NM_MANAGER_ACTIVE_CONNECTIONS); + _notify (manager, PROP_ACTIVE_CONNECTIONS); return success; } @@ -3903,8 +3894,13 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) NMDevice *device = NM_DEVICE (iter->data); guint i; - if (nm_device_is_software (device)) + if (nm_device_is_software (device)) { + /* We do not manage/unmanage software devices but + * their dhcp leases could have gone stale so we need + * to renew them */ + nm_device_update_dynamic_ip_setup (device); continue; + } /* enable/disable wireless devices since that we don't respond * to killswitch changes during sleep. @@ -3949,7 +3945,7 @@ _internal_sleep (NMManager *self, gboolean do_sleep) do_sleep_wake (self, TRUE); - g_object_notify (G_OBJECT (self), NM_MANAGER_SLEEPING); + _notify (self, PROP_SLEEPING); } #if 0 @@ -4065,18 +4061,19 @@ static void _internal_enable (NMManager *self, gboolean enable) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - GError *err = NULL; + 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, - &err)) { + &error)) { /* Not a hard error */ _LOGW (LOGD_SUSPEND, "writing to state file %s failed: %s", priv->state_file, - err->message); + error->message); + g_clear_error (&error); } } @@ -4089,7 +4086,7 @@ _internal_enable (NMManager *self, gboolean enable) do_sleep_wake (self, FALSE); - g_object_notify (G_OBJECT (self), NM_MANAGER_NETWORKING_ENABLED); + _notify (self, PROP_NETWORKING_ENABLED); } static void @@ -4528,7 +4525,7 @@ connectivity_changed (NMConnectivity *connectivity, nm_connectivity_state_to_string (nm_connectivity_get_state (connectivity))); nm_manager_update_state (self); - g_object_notify (G_OBJECT (self), NM_MANAGER_CONNECTIVITY); + _notify (self, PROP_CONNECTIVITY); } static void @@ -4602,8 +4599,8 @@ policy_default_device_changed (GObject *object, GParamSpec *pspec, gpointer user G_CALLBACK (connection_metered_changed), self); } _LOGD (LOGD_CORE, "PrimaryConnection now %s", ac ? nm_active_connection_get_settings_connection_id (ac) : "(none)"); - g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION); - g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION_TYPE); + _notify (self, PROP_PRIMARY_CONNECTION); + _notify (self, PROP_PRIMARY_CONNECTION_TYPE); nm_manager_update_metered (self); } } @@ -4637,7 +4634,7 @@ policy_activating_device_changed (GObject *object, GParamSpec *pspec, gpointer u g_clear_object (&priv->activating_connection); priv->activating_connection = ac ? g_object_ref (ac) : NULL; _LOGD (LOGD_CORE, "ActivatingConnection now %s", ac ? nm_active_connection_get_settings_connection_id (ac) : "(none)"); - g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVATING_CONNECTION); + _notify (self, PROP_ACTIVATING_CONNECTION); } } @@ -5544,144 +5541,124 @@ nm_manager_class_init (NMManagerClass *manager_class) object_class->dispose = dispose; /* properties */ - g_object_class_install_property - (object_class, PROP_VERSION, - g_param_spec_string (NM_MANAGER_VERSION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_STATE_FILE, - g_param_spec_string (NM_MANAGER_STATE_FILE, "", "", - NULL, - G_PARAM_WRITABLE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_STATE, - g_param_spec_uint (NM_MANAGER_STATE, "", "", - 0, NM_STATE_DISCONNECTED, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_STARTUP, - g_param_spec_boolean (NM_MANAGER_STARTUP, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_NETWORKING_ENABLED, - g_param_spec_boolean (NM_MANAGER_NETWORKING_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIRELESS_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIRELESS_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIRELESS_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIRELESS_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WWAN_ENABLED, - g_param_spec_boolean (NM_MANAGER_WWAN_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WWAN_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WWAN_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIMAX_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIMAX_ENABLED, "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_WIMAX_HARDWARE_ENABLED, - g_param_spec_boolean (NM_MANAGER_WIMAX_HARDWARE_ENABLED, "", "", - TRUE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ACTIVE_CONNECTIONS, - g_param_spec_boxed (NM_MANAGER_ACTIVE_CONNECTIONS, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CONNECTIVITY, - g_param_spec_uint (NM_MANAGER_CONNECTIVITY, "", "", - NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PRIMARY_CONNECTION, - g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PRIMARY_CONNECTION_TYPE, - g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION_TYPE, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - - g_object_class_install_property - (object_class, PROP_ACTIVATING_CONNECTION, - g_param_spec_string (NM_MANAGER_ACTIVATING_CONNECTION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_VERSION] = + g_param_spec_string (NM_MANAGER_VERSION, "", "", + NULL, + 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, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_STARTUP] = + g_param_spec_boolean (NM_MANAGER_STARTUP, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_NETWORKING_ENABLED] = + g_param_spec_boolean (NM_MANAGER_NETWORKING_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + 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] = + g_param_spec_boolean (NM_MANAGER_WIRELESS_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WWAN_ENABLED] = + 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] = + g_param_spec_boolean (NM_MANAGER_WWAN_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIMAX_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIMAX_ENABLED, "", "", + TRUE, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_WIMAX_HARDWARE_ENABLED] = + g_param_spec_boolean (NM_MANAGER_WIMAX_HARDWARE_ENABLED, "", "", + TRUE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ACTIVE_CONNECTIONS] = + g_param_spec_boxed (NM_MANAGER_ACTIVE_CONNECTIONS, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CONNECTIVITY] = + g_param_spec_uint (NM_MANAGER_CONNECTIVITY, "", "", + NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PRIMARY_CONNECTION] = + g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PRIMARY_CONNECTION_TYPE] = + g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION_TYPE, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ACTIVATING_CONNECTION] = + g_param_spec_string (NM_MANAGER_ACTIVATING_CONNECTION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /* Hostname is not exported over D-Bus */ - g_object_class_install_property - (object_class, PROP_HOSTNAME, - g_param_spec_string (NM_MANAGER_HOSTNAME, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_HOSTNAME] = + g_param_spec_string (NM_MANAGER_HOSTNAME, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /* Sleeping is not exported over D-Bus */ - g_object_class_install_property - (object_class, PROP_SLEEPING, - g_param_spec_boolean (NM_MANAGER_SLEEPING, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DEVICES, - g_param_spec_boxed (NM_MANAGER_DEVICES, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_SLEEPING] = + g_param_spec_boolean (NM_MANAGER_SLEEPING, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DEVICES] = + g_param_spec_boxed (NM_MANAGER_DEVICES, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /** * NMManager:metered: @@ -5690,12 +5667,11 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_METERED, - g_param_spec_uint (NM_MANAGER_METERED, "", "", - 0, G_MAXUINT32, NM_METERED_UNKNOWN, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_METERED] = + g_param_spec_uint (NM_MANAGER_METERED, "", "", + 0, G_MAXUINT32, NM_METERED_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); /** * NMManager:global-dns-configuration: @@ -5704,13 +5680,12 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_GLOBAL_DNS_CONFIGURATION, - g_param_spec_variant (NM_MANAGER_GLOBAL_DNS_CONFIGURATION, "", "", - G_VARIANT_TYPE ("a{sv}"), - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_GLOBAL_DNS_CONFIGURATION] = + g_param_spec_variant (NM_MANAGER_GLOBAL_DNS_CONFIGURATION, "", "", + G_VARIANT_TYPE ("a{sv}"), + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); /** * NMManager:all-devices: @@ -5719,91 +5694,85 @@ nm_manager_class_init (NMManagerClass *manager_class) * * Since: 1.2 **/ - g_object_class_install_property - (object_class, PROP_ALL_DEVICES, - g_param_spec_boxed (NM_MANAGER_ALL_DEVICES, "", "", - G_TYPE_STRV, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_ALL_DEVICES] = + g_param_spec_boxed (NM_MANAGER_ALL_DEVICES, "", "", + G_TYPE_STRV, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); /* signals */ /* D-Bus exported; emitted only for realized devices */ signals[DEVICE_ADDED] = - g_signal_new ("device-added", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMManagerClass, device_added), - NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_DEVICE); + 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, + G_TYPE_NONE, 1, NM_TYPE_DEVICE); /* Emitted for both realized devices and placeholder devices */ signals[INTERNAL_DEVICE_ADDED] = - g_signal_new ("internal-device-added", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, 0, - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_signal_new (NM_MANAGER_INTERNAL_DEVICE_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, 0, + NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_OBJECT); /* D-Bus exported; emitted only for realized devices */ signals[DEVICE_REMOVED] = - g_signal_new ("device-removed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMManagerClass, device_removed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_DEVICE); + 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, + G_TYPE_NONE, 1, NM_TYPE_DEVICE); /* Emitted for both realized devices and placeholder devices */ signals[INTERNAL_DEVICE_REMOVED] = - g_signal_new ("internal-device-removed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, 0, - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_signal_new (NM_MANAGER_INTERNAL_DEVICE_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, 0, + NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_OBJECT); signals[STATE_CHANGED] = - 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, - G_TYPE_NONE, 1, G_TYPE_UINT); + 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, + G_TYPE_NONE, 1, G_TYPE_UINT); signals[CHECK_PERMISSIONS] = - g_signal_new ("check-permissions", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); - - signals[USER_PERMISSIONS_CHANGED] = - g_signal_new ("user-permissions-changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MANAGER_CHECK_PERMISSIONS, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); signals[ACTIVE_CONNECTION_ADDED] = - g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); + g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); signals[ACTIVE_CONNECTION_REMOVED] = - g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_REMOVED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); + g_signal_new (NM_MANAGER_ACTIVE_CONNECTION_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_ACTIVE_CONNECTION); signals[CONFIGURE_QUIT] = - g_signal_new (NM_MANAGER_CONFIGURE_QUIT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MANAGER_CONFIGURE_QUIT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (manager_class), NMDBUS_TYPE_MANAGER_SKELETON, |