diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2018-06-29 23:02:53 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2018-07-17 11:45:01 +0200 |
commit | 748439870e7c0e70d3c2a18dcb3d7e55c8865615 (patch) | |
tree | c800abcfd557015b3c592b414e2333e03dcb271b | |
parent | 45e7df137641dd301556e48bedec1420e309add5 (diff) | |
download | NetworkManager-lr/ovs-slaves-1-12.tar.gz |
libnm: add accessors for ovs port/bridge slaveslr/ovs-slaves-1-12
(cherry picked from commit 5f30a2b525dd42e300e7ab69497f28348090bee8)
-rw-r--r-- | libnm-core/nm-version.h | 6 | ||||
-rw-r--r-- | libnm/libnm.ver | 2 | ||||
-rw-r--r-- | libnm/nm-device-ovs-bridge.c | 82 | ||||
-rw-r--r-- | libnm/nm-device-ovs-bridge.h | 7 | ||||
-rw-r--r-- | libnm/nm-device-ovs-port.c | 82 | ||||
-rw-r--r-- | libnm/nm-device-ovs-port.h | 7 |
6 files changed, 182 insertions, 4 deletions
diff --git a/libnm-core/nm-version.h b/libnm-core/nm-version.h index 0412bc8e94..ee6dbc0bd9 100644 --- a/libnm-core/nm-version.h +++ b/libnm-core/nm-version.h @@ -160,4 +160,10 @@ # define NM_AVAILABLE_IN_1_12 #endif +#if NM_VERSION_MAX_ALLOWED < NM_VERSION_1_12_2 +# define NM_AVAILABLE_IN_1_12_2 G_UNAVAILABLE(1,12,2) +#else +# define NM_AVAILABLE_IN_1_12_2 +#endif + #endif /* NM_VERSION_H */ diff --git a/libnm/libnm.ver b/libnm/libnm.ver index 84bf102db0..d937f53153 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -1376,4 +1376,6 @@ libnm_1_12_2 { nm_connection_get_setting_ovs_patch; nm_connection_get_setting_ovs_port; nm_connection_get_setting_tun; + nm_device_ovs_bridge_get_slaves; + nm_device_ovs_port_get_slaves; } libnm_1_12_0; diff --git a/libnm/nm-device-ovs-bridge.c b/libnm/nm-device-ovs-bridge.c index 798f6d20de..7b1c5f4793 100644 --- a/libnm/nm-device-ovs-bridge.c +++ b/libnm/nm-device-ovs-bridge.c @@ -14,7 +14,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017,2018 Red Hat, Inc. */ #include "nm-default.h" @@ -26,12 +26,21 @@ #include "nm-setting-ovs-bridge.h" #include "nm-setting-ovs-port.h" #include "nm-setting-connection.h" +#include "nm-core-internal.h" + +enum { + PROP_0, + PROP_SLAVES, + + LAST_PROP +}; /** * NMDeviceOvsBridge: */ struct _NMDeviceOvsBridge { NMDevice parent; + GPtrArray *slaves; }; struct _NMDeviceOvsBridgeClass { @@ -42,6 +51,26 @@ G_DEFINE_TYPE (NMDeviceOvsBridge, nm_device_ovs_bridge, NM_TYPE_DEVICE) /*****************************************************************************/ +/** + * nm_device_ovs_bridge_get_slaves: + * @device: a #NMDeviceOvsBridge + * + * Gets the ports currently enslaved to @device. + * + * Returns: (element-type NMDevice): the #GPtrArray containing + * #NMDevices that are slaves of @device. This is the internal + * copy used by the device, and must not be modified. + * + * Since: 1.12.2 + **/ +const GPtrArray * +nm_device_ovs_bridge_get_slaves (NMDeviceOvsBridge *device) +{ + g_return_val_if_fail (NM_IS_DEVICE_OVS_BRIDGE (device), FALSE); + + return device->slaves; +} + static const char * get_type_description (NMDevice *device) { @@ -81,15 +110,66 @@ get_setting_type (NMDevice *device) /*****************************************************************************/ static void +init_dbus (NMObject *object) +{ + NMDeviceOvsBridge *device = NM_DEVICE_OVS_BRIDGE (object); + const NMPropertiesInfo property_info[] = { + { NM_DEVICE_OVS_BRIDGE_SLAVES, &device->slaves, NULL, NM_TYPE_DEVICE }, + { NULL }, + }; + + NM_OBJECT_CLASS (nm_device_ovs_bridge_parent_class)->init_dbus (object); + + _nm_object_register_properties (object, + NM_DBUS_INTERFACE_DEVICE_OVS_BRIDGE, + property_info); +} + +static void +get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + NMDeviceOvsBridge *device = NM_DEVICE_OVS_BRIDGE (object); + + switch (prop_id) { + case PROP_SLAVES: + g_value_take_boxed (value, _nm_utils_copy_object_array (nm_device_ovs_bridge_get_slaves (device))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void nm_device_ovs_bridge_init (NMDeviceOvsBridge *device) { } static void +dispose (GObject *object) +{ + NMDeviceOvsBridge *device = NM_DEVICE_OVS_BRIDGE (object); + + g_clear_pointer (&device->slaves, g_ptr_array_unref); + + G_OBJECT_CLASS (nm_device_ovs_bridge_parent_class)->dispose (object); +} + +static void nm_device_ovs_bridge_class_init (NMDeviceOvsBridgeClass *ovs_bridge_class) { + GObjectClass *object_class = G_OBJECT_CLASS (ovs_bridge_class); + NMObjectClass *nm_object_class = NM_OBJECT_CLASS (ovs_bridge_class); NMDeviceClass *device_class = NM_DEVICE_CLASS (ovs_bridge_class); + object_class->get_property = get_property; + object_class->dispose = dispose; + + nm_object_class->init_dbus = init_dbus; + device_class->get_type_description = get_type_description; device_class->connection_compatible = connection_compatible; device_class->get_setting_type = get_setting_type; diff --git a/libnm/nm-device-ovs-bridge.h b/libnm/nm-device-ovs-bridge.h index b4b0b98b00..38f6fa87f0 100644 --- a/libnm/nm-device-ovs-bridge.h +++ b/libnm/nm-device-ovs-bridge.h @@ -14,7 +14,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017,2018 Red Hat, Inc. */ #ifndef __NM_DEVICE_OVS_BRIDGE_H__ @@ -35,11 +35,16 @@ G_BEGIN_DECLS #define NM_IS_DEVICE_OVS_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_OVS_BRIDGE)) #define NM_DEVICE_OVS_BRIDGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_OVS_BRIDGE, NMDeviceOvsBridgeClass)) +#define NM_DEVICE_OVS_BRIDGE_SLAVES "slaves" + typedef struct _NMDeviceOvsBridgeClass NMDeviceOvsBridgeClass; NM_AVAILABLE_IN_1_10 GType nm_device_ovs_bridge_get_type (void); +NM_AVAILABLE_IN_1_12_2 +const GPtrArray *nm_device_ovs_bridge_get_slaves (NMDeviceOvsBridge *device); + G_END_DECLS #endif /* __NM_DEVICE_OVS_BRIDGE_H__ */ diff --git a/libnm/nm-device-ovs-port.c b/libnm/nm-device-ovs-port.c index 17176dba3c..ab33163a86 100644 --- a/libnm/nm-device-ovs-port.c +++ b/libnm/nm-device-ovs-port.c @@ -14,7 +14,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017,2018 Red Hat, Inc. */ #include "nm-default.h" @@ -26,12 +26,21 @@ #include "nm-setting-ovs-port.h" #include "nm-setting-ovs-port.h" #include "nm-setting-connection.h" +#include "nm-core-internal.h" + +enum { + PROP_0, + PROP_SLAVES, + + LAST_PROP +}; /** * NMDeviceOvsPort: */ struct _NMDeviceOvsPort { NMDevice parent; + GPtrArray *slaves; }; struct _NMDeviceOvsPortClass { @@ -42,6 +51,26 @@ G_DEFINE_TYPE (NMDeviceOvsPort, nm_device_ovs_port, NM_TYPE_DEVICE) /*****************************************************************************/ +/** + * nm_device_ovs_port_get_slaves: + * @device: a #NMDeviceOvsPort + * + * Gets the interfaces currently enslaved to @device. + * + * Returns: (element-type NMDevice): the #GPtrArray containing + * #NMDevices that are slaves of @device. This is the internal + * copy used by the device, and must not be modified. + * + * Since: 1.12.2 + **/ +const GPtrArray * +nm_device_ovs_port_get_slaves (NMDeviceOvsPort *device) +{ + g_return_val_if_fail (NM_IS_DEVICE_OVS_PORT (device), FALSE); + + return device->slaves; +} + static const char * get_type_description (NMDevice *device) { @@ -80,15 +109,66 @@ get_setting_type (NMDevice *device) /*****************************************************************************/ static void +init_dbus (NMObject *object) +{ + NMDeviceOvsPort *device = NM_DEVICE_OVS_PORT (object); + const NMPropertiesInfo property_info[] = { + { NM_DEVICE_OVS_PORT_SLAVES, &device->slaves, NULL, NM_TYPE_DEVICE }, + { NULL }, + }; + + NM_OBJECT_CLASS (nm_device_ovs_port_parent_class)->init_dbus (object); + + _nm_object_register_properties (object, + NM_DBUS_INTERFACE_DEVICE_OVS_PORT, + property_info); +} + +static void +get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + NMDeviceOvsPort *device = NM_DEVICE_OVS_PORT (object); + + switch (prop_id) { + case PROP_SLAVES: + g_value_take_boxed (value, _nm_utils_copy_object_array (nm_device_ovs_port_get_slaves (device))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void nm_device_ovs_port_init (NMDeviceOvsPort *device) { } static void +dispose (GObject *object) +{ + NMDeviceOvsPort *device = NM_DEVICE_OVS_PORT (object); + + g_clear_pointer (&device->slaves, g_ptr_array_unref); + + G_OBJECT_CLASS (nm_device_ovs_port_parent_class)->dispose (object); +} + +static void nm_device_ovs_port_class_init (NMDeviceOvsPortClass *ovs_port_class) { + GObjectClass *object_class = G_OBJECT_CLASS (ovs_port_class); + NMObjectClass *nm_object_class = NM_OBJECT_CLASS (ovs_port_class); NMDeviceClass *device_class = NM_DEVICE_CLASS (ovs_port_class); + object_class->get_property = get_property; + object_class->dispose = dispose; + + nm_object_class->init_dbus = init_dbus; + device_class->get_type_description = get_type_description; device_class->connection_compatible = connection_compatible; device_class->get_setting_type = get_setting_type; diff --git a/libnm/nm-device-ovs-port.h b/libnm/nm-device-ovs-port.h index af661e7b82..56a84cb90e 100644 --- a/libnm/nm-device-ovs-port.h +++ b/libnm/nm-device-ovs-port.h @@ -14,7 +14,7 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * Copyright 2017 Red Hat, Inc. + * Copyright 2017,2018 Red Hat, Inc. */ #ifndef __NM_DEVICE_OVS_PORT_H__ @@ -35,11 +35,16 @@ G_BEGIN_DECLS #define NM_IS_DEVICE_OVS_PORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_OVS_PORT)) #define NM_DEVICE_OVS_PORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_OVS_PORT, NMDeviceOvsPortClass)) +#define NM_DEVICE_OVS_PORT_SLAVES "slaves" + typedef struct _NMDeviceOvsPortClass NMDeviceOvsPortClass; NM_AVAILABLE_IN_1_10 GType nm_device_ovs_port_get_type (void); +NM_AVAILABLE_IN_1_12_2 +const GPtrArray *nm_device_ovs_port_get_slaves (NMDeviceOvsPort *device); + G_END_DECLS #endif /* __NM_DEVICE_OVS_PORT_H__ */ |