summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2020-05-25 16:07:11 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2020-06-04 13:48:48 +0200
commit07c3d0212061e3c63d7fe19b99c286db954818d6 (patch)
tree494165114569a42e727af26ccbe53f67938bec0f
parent11974faef4b28ad82990c46d4ef40373a1617973 (diff)
downloadNetworkManager-07c3d0212061e3c63d7fe19b99c286db954818d6.tar.gz
libnm-core: support variant attributes of type int32 and uint64
-rw-r--r--libnm-core/nm-utils.c18
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.c4
2 files changed, 22 insertions, 0 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index 88482c59d3..bcf7ebaf80 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -5654,6 +5654,24 @@ nm_utils_parse_variant_attributes (const char *string,
return NULL;
}
variant = g_variant_new_uint32 (num);
+ } else if (g_variant_type_equal ((*s)->type, G_VARIANT_TYPE_INT32)) {
+ gint64 num = _nm_utils_ascii_str_to_int64 (value, 10, G_MININT32, G_MAXINT32, G_MAXINT64);
+
+ if (num == G_MAXINT64) {
+ g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED,
+ _("invalid int32 value '%s' for attribute '%s'"), value, (*s)->name);
+ return NULL;
+ }
+ variant = g_variant_new_int32 (num);
+ } else if (g_variant_type_equal ((*s)->type, G_VARIANT_TYPE_UINT64)) {
+ guint64 num = _nm_utils_ascii_str_to_uint64 (value, 10, 0, G_MAXUINT64, G_MAXUINT64);
+
+ if (num == G_MAXUINT64 && errno != 0) {
+ g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED,
+ _("invalid uint64 value '%s' for attribute '%s'"), value, (*s)->name);
+ return NULL;
+ }
+ variant = g_variant_new_uint64 (num);
} else if (g_variant_type_equal ((*s)->type, G_VARIANT_TYPE_BYTE)) {
gint64 num = _nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXUINT8, -1);
diff --git a/shared/nm-glib-aux/nm-shared-utils.c b/shared/nm-glib-aux/nm-shared-utils.c
index 66147e60f1..7f7636c7b3 100644
--- a/shared/nm-glib-aux/nm-shared-utils.c
+++ b/shared/nm-glib-aux/nm-shared-utils.c
@@ -4913,6 +4913,10 @@ _nm_utils_format_variant_attributes_full (GString *str,
if (g_variant_is_of_type (variant, G_VARIANT_TYPE_UINT32))
value = nm_sprintf_buf (buf, "%u", g_variant_get_uint32 (variant));
+ else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_INT32))
+ value = nm_sprintf_buf (buf, "%d", (int) g_variant_get_int32 (variant));
+ else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_UINT64))
+ value = nm_sprintf_buf (buf, "%"G_GUINT64_FORMAT, g_variant_get_uint64 (variant));
else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_BYTE))
value = nm_sprintf_buf (buf, "%hhu", g_variant_get_byte (variant));
else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_BOOLEAN))