diff options
author | Thomas Haller <thaller@redhat.com> | 2020-10-20 13:33:54 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-10-20 13:45:33 +0200 |
commit | c7e55b232a67bcafb82587680fc517f5ef8fe480 (patch) | |
tree | ab4a514445c611dc6ff0d88b46091d207df9d1ad | |
parent | 676fe327d4c1fe0d11dae41b39e232ea64f4e1ea (diff) | |
download | NetworkManager-c7e55b232a67bcafb82587680fc517f5ef8fe480.tar.gz |
libnm: canonicalize local/remote IP address in NMSettingVxlan
-rw-r--r-- | libnm-core/nm-setting-vxlan.c | 19 |
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); |