diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2015-04-29 16:34:38 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2015-06-09 18:11:25 +0200 |
commit | bbbf5229413f364dba8646ca582f41e7eef513d5 (patch) | |
tree | f26ff8965e852d088a5b56aa69ff0b3a63ddda21 | |
parent | acef8c6a1baf5fc5d03accfe4e1eb941570028a2 (diff) | |
download | NetworkManager-bbbf5229413f364dba8646ca582f41e7eef513d5.tar.gz |
core,libnm: add 'metered' property to NMDevice
-rw-r--r-- | introspection/nm-device.xml | 34 | ||||
-rw-r--r-- | libnm-core/nm-dbus-interface.h | 20 | ||||
-rw-r--r-- | libnm/libnm.ver | 2 | ||||
-rw-r--r-- | libnm/nm-device.c | 38 | ||||
-rw-r--r-- | libnm/nm-device.h | 3 | ||||
-rw-r--r-- | src/devices/nm-device.c | 35 | ||||
-rw-r--r-- | src/devices/nm-device.h | 3 |
7 files changed, 133 insertions, 2 deletions
diff --git a/introspection/nm-device.xml b/introspection/nm-device.xml index 71b830f108..239358a1e7 100644 --- a/introspection/nm-device.xml +++ b/introspection/nm-device.xml @@ -145,6 +145,12 @@ The device MTU (maximum transmission unit). </tp:docstring> </property> + <property name="Metered" type="u" access="read" tp:type="NM_METERED"> + <tp:docstring> + Whether the amount of traffic flowing through the device is + subject to limitations, for example set by service providers. + </tp:docstring> + </property> <method name="Disconnect"> <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_device_disconnect"/> @@ -660,6 +666,34 @@ </tp:enumvalue> </tp:enum> + <tp:enum name="NM_METERED" type="u"> + <tp:enumvalue suffix="UNKNOWN" value="0"> + <tp:docstring> + The device metered status is unknown. + </tp:docstring> + </tp:enumvalue> + <tp:enumvalue suffix="YES" value="1"> + <tp:docstring> + The device is metered and the value was statically set. + </tp:docstring> + </tp:enumvalue> + <tp:enumvalue suffix="NO" value="2"> + <tp:docstring> + The device is not metered and the value was statically set. + </tp:docstring> + </tp:enumvalue> + <tp:enumvalue suffix="GUESS_YES" value="3"> + <tp:docstring> + The device is metered and the value was guessed. + </tp:docstring> + </tp:enumvalue> + <tp:enumvalue suffix="GUESS_NO" value="4"> + <tp:docstring> + The device is not metered and the value was guessed. + </tp:docstring> + </tp:enumvalue> + </tp:enum> + <tp:struct name="NM_DEVICE_STATE_REASON_STRUCT"> <tp:member type="u" name="state" tp:type="NM_DEVICE_STATE"> <tp:docstring> diff --git a/libnm-core/nm-dbus-interface.h b/libnm-core/nm-dbus-interface.h index ccc3b3a9e9..0934add6fd 100644 --- a/libnm-core/nm-dbus-interface.h +++ b/libnm-core/nm-dbus-interface.h @@ -403,7 +403,6 @@ typedef enum { NM_DEVICE_STATE_FAILED = 120 } NMDeviceState; - /** * NMDeviceStateReason: * @NM_DEVICE_STATE_REASON_NONE: No reason given @@ -540,6 +539,25 @@ typedef enum { NM_DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED = 62, } NMDeviceStateReason; +/** + * NMMetered: + * @NM_METERED_UNKNOWN: The metered status is unknown + * @NM_METERED_YES: Metered, the value was statically set + * @NM_METERED_NO: Not metered, the value was statically set + * @NM_METERED_GUESS_YES: Metered, the value was guessed + * @NM_METERED_GUESS_NO: Not metered, the value was guessed + * + * (Corresponds to the NM_METERED type in nm-device.xml.) + * + * Since: 1.2 + **/ +typedef enum { + NM_METERED_UNKNOWN = 0, + NM_METERED_YES = 1, + NM_METERED_NO = 2, + NM_METERED_GUESS_YES = 3, + NM_METERED_GUESS_NO = 4, +} NMMetered; /** * NMActiveConnectionState: diff --git a/libnm/libnm.ver b/libnm/libnm.ver index c15f0381c0..c77069bc3c 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -848,7 +848,9 @@ local: libnm_1_2_0 { global: nm_access_point_get_last_seen; + nm_device_get_metered; nm_device_get_nm_plugin_missing; + nm_metered_get_type; nm_setting_802_1x_check_cert_scheme; nm_setting_bridge_get_multicast_snooping; nm_setting_ip_config_add_dns_option; diff --git a/libnm/nm-device.c b/libnm/nm-device.c index 44cdc89153..9781095dbe 100644 --- a/libnm/nm-device.c +++ b/libnm/nm-device.c @@ -81,6 +81,7 @@ typedef struct { char *driver_version; char *firmware_version; char *type_description; + NMMetered metered; NMDeviceCapabilities capabilities; gboolean managed; gboolean firmware_missing; @@ -132,6 +133,7 @@ enum { PROP_AVAILABLE_CONNECTIONS, PROP_PHYSICAL_PORT_ID, PROP_MTU, + PROP_METERED, LAST_PROP }; @@ -196,6 +198,7 @@ init_dbus (NMObject *object) { NM_DEVICE_AVAILABLE_CONNECTIONS, &priv->available_connections, NULL, NM_TYPE_REMOTE_CONNECTION }, { NM_DEVICE_PHYSICAL_PORT_ID, &priv->physical_port_id }, { NM_DEVICE_MTU, &priv->mtu }, + { NM_DEVICE_METERED, &priv->metered }, /* Properties that exist in D-Bus but that we don't track */ { "ip4-address", NULL }, @@ -455,6 +458,9 @@ get_property (GObject *object, case PROP_MTU: g_value_set_uint (value, nm_device_get_mtu (device)); break; + case PROP_METERED: + g_value_set_uint (value, nm_device_get_metered (device)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -814,6 +820,20 @@ nm_device_class_init (NMDeviceClass *device_class) G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * NMDevice:metered: + * + * Whether the device is metered. + * + * Since: 1.2 + **/ + g_object_class_install_property + (object_class, PROP_METERED, + g_param_spec_uint (NM_DEVICE_METERED, "", "", + 0, G_MAXUINT32, NM_METERED_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + /* signals */ /** @@ -1942,6 +1962,24 @@ nm_device_get_mtu (NMDevice *device) } /** + * nm_device_get_metered: + * @device: a #NMDevice + * + * Gets the metered setting of a #NMDevice. + * + * Returns: the metered setting. + * + * Since: 1.2 + **/ +NMMetered +nm_device_get_metered (NMDevice *device) +{ + g_return_val_if_fail (NM_IS_DEVICE (device), NM_METERED_UNKNOWN); + + return NM_DEVICE_GET_PRIVATE (device)->metered; +} + +/** * nm_device_is_software: * @device: a #NMDevice * diff --git a/libnm/nm-device.h b/libnm/nm-device.h index 91cf13b1a0..66e1d5780c 100644 --- a/libnm/nm-device.h +++ b/libnm/nm-device.h @@ -61,6 +61,7 @@ G_BEGIN_DECLS #define NM_DEVICE_PRODUCT "product" #define NM_DEVICE_PHYSICAL_PORT_ID "physical-port-id" #define NM_DEVICE_MTU "mtu" +#define NM_DEVICE_METERED "metered" struct _NMDevice { NMObject parent; @@ -122,6 +123,8 @@ gboolean nm_device_is_software (NMDevice *device); const char * nm_device_get_product (NMDevice *device); const char * nm_device_get_vendor (NMDevice *device); const char * nm_device_get_description (NMDevice *device); +NM_AVAILABLE_IN_1_2 +NMMetered nm_device_get_metered (NMDevice *device); char ** nm_device_disambiguate_names (NMDevice **devices, int num_devices); diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index dec33d4086..f867ed48a9 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -129,6 +129,7 @@ enum { PROP_MASTER, PROP_HW_ADDRESS, PROP_HAS_PENDING_ACTION, + PROP_METERED, LAST_PROP }; @@ -326,6 +327,8 @@ typedef struct { gboolean is_master; GSList * slaves; /* list of SlaveInfo */ + NMMetered metered; + NMConnectionProvider *con_provider; } NMDevicePrivate; @@ -673,6 +676,21 @@ nm_device_get_device_type (NMDevice *self) return NM_DEVICE_GET_PRIVATE (self)->type; } +/** + * nm_device_get_metered: + * @setting: the #NMDevice + * + * Returns: the #NMDevice:metered property of the device. + * + * Since: 1.2 + **/ +NMMetered +nm_device_get_metered (NMDevice *self) +{ + g_return_val_if_fail (NM_IS_DEVICE (self), NM_METERED_UNKNOWN); + + return NM_DEVICE_GET_PRIVATE (self)->metered; +} /** * nm_device_get_priority(): @@ -9092,6 +9110,9 @@ get_property (GObject *object, guint prop_id, case PROP_HAS_PENDING_ACTION: g_value_set_boolean (value, nm_device_has_pending_action (self)); break; + case PROP_METERED: + g_value_set_uint (value, priv->metered); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -9362,6 +9383,20 @@ nm_device_class_init (NMDeviceClass *klass) G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * NMDevice:metered: + * + * Whether the connection is metered. + * + * Since: 1.2 + **/ + g_object_class_install_property + (object_class, PROP_METERED, + g_param_spec_uint (NM_DEVICE_METERED, "", "", + 0, G_MAXUINT32, NM_METERED_UNKNOWN, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + /* Signals */ signals[STATE_CHANGED] = g_signal_new ("state-changed", diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h index 424b096528..9cdab4c3fc 100644 --- a/src/devices/nm-device.h +++ b/src/devices/nm-device.h @@ -59,6 +59,7 @@ #define NM_DEVICE_PHYSICAL_PORT_ID "physical-port-id" #define NM_DEVICE_MTU "mtu" #define NM_DEVICE_HW_ADDRESS "hw-address" +#define NM_DEVICE_METERED "metered" #define NM_DEVICE_TYPE_DESC "type-desc" /* Internal only */ #define NM_DEVICE_RFKILL_TYPE "rfkill-type" /* Internal only */ @@ -75,7 +76,6 @@ #define NM_DEVICE_RECHECK_AUTO_ACTIVATE "recheck-auto-activate" #define NM_DEVICE_RECHECK_ASSUME "recheck-assume" - G_BEGIN_DECLS #define NM_TYPE_DEVICE (nm_device_get_type ()) @@ -282,6 +282,7 @@ const char * nm_device_get_driver_version (NMDevice *dev); const char * nm_device_get_type_desc (NMDevice *dev); const char * nm_device_get_type_description (NMDevice *dev); NMDeviceType nm_device_get_device_type (NMDevice *dev); +NMMetered nm_device_get_metered (NMDevice *dev); int nm_device_get_priority (NMDevice *dev); guint32 nm_device_get_ip4_route_metric (NMDevice *dev); |