mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 18:50:07 +01:00
* Added DBUS dict routines from NetworkManager/libnm-util that are
necessary for the new dict based VPN interface. (Until a better
way without this repetition can be found)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1926 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
e67a33eb4c
commit
d15e9d690e
2 changed files with 553 additions and 0 deletions
|
|
@ -24,6 +24,7 @@
|
|||
#include <errno.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <dbus/dbus.h>
|
||||
#include "nm-utils.h"
|
||||
|
||||
gchar *nm_dbus_escape_object_path (const gchar *utf8_string)
|
||||
|
|
@ -130,3 +131,476 @@ gchar *nm_dbus_unescape_object_path (const gchar *object_path)
|
|||
|
||||
return utf8_string;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Start a dict in a dbus message. Should be paired with a call to
|
||||
* {@link nmu_dbus_dict_close_write}.
|
||||
*
|
||||
* @param iter A valid dbus message iterator
|
||||
* @param iter_dict (out) A dict iterator to pass to further dict functions
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_open_write (DBusMessageIter *iter, DBusMessageIter *iter_dict)
|
||||
{
|
||||
if (!iter || !iter_dict)
|
||||
return FALSE;
|
||||
|
||||
return dbus_message_iter_open_container (iter,
|
||||
DBUS_TYPE_ARRAY,
|
||||
DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
|
||||
DBUS_TYPE_STRING_AS_STRING
|
||||
DBUS_TYPE_VARIANT_AS_STRING
|
||||
DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
|
||||
iter_dict);
|
||||
}
|
||||
|
||||
/**
|
||||
* End a dict element in a dbus message. Should be paired with
|
||||
* a call to {@link nmu_dbus_dict_open_write}.
|
||||
*
|
||||
* @param iter valid dbus message iterator, same as passed to
|
||||
* nmu_dbus_dict_open_write()
|
||||
* @param iter_dict a dbus dict iterator returned from {@link nmu_dbus_dict_open_write}
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_close_write (DBusMessageIter *iter, DBusMessageIter *iter_dict)
|
||||
{
|
||||
if (!iter || !iter_dict)
|
||||
return FALSE;
|
||||
|
||||
return dbus_message_iter_close_container (iter, iter_dict);
|
||||
}
|
||||
|
||||
|
||||
static const char *
|
||||
_nmu_get_type_as_string_from_type (const int type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DBUS_TYPE_BYTE:
|
||||
return DBUS_TYPE_BYTE_AS_STRING;
|
||||
case DBUS_TYPE_BOOLEAN:
|
||||
return DBUS_TYPE_BOOLEAN_AS_STRING;
|
||||
case DBUS_TYPE_INT16:
|
||||
return DBUS_TYPE_INT16_AS_STRING;
|
||||
case DBUS_TYPE_UINT16:
|
||||
return DBUS_TYPE_UINT16_AS_STRING;
|
||||
case DBUS_TYPE_INT32:
|
||||
return DBUS_TYPE_INT32_AS_STRING;
|
||||
case DBUS_TYPE_UINT32:
|
||||
return DBUS_TYPE_UINT32_AS_STRING;
|
||||
case DBUS_TYPE_INT64:
|
||||
return DBUS_TYPE_INT64_AS_STRING;
|
||||
case DBUS_TYPE_UINT64:
|
||||
return DBUS_TYPE_UINT64_AS_STRING;
|
||||
case DBUS_TYPE_DOUBLE:
|
||||
return DBUS_TYPE_DOUBLE_AS_STRING;
|
||||
case DBUS_TYPE_STRING:
|
||||
return DBUS_TYPE_STRING_AS_STRING;
|
||||
case DBUS_TYPE_OBJECT_PATH:
|
||||
return DBUS_TYPE_OBJECT_PATH_AS_STRING;
|
||||
case DBUS_TYPE_ARRAY:
|
||||
return DBUS_TYPE_ARRAY_AS_STRING;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static dbus_bool_t
|
||||
_nmu_dbus_add_dict_entry_start (DBusMessageIter *iter_dict,
|
||||
DBusMessageIter *iter_dict_entry,
|
||||
const char *key,
|
||||
const int value_type)
|
||||
{
|
||||
if (!dbus_message_iter_open_container (iter_dict,
|
||||
DBUS_TYPE_DICT_ENTRY,
|
||||
NULL,
|
||||
iter_dict_entry))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_append_basic (iter_dict_entry, DBUS_TYPE_STRING, &key))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static dbus_bool_t
|
||||
_nmu_dbus_add_dict_entry_end (DBusMessageIter *iter_dict,
|
||||
DBusMessageIter *iter_dict_entry,
|
||||
DBusMessageIter *iter_dict_val)
|
||||
{
|
||||
if (!dbus_message_iter_close_container (iter_dict_entry, iter_dict_val))
|
||||
return FALSE;
|
||||
if (!dbus_message_iter_close_container (iter_dict, iter_dict_entry))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static dbus_bool_t
|
||||
_nmu_dbus_add_dict_entry_basic (DBusMessageIter *iter_dict,
|
||||
const char *key,
|
||||
const int value_type,
|
||||
const void *value)
|
||||
{
|
||||
DBusMessageIter iter_dict_entry, iter_dict_val;
|
||||
const char * type_as_string = NULL;
|
||||
|
||||
type_as_string = _nmu_get_type_as_string_from_type (value_type);
|
||||
if (!type_as_string)
|
||||
return FALSE;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_start (iter_dict, &iter_dict_entry,
|
||||
key, value_type))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_open_container (&iter_dict_entry,
|
||||
DBUS_TYPE_VARIANT,
|
||||
type_as_string,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_append_basic (&iter_dict_val, value_type, value))
|
||||
return FALSE;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_end (iter_dict, &iter_dict_entry,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static dbus_bool_t
|
||||
_nmu_dbus_add_dict_entry_byte_array (DBusMessageIter *iter_dict,
|
||||
const char *key,
|
||||
const char *value,
|
||||
const dbus_uint32_t value_len)
|
||||
{
|
||||
DBusMessageIter iter_dict_entry, iter_dict_val, iter_array;
|
||||
dbus_uint32_t i;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_start (iter_dict, &iter_dict_entry,
|
||||
key, DBUS_TYPE_ARRAY))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_open_container (&iter_dict_entry,
|
||||
DBUS_TYPE_VARIANT,
|
||||
DBUS_TYPE_ARRAY_AS_STRING
|
||||
DBUS_TYPE_BYTE_AS_STRING,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_open_container (&iter_dict_val, DBUS_TYPE_ARRAY,
|
||||
DBUS_TYPE_BYTE_AS_STRING, &iter_array))
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < value_len; i++)
|
||||
{
|
||||
if (!dbus_message_iter_append_basic (&iter_array, DBUS_TYPE_BYTE,
|
||||
&(value[i])))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!dbus_message_iter_close_container (&iter_dict_val, &iter_array))
|
||||
return FALSE;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_end (iter_dict, &iter_dict_entry,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static dbus_bool_t
|
||||
_nmu_dbus_add_dict_entry_string_array (DBusMessageIter *iter_dict,
|
||||
const char *key,
|
||||
const char **items,
|
||||
const dbus_uint32_t num_items)
|
||||
{
|
||||
DBusMessageIter iter_dict_entry, iter_dict_val, iter_array;
|
||||
dbus_uint32_t i;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_start (iter_dict, &iter_dict_entry,
|
||||
key, DBUS_TYPE_ARRAY))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_open_container (&iter_dict_entry,
|
||||
DBUS_TYPE_VARIANT,
|
||||
DBUS_TYPE_ARRAY_AS_STRING
|
||||
DBUS_TYPE_STRING_AS_STRING,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
if (!dbus_message_iter_open_container (&iter_dict_val, DBUS_TYPE_ARRAY,
|
||||
DBUS_TYPE_BYTE_AS_STRING, &iter_array))
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < num_items; i++)
|
||||
{
|
||||
if (!dbus_message_iter_append_basic (&iter_array, DBUS_TYPE_STRING,
|
||||
&(items[i])))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!dbus_message_iter_close_container (&iter_dict_val, &iter_array))
|
||||
return FALSE;
|
||||
|
||||
if (!_nmu_dbus_add_dict_entry_end (iter_dict, &iter_dict_entry,
|
||||
&iter_dict_val))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a string entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The string value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_string (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value)
|
||||
{
|
||||
if (!key || !value) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_STRING, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a byte entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The byte value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_byte (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_BYTE, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a boolean entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The boolean value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_bool (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_bool_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_BOOLEAN, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 16-bit signed integer entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 16-bit signed integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int16 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int16_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT16, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 16-bit unsigned integer entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 16-bit unsigned integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint16 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint16_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT16, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 32-bit signed integer to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 32-bit signed integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int32 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int32_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT32, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 32-bit unsigned integer entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 32-bit unsigned integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint32 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint32_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT32, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 64-bit integer entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 64-bit integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int64 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int64_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_INT64, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a 64-bit unsigned integer entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The 64-bit unsigned integer value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint64 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint64_t value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_UINT64, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a double-precision floating point entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The double-precision floating point value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_double (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const double value)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_DOUBLE, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a DBus object path entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The DBus object path value
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_object_path (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value)
|
||||
{
|
||||
if (!key || !value) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_basic (iter_dict, key, DBUS_TYPE_OBJECT_PATH, &value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a byte array entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param value The byte array
|
||||
* @param value_len The length of the byte array, in bytes
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_byte_array (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value,
|
||||
const dbus_uint32_t value_len)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
if (!value && (value_len != 0)) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_byte_array (iter_dict, key, value, value_len);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a string array entry to the dict.
|
||||
*
|
||||
* @param iter_dict A valid DBusMessageIter returned from {@link nmu_dbus_dict_open_write}
|
||||
* @param key The key of the dict item
|
||||
* @param items The array of strings
|
||||
* @param num_items The number of strings in the array
|
||||
* @return TRUE on success, FALSE on failure
|
||||
*
|
||||
*/
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_string_array (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char ** items,
|
||||
const dbus_uint32_t num_items)
|
||||
{
|
||||
if (!key) return FALSE;
|
||||
if (!items && (num_items != 0)) return FALSE;
|
||||
return _nmu_dbus_add_dict_entry_string_array (iter_dict, key, items, num_items);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -128,4 +128,83 @@ G_STMT_START \
|
|||
gchar *nm_dbus_escape_object_path (const gchar *utf8_string);
|
||||
gchar *nm_dbus_unescape_object_path (const gchar *object_path);
|
||||
|
||||
/*
|
||||
* Adding a dict to a DBusMessage
|
||||
*/
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_open_write (DBusMessageIter *iter,
|
||||
DBusMessageIter *iter_dict);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_close_write (DBusMessageIter *iter,
|
||||
DBusMessageIter *iter_dict);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_string (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_byte (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_bool (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_bool_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int16 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int16_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint16 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint16_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int32 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int32_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint32 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint32_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_int64 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_int64_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_uint64 (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const dbus_uint64_t value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_double (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const double value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_object_path (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_byte_array (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char * value,
|
||||
const dbus_uint32_t value_len);
|
||||
|
||||
dbus_bool_t
|
||||
nmu_dbus_dict_append_string_array (DBusMessageIter *iter_dict,
|
||||
const char * key,
|
||||
const char ** items,
|
||||
const dbus_uint32_t num_items);
|
||||
|
||||
#endif /* NM_UTILS_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue