From ce956a240b75b9068a4d9d8bf10037a7d7eee959 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Fri, 26 May 2017 18:12:12 +0200 Subject: [PATCH] clients: fix MTU setter function Don't reuse _set_fcn_gobject_int_impl() because it requires gobject_int subtype data in the property info, while MTU properties have mtu subtype data. --- clients/common/nm-meta-setting-desc.c | 28 ++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c index a48291dcba..1eef126dad 100644 --- a/clients/common/nm-meta-setting-desc.c +++ b/clients/common/nm-meta-setting-desc.c @@ -996,9 +996,35 @@ _set_fcn_gobject_int (ARGS_SET_FCN) static gboolean _set_fcn_gobject_mtu (ARGS_SET_FCN) { + nm_auto_unset_gvalue GValue gval = G_VALUE_INIT; + const GParamSpec *pspec; + gint64 v; + if (nm_streq0 (value, "auto")) value = "0"; - return _set_fcn_gobject_int_impl (property_info, setting, value, error); + + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), + property_info->property_name); + if (!pspec || pspec->value_type != G_TYPE_UINT) + g_return_val_if_reached (FALSE); + + v = _nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXUINT32, -1); + if (v < 0) { + g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT, + _("'%s' is out of range [0, %u]"), value, (unsigned) G_MAXUINT32); + return FALSE; + } + + g_value_init (&gval, pspec->value_type); + g_value_set_uint (&gval, v); + + if (!nm_g_object_set_property (G_OBJECT (setting), + property_info->property_name, + &gval, + error)) + g_return_val_if_reached (FALSE); + + return TRUE; } static gboolean