diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2020-05-25 16:07:11 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2020-06-08 15:31:41 +0200 |
commit | f695dd8de35aecc647f9c687c5638ac75d29a889 (patch) | |
tree | 67b89628259dd13420796c414581caf096210356 | |
parent | 0ca1c7d1828ffa125a78ef78388667e675647085 (diff) | |
download | NetworkManager-f695dd8de35aecc647f9c687c5638ac75d29a889.tar.gz |
libnm-core: support variant attributes of type int32 and uint64
-rw-r--r-- | libnm-core/nm-utils.c | 18 | ||||
-rw-r--r-- | shared/nm-glib-aux/nm-shared-utils.c | 4 |
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)) |