diff options
Diffstat (limited to 'libnm-core/nm-utils-private.h')
| -rw-r--r-- | libnm-core/nm-utils-private.h | 142 |
1 files changed, 22 insertions, 120 deletions
diff --git a/libnm-core/nm-utils-private.h b/libnm-core/nm-utils-private.h index a1a1369a..22943edd 100644 --- a/libnm-core/nm-utils-private.h +++ b/libnm-core/nm-utils-private.h @@ -1,4 +1,3 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ /* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -38,6 +37,13 @@ struct _NMVariantAttributeSpec { char str_type; }; +#define NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(_name, _type, ...) \ + (&((const NMVariantAttributeSpec) { \ + .name = _name, \ + .type = _type, \ + __VA_ARGS__ \ + })) + gboolean _nm_utils_string_slist_validate (GSList *list, const char **valid_values); @@ -55,8 +61,12 @@ gboolean _nm_utils_wps_method_validate (NMSettingWirelessSecurityWpsMethod wps_m /* D-Bus transform funcs */ -GVariant *_nm_utils_hwaddr_cloned_get (NMSetting *setting, - const char *property); +GVariant *_nm_utils_hwaddr_cloned_get (const NMSettInfoSetting *sett_info, + guint property_idx, + NMConnection *connection, + NMSetting *setting, + NMConnectionSerializationFlags flags, + const NMConnectionSerializationOptions *options); gboolean _nm_utils_hwaddr_cloned_set (NMSetting *setting, GVariant *connection_dict, const char *property, @@ -72,7 +82,8 @@ GVariant * _nm_utils_hwaddr_cloned_data_synth (const NMSettInfoSetting *sett_in guint property_idx, NMConnection *connection, NMSetting *setting, - NMConnectionSerializationFlags flags); + NMConnectionSerializationFlags flags, + const NMConnectionSerializationOptions *options); gboolean _nm_utils_hwaddr_cloned_data_set (NMSetting *setting, GVariant *connection_dict, const char *property, @@ -93,9 +104,6 @@ void _nm_utils_bytes_from_dbus (GVariant *dbus_value, char * _nm_utils_hwaddr_canonical_or_invalid (const char *mac, gssize length); -GPtrArray * _nm_utils_team_link_watchers_from_variant (GVariant *value); -GVariant * _nm_utils_team_link_watchers_to_variant (GPtrArray *link_watchers); - void _nm_utils_format_variant_attributes_full (GString *str, const NMUtilsNamedValue *values, guint num_values, @@ -103,7 +111,13 @@ void _nm_utils_format_variant_attributes_full (GString *str, char key_value_separator); gboolean _nm_sriov_vf_parse_vlans (NMSriovVF *vf, const char *str, GError **error); -GVariant * _nm_utils_bridge_vlans_to_dbus (NMSetting *setting, const char *property); +GVariant * _nm_utils_bridge_vlans_to_dbus (const NMSettInfoSetting *sett_info, + guint property_idx, + NMConnection *connection, + NMSetting *setting, + NMConnectionSerializationFlags flags, + const NMConnectionSerializationOptions *options); + gboolean _nm_utils_bridge_vlans_from_dbus (NMSetting *setting, GVariant *connection_dict, const char *property, @@ -116,116 +130,4 @@ gboolean _nm_utils_bridge_vlan_verify_list (GPtrArray *vlans, const char *setting, const char *property); -/* JSON to GValue conversion macros */ - -static inline void -_nm_auto_unset_and_free_gvalue (GValue **ptr) -{ - if (*ptr) { - g_value_unset (*ptr); - g_free (*ptr); - } -} -#define nm_auto_unset_and_free_gvalue nm_auto(_nm_auto_unset_and_free_gvalue) - -typedef struct { - const char *key1; - const char *key2; - const char *key3; - union { - int default_int; - gboolean default_bool; - const char *default_str; - }; -} _NMUtilsTeamPropertyKeys; - -static inline int -_nm_utils_json_extract_int (char *conf, - _NMUtilsTeamPropertyKeys key, - gboolean is_port) -{ - nm_auto_unset_and_free_gvalue GValue *t_value = NULL; - - t_value = _nm_utils_team_config_get (conf, key.key1, key.key2, key.key3, is_port); - if ( !t_value - || !G_VALUE_HOLDS_INT (t_value)) - return key.default_int; - return g_value_get_int (t_value); -} - -static inline gboolean -_nm_utils_json_extract_boolean (char *conf, - _NMUtilsTeamPropertyKeys key, - gboolean is_port) -{ - nm_auto_unset_and_free_gvalue GValue *t_value = NULL; - - t_value = _nm_utils_team_config_get (conf, key.key1, key.key2, key.key3, is_port); - if ( !t_value - || !G_VALUE_HOLDS_BOOLEAN (t_value)) - return key.default_bool; - return g_value_get_boolean (t_value); -} - -static inline char * -_nm_utils_json_extract_string (char *conf, - _NMUtilsTeamPropertyKeys key, - gboolean is_port) -{ - nm_auto_unset_and_free_gvalue GValue *t_value = NULL; - - t_value = _nm_utils_team_config_get (conf, key.key1, key.key2, key.key3, is_port); - if ( !t_value - || !G_VALUE_HOLDS_STRING (t_value)) - return g_strdup (key.default_str); - return g_value_dup_string (t_value); -} - -static inline char ** -_nm_utils_json_extract_strv (char *conf, - _NMUtilsTeamPropertyKeys key, - gboolean is_port) -{ - nm_auto_unset_and_free_gvalue GValue *t_value = NULL; - - t_value = _nm_utils_team_config_get (conf, key.key1, key.key2, key.key3, is_port); - if ( !t_value - || !G_TYPE_CHECK_VALUE_TYPE (t_value, G_TYPE_STRV)) - return NULL; - return g_strdupv (g_value_get_boxed (t_value)) - ?: g_new0 (char *, 1); -} - -static inline GPtrArray * -_nm_utils_json_extract_ptr_array (char *conf, - _NMUtilsTeamPropertyKeys key, - gboolean is_port) -{ - nm_auto_unset_and_free_gvalue GValue *t_value = NULL; - GPtrArray *data, *ret; - guint i; - - ret = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_team_link_watcher_unref); - - t_value = _nm_utils_team_config_get (conf, key.key1, key.key2, key.key3, is_port); - if ( !t_value - || !G_TYPE_CHECK_VALUE_TYPE (t_value, G_TYPE_PTR_ARRAY)) - return ret; - - data = g_value_get_boxed (t_value); - if (!data) - return ret; - for (i = 0; i < data->len; i++) - g_ptr_array_add (ret, nm_team_link_watcher_dup (data->pdata[i])); - return ret; -} - -static inline void -_nm_utils_json_append_gvalue (char **conf, - _NMUtilsTeamPropertyKeys key, - const GValue *val) -{ - _nm_utils_team_config_set (conf, key.key1, key.key2, key.key3, val); -} - #endif |