summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-10-20 13:33:54 +0200
committerThomas Haller <thaller@redhat.com>2020-10-20 13:45:33 +0200
commitc7e55b232a67bcafb82587680fc517f5ef8fe480 (patch)
treeab4a514445c611dc6ff0d88b46091d207df9d1ad
parent676fe327d4c1fe0d11dae41b39e232ea64f4e1ea (diff)
downloadNetworkManager-c7e55b232a67bcafb82587680fc517f5ef8fe480.tar.gz
libnm: canonicalize local/remote IP address in NMSettingVxlan
-rw-r--r--libnm-core/nm-setting-vxlan.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/libnm-core/nm-setting-vxlan.c b/libnm-core/nm-setting-vxlan.c
index 3beb5463c6..34d2cd476f 100644
--- a/libnm-core/nm-setting-vxlan.c
+++ b/libnm-core/nm-setting-vxlan.c
@@ -379,6 +379,19 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
/*****************************************************************************/
static void
+_addrstr_set(char **dst, const char *src)
+{
+ gs_free char *old = NULL;
+
+ old = *dst;
+ if (!src)
+ *dst = NULL;
+ else if (!nm_utils_parse_inaddr(AF_UNSPEC, src, dst))
+ *dst = g_strdup(src);
+}
+/*****************************************************************************/
+
+static void
get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
NMSettingVxlan * setting = NM_SETTING_VXLAN(object);
@@ -454,12 +467,10 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
priv->id = g_value_get_uint(value);
break;
case PROP_LOCAL:
- g_free(priv->local);
- priv->local = g_value_dup_string(value);
+ _addrstr_set(&priv->local, g_value_get_string(value));
break;
case PROP_REMOTE:
- g_free(priv->remote);
- priv->remote = g_value_dup_string(value);
+ _addrstr_set(&priv->remote, g_value_get_string(value));
break;
case PROP_SOURCE_PORT_MIN:
priv->source_port_min = g_value_get_uint(value);