summary refs log tree commit diff
path: root/clients/common/nm-meta-setting-desc.c
diff options
context:
space:
mode:
Diffstat (limited to 'clients/common/nm-meta-setting-desc.c')
-rw-r--r--clients/common/nm-meta-setting-desc.c14589
1 files changed, 7328 insertions, 7261 deletions
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c
index 2ac91b41..cdb3084a 100644
--- a/clients/common/nm-meta-setting-desc.c
+++ b/clients/common/nm-meta-setting-desc.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * Copyright (C) 2010 - 2018 Red Hat, Inc.
  */
@@ -22,406 +22,403 @@
 
 /*****************************************************************************/
 
-static char *secret_flags_to_string (guint32 flags, NMMetaAccessorGetType get_type);
+static char *secret_flags_to_string(guint32 flags, NMMetaAccessorGetType get_type);
 
-#define ALL_SECRET_FLAGS \
-	(NM_SETTING_SECRET_FLAG_NONE | \
-	 NM_SETTING_SECRET_FLAG_AGENT_OWNED | \
-	 NM_SETTING_SECRET_FLAG_NOT_SAVED | \
-	 NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
+#define ALL_SECRET_FLAGS                                              \
+    (NM_SETTING_SECRET_FLAG_NONE | NM_SETTING_SECRET_FLAG_AGENT_OWNED \
+     | NM_SETTING_SECRET_FLAG_NOT_SAVED | NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
 
 /*****************************************************************************/
 
 static GType
-_gobject_property_get_gtype (GObject *gobject, const char *property_name)
+_gobject_property_get_gtype(GObject *gobject, const char *property_name)
 {
-	GParamSpec *param_spec;
+    GParamSpec *param_spec;
 
-	param_spec = g_object_class_find_property (G_OBJECT_GET_CLASS (gobject), property_name);
-	if (param_spec)
-		return param_spec->value_type;
-	g_return_val_if_reached (G_TYPE_INVALID);
+    param_spec = g_object_class_find_property(G_OBJECT_GET_CLASS(gobject), property_name);
+    if (param_spec)
+        return param_spec->value_type;
+    g_return_val_if_reached(G_TYPE_INVALID);
 }
 
 static GType
-_gtype_property_get_gtype (GType gtype, const char *property_name)
+_gtype_property_get_gtype(GType gtype, const char *property_name)
 {
-	/* given @gtype, a type for a GObject, lookup the property @property_name
-	 * and return its value_type. */
-	if (G_TYPE_IS_CLASSED (gtype)) {
-		GParamSpec *param_spec;
-		nm_auto_unref_gtypeclass GTypeClass *gtypeclass = g_type_class_ref (gtype);
+    /* given @gtype, a type for a GObject, lookup the property @property_name
+     * and return its value_type. */
+    if (G_TYPE_IS_CLASSED(gtype)) {
+        GParamSpec *             param_spec;
+        nm_auto_unref_gtypeclass GTypeClass *gtypeclass = g_type_class_ref(gtype);
 
-		if (G_IS_OBJECT_CLASS (gtypeclass)) {
-			param_spec = g_object_class_find_property (G_OBJECT_CLASS (gtypeclass), property_name);
-			if (param_spec)
-				return param_spec->value_type;
-		}
-	}
-	g_return_val_if_reached (G_TYPE_INVALID);
+        if (G_IS_OBJECT_CLASS(gtypeclass)) {
+            param_spec = g_object_class_find_property(G_OBJECT_CLASS(gtypeclass), property_name);
+            if (param_spec)
+                return param_spec->value_type;
+        }
+    }
+    g_return_val_if_reached(G_TYPE_INVALID);
 }
 
 /*****************************************************************************/
 
 static char *
-bytes_to_string (GBytes *bytes)
+bytes_to_string(GBytes *bytes)
 {
-	const guint8 *data;
-	gsize len;
+    const guint8 *data;
+    gsize         len;
 
-	if (!bytes)
-		return NULL;
+    if (!bytes)
+        return NULL;
 
-	data = g_bytes_get_data (bytes, &len);
-	return nm_utils_bin2hexstr_full (data,
-	                                 len,
-	                                 '\0',
-	                                 TRUE,
-	                                 NULL);
+    data = g_bytes_get_data(bytes, &len);
+    return nm_utils_bin2hexstr_full(data, len, '\0', TRUE, NULL);
 }
 
 /*****************************************************************************/
 
 static int
-_int64_cmp_desc (gconstpointer a,
-                 gconstpointer b,
-                 gpointer user_data)
+_int64_cmp_desc(gconstpointer a, gconstpointer b, gpointer user_data)
 {
-	NM_CMP_DIRECT (*((const gint64 *) b), *((const gint64 *) a));
-	return 0;
+    NM_CMP_DIRECT(*((const gint64 *) b), *((const gint64 *) a));
+    return 0;
 }
 
 static gint64 *
-_value_str_as_index_list (const char *value, gsize *out_len)
-{
-	gs_free char *str_clone_free = NULL;
-	gboolean str_cloned = FALSE;
-	char *str;
-	gsize i, j;
-	gsize n_alloc;
-	gsize len;
-	gs_free gint64 *arr = NULL;
-
-	*out_len = 0;
-
-	if (!value)
-		return NULL;
-
-	str = (char *) value;
-	n_alloc = 0;
-	len = 0;
-	while (TRUE) {
-		gint64 i64;
-		const char *s;
-		gsize good;
-
-		good = strcspn (str, ","NM_ASCII_SPACES);
-		if (good == 0) {
-			if (str[0] == '\0')
-				break;
-			str++;
-			continue;
-		}
-		if (str[good] == '\0') {
-			s = str;
-			str += good;
-		} else {
-			if (!str_cloned) {
-				str_cloned = TRUE;
-				str = nm_strndup_a (200, str, strlen (str), &str_clone_free);
-			}
-			s = str;
-			str[good] = '\0';
-			str += good + 1;
-		}
-
-		i64 = _nm_utils_ascii_str_to_int64 (s, 10, 0, G_MAXINT64, -1);
-		if (i64 == -1)
-			return NULL;
-
-		if (len >= n_alloc) {
-			if (n_alloc > 0) {
-				n_alloc = n_alloc * 2;
-				arr = g_realloc (arr, n_alloc * sizeof (gint64));
-			} else {
-				n_alloc = 4;
-				arr = g_new (gint64, n_alloc);
-			}
-		}
-		arr[len++] = i64;
-	}
-
-	if (len > 1) {
-		/* sort the list of indexes descendingly, and drop duplicates. */
-		g_qsort_with_data (arr,
-		                   len,
-		                   sizeof (gint64),
-		                   _int64_cmp_desc,
-		                   NULL);
-		j = 1;
-		for (i = 1; i < len; i++) {
-			nm_assert (arr[i - 1] >= arr[i]);
-			if (arr[i - 1] > arr[i])
-				arr[j++] = arr[i];
-		}
-		len = j;
-	}
-
-	*out_len = len;
-	return g_steal_pointer (&arr);
+_value_str_as_index_list(const char *value, gsize *out_len)
+{
+    gs_free char *str_clone_free = NULL;
+    gboolean      str_cloned     = FALSE;
+    char *        str;
+    gsize         i, j;
+    gsize         n_alloc;
+    gsize         len;
+    gs_free gint64 *arr = NULL;
+
+    *out_len = 0;
+
+    if (!value)
+        return NULL;
+
+    str     = (char *) value;
+    n_alloc = 0;
+    len     = 0;
+    while (TRUE) {
+        gint64      i64;
+        const char *s;
+        gsize       good;
+
+        good = strcspn(str, "," NM_ASCII_SPACES);
+        if (good == 0) {
+            if (str[0] == '\0')
+                break;
+            str++;
+            continue;
+        }
+        if (str[good] == '\0') {
+            s = str;
+            str += good;
+        } else {
+            if (!str_cloned) {
+                str_cloned = TRUE;
+                str        = nm_strndup_a(200, str, strlen(str), &str_clone_free);
+            }
+            s         = str;
+            str[good] = '\0';
+            str += good + 1;
+        }
+
+        i64 = _nm_utils_ascii_str_to_int64(s, 10, 0, G_MAXINT64, -1);
+        if (i64 == -1)
+            return NULL;
+
+        if (len >= n_alloc) {
+            if (n_alloc > 0) {
+                n_alloc = n_alloc * 2;
+                arr     = g_realloc(arr, n_alloc * sizeof(gint64));
+            } else {
+                n_alloc = 4;
+                arr     = g_new(gint64, n_alloc);
+            }
+        }
+        arr[len++] = i64;
+    }
+
+    if (len > 1) {
+        /* sort the list of indexes descendingly, and drop duplicates. */
+        g_qsort_with_data(arr, len, sizeof(gint64), _int64_cmp_desc, NULL);
+        j = 1;
+        for (i = 1; i < len; i++) {
+            nm_assert(arr[i - 1] >= arr[i]);
+            if (arr[i - 1] > arr[i])
+                arr[j++] = arr[i];
+        }
+        len = j;
+    }
+
+    *out_len = len;
+    return g_steal_pointer(&arr);
 }
 
 #define ESCAPED_TOKENS_WITH_SPACES_DELIMTER  ' '
-#define ESCAPED_TOKENS_WITH_SPACES_DELIMTERS NM_ASCII_SPACES","
+#define ESCAPED_TOKENS_WITH_SPACES_DELIMTERS NM_ASCII_SPACES ","
 
-#define ESCAPED_TOKENS_DELIMITER        ','
-#define ESCAPED_TOKENS_DELIMITERS       ","
+#define ESCAPED_TOKENS_DELIMITER  ','
+#define ESCAPED_TOKENS_DELIMITERS ","
 
 typedef enum {
-	VALUE_STRSPLIT_MODE_OBJLIST,
-	VALUE_STRSPLIT_MODE_MULTILIST,
-	VALUE_STRSPLIT_MODE_ESCAPED_TOKENS,
-	VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES,
+    VALUE_STRSPLIT_MODE_OBJLIST,
+    VALUE_STRSPLIT_MODE_MULTILIST,
+    VALUE_STRSPLIT_MODE_ESCAPED_TOKENS,
+    VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES,
 } ValueStrsplitMode;
 
 static const char **
-_value_strsplit (const char *value,
-                 ValueStrsplitMode split_mode,
-                 gsize *out_len)
-{
-	gs_free const char **strv = NULL;
-
-	/* FIXME: some modes should support backslash escaping.
-	 * In particular, to distinguish from _value_str_as_index_list(), which
-	 * does not accept '\\'. */
-
-	/* note that all modes remove empty tokens (",", "a,,b", ",,"). */
-	switch (split_mode) {
-	case VALUE_STRSPLIT_MODE_OBJLIST:
-		strv = nm_utils_strsplit_set_full (value,
-		                                   ESCAPED_TOKENS_DELIMITERS,
-		                                   NM_UTILS_STRSPLIT_SET_FLAGS_STRSTRIP);
-		break;
-	case VALUE_STRSPLIT_MODE_MULTILIST:
-		strv = nm_utils_strsplit_set_full (value,
-		                                   ESCAPED_TOKENS_WITH_SPACES_DELIMTERS,
-		                                   NM_UTILS_STRSPLIT_SET_FLAGS_STRSTRIP);
-		break;
-	case VALUE_STRSPLIT_MODE_ESCAPED_TOKENS:
-		strv = nm_utils_escaped_tokens_split (value, ESCAPED_TOKENS_DELIMITERS);
-		break;
-	case VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES:
-		strv = nm_utils_escaped_tokens_split (value, ESCAPED_TOKENS_WITH_SPACES_DELIMTERS);
-		break;
-	}
-
-	NM_SET_OUT (out_len, NM_PTRARRAY_LEN (strv));
-	return g_steal_pointer (&strv);
+_value_strsplit(const char *value, ValueStrsplitMode split_mode, gsize *out_len)
+{
+    gs_free const char **strv = NULL;
+
+    /* FIXME: some modes should support backslash escaping.
+     * In particular, to distinguish from _value_str_as_index_list(), which
+     * does not accept '\\'. */
+
+    /* note that all modes remove empty tokens (",", "a,,b", ",,"). */
+    switch (split_mode) {
+    case VALUE_STRSPLIT_MODE_OBJLIST:
+        strv = nm_utils_strsplit_set_full(value,
+                                          ESCAPED_TOKENS_DELIMITERS,
+                                          NM_UTILS_STRSPLIT_SET_FLAGS_STRSTRIP);
+        break;
+    case VALUE_STRSPLIT_MODE_MULTILIST:
+        strv = nm_utils_strsplit_set_full(value,
+                                          ESCAPED_TOKENS_WITH_SPACES_DELIMTERS,
+                                          NM_UTILS_STRSPLIT_SET_FLAGS_STRSTRIP);
+        break;
+    case VALUE_STRSPLIT_MODE_ESCAPED_TOKENS:
+        strv = nm_utils_escaped_tokens_split(value, ESCAPED_TOKENS_DELIMITERS);
+        break;
+    case VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES:
+        strv = nm_utils_escaped_tokens_split(value, ESCAPED_TOKENS_WITH_SPACES_DELIMTERS);
+        break;
+    }
+
+    NM_SET_OUT(out_len, NM_PTRARRAY_LEN(strv));
+    return g_steal_pointer(&strv);
 }
 
 static gboolean
-_value_strsplit_assert_unsplitable (const char *str)
+_value_strsplit_assert_unsplitable(const char *str)
 {
 #if NM_MORE_ASSERTS > 5
-	gs_free const char **strv_test = NULL;
-	gsize j, l;
-
-	/* Assert that we cannot split the token and that it
-	 * has no unescaped delimiters. */
-
-	strv_test = _value_strsplit (str,
-	                             VALUE_STRSPLIT_MODE_ESCAPED_TOKENS,
-	                             NULL);
-	nm_assert (NM_PTRARRAY_LEN (strv_test) == 1);
-
-	for (j = 0; str[j] != '\0'; ) {
-		if (str[j] == '\\') {
-			j++;
-			nm_assert (str[j] != '\0');
-		} else
-			nm_assert (!NM_IN_SET (str[j], '\0', ','));
-		j++;
-	}
-	l = j;
-	nm_assert (   !g_ascii_isspace (str[l - 1])
-	           || (   l >= 2
-	               && str[l - 2] == '\\'));
+    gs_free const char **strv_test = NULL;
+    gsize                j, l;
+
+    /* Assert that we cannot split the token and that it
+     * has no unescaped delimiters. */
+
+    strv_test = _value_strsplit(str, VALUE_STRSPLIT_MODE_ESCAPED_TOKENS, NULL);
+    nm_assert(NM_PTRARRAY_LEN(strv_test) == 1);
+
+    for (j = 0; str[j] != '\0';) {
+        if (str[j] == '\\') {
+            j++;
+            nm_assert(str[j] != '\0');
+        } else
+            nm_assert(!NM_IN_SET(str[j], '\0', ','));
+        j++;
+    }
+    l = j;
+    nm_assert(!g_ascii_isspace(str[l - 1]) || (l >= 2 && str[l - 2] == '\\'));
 #endif
 
-	return TRUE;
+    return TRUE;
 }
 
 static NMIPAddress *
-_parse_ip_address (int family, const char *address, GError **error)
-{
-	gs_free char *ip_str = NULL;
-	const int MAX_PREFIX = (family == AF_INET) ? 32 : 128;
-	NMIPAddress *addr;
-	char *plen;
-	int prefix;
-	GError *local = NULL;
-
-	g_return_val_if_fail (address, NULL);
-	g_return_val_if_fail (!error || !*error, NULL);
-
-	ip_str = g_strstrip (g_strdup (address));
-
-	prefix = MAX_PREFIX;
-
-	plen = strchr (ip_str, '/');
-	if (plen) {
-		*plen++ = '\0';
-		if ((prefix = _nm_utils_ascii_str_to_int64 (plen, 10, 1, MAX_PREFIX, -1)) == -1) {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("invalid prefix '%s'; <1-%d> allowed"), plen, MAX_PREFIX);
-			return NULL;
-		}
-	}
-
-	addr = nm_ip_address_new (family, ip_str, prefix, &local);
-	if (!addr) {
-		g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		             _("invalid IP address: %s"), local->message);
-		g_clear_error (&local);
-	}
-	return addr;
+_parse_ip_address(int family, const char *address, GError **error)
+{
+    gs_free char *ip_str     = NULL;
+    const int     MAX_PREFIX = (family == AF_INET) ? 32 : 128;
+    NMIPAddress * addr;
+    char *        plen;
+    int           prefix;
+    GError *      local = NULL;
+
+    g_return_val_if_fail(address, NULL);
+    g_return_val_if_fail(!error || !*error, NULL);
+
+    ip_str = g_strstrip(g_strdup(address));
+
+    prefix = MAX_PREFIX;
+
+    plen = strchr(ip_str, '/');
+    if (plen) {
+        *plen++ = '\0';
+        if ((prefix = _nm_utils_ascii_str_to_int64(plen, 10, 1, MAX_PREFIX, -1)) == -1) {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("invalid prefix '%s'; <1-%d> allowed"),
+                        plen,
+                        MAX_PREFIX);
+            return NULL;
+        }
+    }
+
+    addr = nm_ip_address_new(family, ip_str, prefix, &local);
+    if (!addr) {
+        g_set_error(error,
+                    NM_UTILS_ERROR,
+                    NM_UTILS_ERROR_INVALID_ARGUMENT,
+                    _("invalid IP address: %s"),
+                    local->message);
+        g_clear_error(&local);
+    }
+    return addr;
 }
 
 static NMIPRoute *
-_parse_ip_route (int family,
-                 const char *str,
-                 GError **error)
-{
-	const int MAX_PREFIX = (family == AF_INET) ? 32 : 128;
-	const char *next_hop = NULL;
-	int prefix;
-	NMIPRoute *route = NULL;
-	GError *local = NULL;
-	gint64 metric = -1;
-	guint i;
-	gs_free const char **routev = NULL;
-	gs_free char *str_clean_free = NULL;
-	const char *str_clean;
-	gs_free char *dest_clone = NULL;
-	const char *dest;
-	const char *plen;
-	gs_unref_hashtable GHashTable *attrs = NULL;
-#define ROUTE_SYNTAX _("The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [,ip[/prefix] ...]'")
-
-	nm_assert (NM_IN_SET (family, AF_INET, AF_INET6));
-	nm_assert (str);
-	nm_assert (!error || !*error);
-
-	str_clean = nm_strstrip_avoid_copy_a (300, str, &str_clean_free);
-	routev = nm_utils_strsplit_set (str_clean, " \t");
-	if (!routev) {
-		g_set_error (error, 1, 0,
-		             "'%s' is not valid. %s",
-		             str, ROUTE_SYNTAX);
-		return NULL;
-	}
-
-	dest = routev[0];
-	plen = strchr (dest, '/');  /* prefix delimiter */
-	if (plen) {
-		dest_clone = g_strdup (dest);
-		plen = &dest_clone[plen - dest];
-		dest = dest_clone;
-		*((char *) plen) = '\0';
-		plen++;
-	}
-	prefix = MAX_PREFIX;
-	if (plen) {
-		if ((prefix = _nm_utils_ascii_str_to_int64 (plen, 10, 0, MAX_PREFIX, -1)) == -1) {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("invalid prefix '%s'; <1-%d> allowed"),
-			             plen, MAX_PREFIX);
-			return NULL;
-		}
-	}
-
-	for (i = 1; routev[i]; i++) {
-		gint64 tmp64;
-
-		if (nm_utils_ipaddr_is_valid (family, routev[i])) {
-			if (metric != -1 || attrs) {
-				g_set_error (error, 1, 0, _("the next hop ('%s') must be first"), routev[i]);
-				return NULL;
-			}
-			next_hop = routev[i];
-		} else if ((tmp64 = _nm_utils_ascii_str_to_int64 (routev[i], 10, 0, G_MAXUINT32, -1)) != -1) {
-			if (attrs) {
-				g_set_error (error, 1, 0, _("the metric ('%s') must be before attributes"), routev[i]);
-				return NULL;
-			}
-			metric = tmp64;
-		} else if (strchr (routev[i], '=')) {
-			GHashTableIter iter;
-			char *iter_key;
-			GVariant *iter_value;
-			gs_unref_hashtable GHashTable *tmp_attrs = NULL;
-
-			tmp_attrs = nm_utils_parse_variant_attributes (routev[i], ' ', '=', FALSE,
-			                                               nm_ip_route_get_variant_attribute_spec(),
-			                                               error);
-			if (!tmp_attrs) {
-				g_prefix_error (error, "invalid option '%s': ", routev[i]);
-				return NULL;
-			}
-
-			if (!attrs) {
-				attrs = g_hash_table_new_full (nm_str_hash,
-				                               g_str_equal,
-				                               g_free,
-				                               (GDestroyNotify) g_variant_unref);
-			}
-
-			g_hash_table_iter_init (&iter, tmp_attrs);
-			while (g_hash_table_iter_next (&iter, (gpointer *) &iter_key, (gpointer *) &iter_value)) {
-
-				/* need to sink the reference, because nm_utils_parse_variant_attributes() returns
-				 * floating refs. */
-				g_variant_ref_sink (iter_value);
-
-				if (!nm_ip_route_attribute_validate (iter_key, iter_value, family, NULL, error)) {
-					g_prefix_error (error, "%s: ", iter_key);
-					return NULL;
-				}
-				g_hash_table_insert (attrs, iter_key, iter_value);
-				g_hash_table_iter_steal (&iter);
-			}
-		} else {
-			g_set_error (error, 1, 0, "%s", ROUTE_SYNTAX);
-			return NULL;
-		}
-	}
-
-	route = nm_ip_route_new (family, dest, prefix, next_hop, metric, &local);
-	if (!route) {
-		g_set_error (error, 1, 0,
-		             _("invalid route: %s. %s"), local->message, ROUTE_SYNTAX);
-		g_clear_error (&local);
-		return NULL;
-	}
-
-	if (attrs) {
-		GHashTableIter iter;
-		char *name;
-		GVariant *variant;
-
-		g_hash_table_iter_init (&iter, attrs);
-		while (g_hash_table_iter_next (&iter, (gpointer *) &name, (gpointer *) &variant))
-			nm_ip_route_set_attribute (route, name, variant);
-	}
-
-	return route;
+_parse_ip_route(int family, const char *str, GError **error)
+{
+    const int            MAX_PREFIX = (family == AF_INET) ? 32 : 128;
+    const char *         next_hop   = NULL;
+    int                  prefix;
+    NMIPRoute *          route  = NULL;
+    GError *             local  = NULL;
+    gint64               metric = -1;
+    guint                i;
+    gs_free const char **routev         = NULL;
+    gs_free char *       str_clean_free = NULL;
+    const char *         str_clean;
+    gs_free char *       dest_clone = NULL;
+    const char *         dest;
+    const char *         plen;
+    gs_unref_hashtable GHashTable *attrs = NULL;
+#define ROUTE_SYNTAX                                                                            \
+    _("The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [,ip[/prefix] " \
+      "...]'")
+
+    nm_assert(NM_IN_SET(family, AF_INET, AF_INET6));
+    nm_assert(str);
+    nm_assert(!error || !*error);
+
+    str_clean = nm_strstrip_avoid_copy_a(300, str, &str_clean_free);
+    routev    = nm_utils_strsplit_set(str_clean, " \t");
+    if (!routev) {
+        g_set_error(error, 1, 0, "'%s' is not valid. %s", str, ROUTE_SYNTAX);
+        return NULL;
+    }
+
+    dest = routev[0];
+    plen = strchr(dest, '/'); /* prefix delimiter */
+    if (plen) {
+        dest_clone       = g_strdup(dest);
+        plen             = &dest_clone[plen - dest];
+        dest             = dest_clone;
+        *((char *) plen) = '\0';
+        plen++;
+    }
+    prefix = MAX_PREFIX;
+    if (plen) {
+        if ((prefix = _nm_utils_ascii_str_to_int64(plen, 10, 0, MAX_PREFIX, -1)) == -1) {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("invalid prefix '%s'; <1-%d> allowed"),
+                        plen,
+                        MAX_PREFIX);
+            return NULL;
+        }
+    }
+
+    for (i = 1; routev[i]; i++) {
+        gint64 tmp64;
+
+        if (nm_utils_ipaddr_is_valid(family, routev[i])) {
+            if (metric != -1 || attrs) {
+                g_set_error(error, 1, 0, _("the next hop ('%s') must be first"), routev[i]);
+                return NULL;
+            }
+            next_hop = routev[i];
+        } else if ((tmp64 = _nm_utils_ascii_str_to_int64(routev[i], 10, 0, G_MAXUINT32, -1))
+                   != -1) {
+            if (attrs) {
+                g_set_error(error,
+                            1,
+                            0,
+                            _("the metric ('%s') must be before attributes"),
+                            routev[i]);
+                return NULL;
+            }
+            metric = tmp64;
+        } else if (strchr(routev[i], '=')) {
+            GHashTableIter     iter;
+            char *             iter_key;
+            GVariant *         iter_value;
+            gs_unref_hashtable GHashTable *tmp_attrs = NULL;
+
+            tmp_attrs = nm_utils_parse_variant_attributes(routev[i],
+                                                          ' ',
+                                                          '=',
+                                                          FALSE,
+                                                          nm_ip_route_get_variant_attribute_spec(),
+                                                          error);
+            if (!tmp_attrs) {
+                g_prefix_error(error, "invalid option '%s': ", routev[i]);
+                return NULL;
+            }
+
+            if (!attrs) {
+                attrs = g_hash_table_new_full(nm_str_hash,
+                                              g_str_equal,
+                                              g_free,
+                                              (GDestroyNotify) g_variant_unref);
+            }
+
+            g_hash_table_iter_init(&iter, tmp_attrs);
+            while (
+                g_hash_table_iter_next(&iter, (gpointer *) &iter_key, (gpointer *) &iter_value)) {
+                /* need to sink the reference, because nm_utils_parse_variant_attributes() returns
+                 * floating refs. */
+                g_variant_ref_sink(iter_value);
+
+                if (!nm_ip_route_attribute_validate(iter_key, iter_value, family, NULL, error)) {
+                    g_prefix_error(error, "%s: ", iter_key);
+                    return NULL;
+                }
+                g_hash_table_insert(attrs, iter_key, iter_value);
+                g_hash_table_iter_steal(&iter);
+            }
+        } else {
+            g_set_error(error, 1, 0, "%s", ROUTE_SYNTAX);
+            return NULL;
+        }
+    }
+
+    route = nm_ip_route_new(family, dest, prefix, next_hop, metric, &local);
+    if (!route) {
+        g_set_error(error, 1, 0, _("invalid route: %s. %s"), local->message, ROUTE_SYNTAX);
+        g_clear_error(&local);
+        return NULL;
+    }
+
+    if (attrs) {
+        GHashTableIter iter;
+        char *         name;
+        GVariant *     variant;
+
+        g_hash_table_iter_init(&iter, attrs);
+        while (g_hash_table_iter_next(&iter, (gpointer *) &name, (gpointer *) &variant))
+            nm_ip_route_set_attribute(route, name, variant);
+    }
+
+    return route;
 }
 
 /*****************************************************************************/
 
 /* Max priority values from libnm-core/nm-setting-vlan.c */
 #define MAX_SKB_PRIO   G_MAXUINT32
-#define MAX_8021P_PRIO 7  /* Max 802.1p priority */
+#define MAX_8021P_PRIO 7 /* Max 802.1p priority */
 
 /*
  * nmc_proxy_check_script:
@@ -435,68 +432,74 @@ _parse_ip_route (int family,
  * Returns: %TRUE if the script is valid, %FALSE if it is invalid
  */
 static gboolean
-nmc_proxy_check_script (const char *script, char **out_script, GError **error)
-{
-	enum {
-		_PAC_SCRIPT_TYPE_GUESS,
-		_PAC_SCRIPT_TYPE_FILE,
-		_PAC_SCRIPT_TYPE_JSON,
-	} desired_type = _PAC_SCRIPT_TYPE_GUESS;
-	const char *filename = NULL;
-	size_t c_len = 0;
-	gs_free char *script_clone = NULL;
-
-	*out_script = NULL;
-
-	if (!script || !script[0])
-		return TRUE;
-
-	if (g_str_has_prefix (script, "file://")) {
-		script += NM_STRLEN ("file://");
-		desired_type = _PAC_SCRIPT_TYPE_FILE;
-	} else if (g_str_has_prefix (script, "js://")) {
-		script += NM_STRLEN ("js://");
-		desired_type = _PAC_SCRIPT_TYPE_JSON;
-	}
-
-	if (NM_IN_SET (desired_type, _PAC_SCRIPT_TYPE_FILE, _PAC_SCRIPT_TYPE_GUESS)) {
-		gs_free char *contents = NULL;
-
-		if (!g_file_get_contents (script, &contents, &c_len, NULL)) {
-			if (desired_type == _PAC_SCRIPT_TYPE_FILE) {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("cannot read pac-script from file '%s'"),
-				             script);
-				return FALSE;
-			}
-		} else {
-			if (c_len != strlen (contents)) {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("file '%s' contains non-valid utf-8"),
-				             script);
-				return FALSE;
-			}
-			filename = script;
-			script = script_clone = g_steal_pointer (&contents);
-		}
-	}
-
-	if (   !strstr (script, "FindProxyForURL")
-	    || !g_utf8_validate (script, -1, NULL)) {
-		if (filename) {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("'%s' does not contain a valid PAC Script"), filename);
-		} else {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("Not a valid PAC Script"));
-		}
-		return FALSE;
-	}
-
-	*out_script = (script == script_clone)
-	              ? g_steal_pointer (&script_clone)
-	              : g_strdup (script);
-	return TRUE;
+nmc_proxy_check_script(const char *script, char **out_script, GError **error)
+{
+    enum {
+        _PAC_SCRIPT_TYPE_GUESS,
+        _PAC_SCRIPT_TYPE_FILE,
+        _PAC_SCRIPT_TYPE_JSON,
+    } desired_type             = _PAC_SCRIPT_TYPE_GUESS;
+    const char *  filename     = NULL;
+    size_t        c_len        = 0;
+    gs_free char *script_clone = NULL;
+
+    *out_script = NULL;
+
+    if (!script || !script[0])
+        return TRUE;
+
+    if (g_str_has_prefix(script, "file://")) {
+        script += NM_STRLEN("file://");
+        desired_type = _PAC_SCRIPT_TYPE_FILE;
+    } else if (g_str_has_prefix(script, "js://")) {
+        script += NM_STRLEN("js://");
+        desired_type = _PAC_SCRIPT_TYPE_JSON;
+    }
+
+    if (NM_IN_SET(desired_type, _PAC_SCRIPT_TYPE_FILE, _PAC_SCRIPT_TYPE_GUESS)) {
+        gs_free char *contents = NULL;
+
+        if (!g_file_get_contents(script, &contents, &c_len, NULL)) {
+            if (desired_type == _PAC_SCRIPT_TYPE_FILE) {
+                g_set_error(error,
+                            NM_UTILS_ERROR,
+                            NM_UTILS_ERROR_INVALID_ARGUMENT,
+                            _("cannot read pac-script from file '%s'"),
+                            script);
+                return FALSE;
+            }
+        } else {
+            if (c_len != strlen(contents)) {
+                g_set_error(error,
+                            NM_UTILS_ERROR,
+                            NM_UTILS_ERROR_INVALID_ARGUMENT,
+                            _("file '%s' contains non-valid utf-8"),
+                            script);
+                return FALSE;
+            }
+            filename = script;
+            script = script_clone = g_steal_pointer(&contents);
+        }
+    }
+
+    if (!strstr(script, "FindProxyForURL") || !g_utf8_validate(script, -1, NULL)) {
+        if (filename) {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("'%s' does not contain a valid PAC Script"),
+                        filename);
+        } else {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("Not a valid PAC Script"));
+        }
+        return FALSE;
+    }
+
+    *out_script = (script == script_clone) ? g_steal_pointer(&script_clone) : g_strdup(script);
+    return TRUE;
 }
 
 /*
@@ -512,3926 +515,3979 @@ nmc_proxy_check_script (const char *script, char **out_script, GError **error)
  * Returns: %TRUE if the config is valid, %FALSE if it is invalid
  */
 static gboolean
-nmc_team_check_config (const char *config, char **out_config, GError **error)
-{
-	enum {
-		_TEAM_CONFIG_TYPE_GUESS,
-		_TEAM_CONFIG_TYPE_FILE,
-		_TEAM_CONFIG_TYPE_JSON,
-	} desired_type = _TEAM_CONFIG_TYPE_GUESS;
-	size_t c_len = 0;
-	gs_free char *config_clone = NULL;
-
-	*out_config = NULL;
-
-	if (!config || !config[0])
-		return TRUE;
-
-	if (g_str_has_prefix (config, "file://")) {
-		config += NM_STRLEN ("file://");
-		desired_type = _TEAM_CONFIG_TYPE_FILE;
-	} else if (g_str_has_prefix (config, "json://")) {
-		config += NM_STRLEN ("json://");
-		desired_type = _TEAM_CONFIG_TYPE_JSON;
-	}
-
-	if (NM_IN_SET (desired_type, _TEAM_CONFIG_TYPE_FILE, _TEAM_CONFIG_TYPE_GUESS)) {
-		gs_free char *contents = NULL;
-
-		if (!g_file_get_contents (config, &contents, &c_len, NULL)) {
-			if (desired_type == _TEAM_CONFIG_TYPE_FILE) {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("cannot read team config from file '%s'"),
-				             config);
-				return FALSE;
-			}
-		} else {
-			if (c_len != strlen (contents)) {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("team config file '%s' contains non-valid utf-8"),
-				             config);
-				return FALSE;
-			}
-			config = config_clone = g_steal_pointer (&contents);
-		}
-	}
-
-	*out_config = (config == config_clone)
-	              ? g_steal_pointer (&config_clone)
-	              : g_strdup (config);
-	return TRUE;
+nmc_team_check_config(const char *config, char **out_config, GError **error)
+{
+    enum {
+        _TEAM_CONFIG_TYPE_GUESS,
+        _TEAM_CONFIG_TYPE_FILE,
+        _TEAM_CONFIG_TYPE_JSON,
+    } desired_type             = _TEAM_CONFIG_TYPE_GUESS;
+    size_t        c_len        = 0;
+    gs_free char *config_clone = NULL;
+
+    *out_config = NULL;
+
+    if (!config || !config[0])
+        return TRUE;
+
+    if (g_str_has_prefix(config, "file://")) {
+        config += NM_STRLEN("file://");
+        desired_type = _TEAM_CONFIG_TYPE_FILE;
+    } else if (g_str_has_prefix(config, "json://")) {
+        config += NM_STRLEN("json://");
+        desired_type = _TEAM_CONFIG_TYPE_JSON;
+    }
+
+    if (NM_IN_SET(desired_type, _TEAM_CONFIG_TYPE_FILE, _TEAM_CONFIG_TYPE_GUESS)) {
+        gs_free char *contents = NULL;
+
+        if (!g_file_get_contents(config, &contents, &c_len, NULL)) {
+            if (desired_type == _TEAM_CONFIG_TYPE_FILE) {
+                g_set_error(error,
+                            NM_UTILS_ERROR,
+                            NM_UTILS_ERROR_INVALID_ARGUMENT,
+                            _("cannot read team config from file '%s'"),
+                            config);
+                return FALSE;
+            }
+        } else {
+            if (c_len != strlen(contents)) {
+                g_set_error(error,
+                            NM_UTILS_ERROR,
+                            NM_UTILS_ERROR_INVALID_ARGUMENT,
+                            _("team config file '%s' contains non-valid utf-8"),
+                            config);
+                return FALSE;
+            }
+            config = config_clone = g_steal_pointer(&contents);
+        }
+    }
+
+    *out_config = (config == config_clone) ? g_steal_pointer(&config_clone) : g_strdup(config);
+    return TRUE;
 }
 
 static const char *
-_get_text_hidden (NMMetaAccessorGetType get_type)
+_get_text_hidden(NMMetaAccessorGetType get_type)
 {
-	if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
-		return _(NM_META_TEXT_HIDDEN);
-	return NM_META_TEXT_HIDDEN;
+    if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+        return _(NM_META_TEXT_HIDDEN);
+    return NM_META_TEXT_HIDDEN;
 }
 
 /*****************************************************************************/
 
-G_GNUC_PRINTF (4, 5)
+G_GNUC_PRINTF(4, 5)
 static void
-_env_warn_fcn (const NMMetaEnvironment *environment,
-               gpointer environment_user_data,
-               NMMetaEnvWarnLevel warn_level,
-               const char *fmt_l10n,
-               ...)
+_env_warn_fcn(const NMMetaEnvironment *environment,
+              gpointer                 environment_user_data,
+              NMMetaEnvWarnLevel       warn_level,
+              const char *             fmt_l10n,
+              ...)
 {
-	va_list ap;
+    va_list ap;
 
-	if (!environment || !environment->warn_fcn)
-		return;
+    if (!environment || !environment->warn_fcn)
+        return;
 
-	va_start (ap, fmt_l10n);
-	environment->warn_fcn (environment,
-	                       environment_user_data,
-	                       warn_level,
-	                       fmt_l10n,
-	                       ap);
-	va_end (ap);
+    va_start(ap, fmt_l10n);
+    environment->warn_fcn(environment, environment_user_data, warn_level, fmt_l10n, ap);
+    va_end(ap);
 }
 
 /*****************************************************************************/
 
-#define ARGS_DESCRIBE_FCN \
-	const NMMetaPropertyInfo *property_info, char **out_to_free
+#define ARGS_DESCRIBE_FCN const NMMetaPropertyInfo *property_info, char **out_to_free
 
-#define ARGS_GET_FCN \
-	const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, NMMetaAccessorGetType get_type, NMMetaAccessorGetFlags get_flags, NMMetaAccessorGetOutFlags *out_flags, gboolean *out_is_default, gpointer *out_to_free
+#define ARGS_GET_FCN                                                                        \
+    const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment,          \
+        gpointer environment_user_data, NMSetting *setting, NMMetaAccessorGetType get_type, \
+        NMMetaAccessorGetFlags get_flags, NMMetaAccessorGetOutFlags *out_flags,             \
+        gboolean *out_is_default, gpointer *out_to_free
 
-#define ARGS_SET_FCN \
-	const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, NMMetaAccessorModifier modifier, const char *value, GError **error
+#define ARGS_SET_FCN                                                                         \
+    const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment,           \
+        gpointer environment_user_data, NMSetting *setting, NMMetaAccessorModifier modifier, \
+        const char *value, GError **error
 
-#define ARGS_REMOVE_FCN \
-	const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, const char *value, GError **error
+#define ARGS_REMOVE_FCN                                                            \
+    const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, \
+        gpointer environment_user_data, NMSetting *setting, const char *value, GError **error
 
-#define ARGS_COMPLETE_FCN \
-	const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, const NMMetaOperationContext *operation_context, const char *text, gboolean *out_complete_filename, char ***out_to_free
+#define ARGS_COMPLETE_FCN                                                                \
+    const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment,       \
+        gpointer environment_user_data, const NMMetaOperationContext *operation_context, \
+        const char *text, gboolean *out_complete_filename, char ***out_to_free
 
-#define ARGS_VALUES_FCN \
-	const NMMetaPropertyInfo *property_info, char ***out_to_free
+#define ARGS_VALUES_FCN const NMMetaPropertyInfo *property_info, char ***out_to_free
 
-#define ARGS_SETTING_INIT_FCN \
-	const NMMetaSettingInfoEditor *setting_info, NMSetting *setting, NMMetaAccessorSettingInitType init_type
+#define ARGS_SETTING_INIT_FCN                                        \
+    const NMMetaSettingInfoEditor *setting_info, NMSetting *setting, \
+        NMMetaAccessorSettingInitType init_type
 
-static gboolean _set_fcn_optionlist (ARGS_SET_FCN);
+static gboolean _set_fcn_optionlist(ARGS_SET_FCN);
 
 static gboolean
-_SET_FCN_DO_RESET_DEFAULT (const NMMetaPropertyInfo *property_info, NMMetaAccessorModifier modifier, const char *value)
+_SET_FCN_DO_RESET_DEFAULT(const NMMetaPropertyInfo *property_info,
+                          NMMetaAccessorModifier    modifier,
+                          const char *              value)
 {
-	nm_assert (property_info);
-	nm_assert (!property_info->property_type->set_supports_remove);
-	nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
-	                                NM_META_ACCESSOR_MODIFIER_ADD));
-	nm_assert (   value
-	           || modifier == NM_META_ACCESSOR_MODIFIER_SET);
+    nm_assert(property_info);
+    nm_assert(!property_info->property_type->set_supports_remove);
+    nm_assert(NM_IN_SET(modifier, NM_META_ACCESSOR_MODIFIER_SET, NM_META_ACCESSOR_MODIFIER_ADD));
+    nm_assert(value || modifier == NM_META_ACCESSOR_MODIFIER_SET);
 
-	return value == NULL;
+    return value == NULL;
 }
 
 static gboolean
-_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (const NMMetaPropertyInfo *property_info, NMMetaAccessorModifier modifier, const char *value)
+_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(const NMMetaPropertyInfo *property_info,
+                                               NMMetaAccessorModifier    modifier,
+                                               const char *              value)
 {
-	nm_assert (property_info);
-	nm_assert (property_info->property_type->set_supports_remove);
-	nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
-	                                NM_META_ACCESSOR_MODIFIER_ADD,
-	                                NM_META_ACCESSOR_MODIFIER_DEL));
-	nm_assert (   value
-	           || modifier == NM_META_ACCESSOR_MODIFIER_SET);
+    nm_assert(property_info);
+    nm_assert(property_info->property_type->set_supports_remove);
+    nm_assert(NM_IN_SET(modifier,
+                        NM_META_ACCESSOR_MODIFIER_SET,
+                        NM_META_ACCESSOR_MODIFIER_ADD,
+                        NM_META_ACCESSOR_MODIFIER_DEL));
+    nm_assert(value || modifier == NM_META_ACCESSOR_MODIFIER_SET);
 
-	return value == NULL;
+    return value == NULL;
 }
 
 static gboolean
-_SET_FCN_DO_SET_ALL (NMMetaAccessorModifier modifier, const char *value)
+_SET_FCN_DO_SET_ALL(NMMetaAccessorModifier modifier, const char *value)
 {
-	nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
-	                                NM_META_ACCESSOR_MODIFIER_ADD,
-	                                NM_META_ACCESSOR_MODIFIER_DEL));
-	nm_assert (value);
+    nm_assert(NM_IN_SET(modifier,
+                        NM_META_ACCESSOR_MODIFIER_SET,
+                        NM_META_ACCESSOR_MODIFIER_ADD,
+                        NM_META_ACCESSOR_MODIFIER_DEL));
+    nm_assert(value);
 
-	return modifier == NM_META_ACCESSOR_MODIFIER_SET;
+    return modifier == NM_META_ACCESSOR_MODIFIER_SET;
 }
 
 static gboolean
-_SET_FCN_DO_REMOVE (NMMetaAccessorModifier modifier, const char *value)
-{
-	nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
-	                                NM_META_ACCESSOR_MODIFIER_ADD,
-	                                NM_META_ACCESSOR_MODIFIER_DEL));
-	nm_assert (value);
-
-	return modifier == NM_META_ACCESSOR_MODIFIER_DEL;
-}
-
-#define RETURN_UNSUPPORTED_GET_TYPE() \
-	G_STMT_START { \
-		if (!NM_IN_SET (get_type, \
-		                NM_META_ACCESSOR_GET_TYPE_PARSABLE, \
-		                NM_META_ACCESSOR_GET_TYPE_PRETTY)) { \
-			nm_assert_not_reached (); \
-			return NULL; \
-		} \
-	} G_STMT_END;
-
-#define RETURN_STR_TO_FREE(val) \
-	G_STMT_START { \
-		char *_val = (val); \
-		\
-		return ((*(out_to_free)) = _val); \
-	} G_STMT_END
-
-#define RETURN_STR_TEMPORARY(val) \
-	G_STMT_START { \
-		const char *_val = (val); \
-		\
-		if (_val == NULL) \
-			return NULL; \
-		if (_val[0] == '\0') \
-			return ""; \
-		return ((*(out_to_free)) = g_strdup (_val)); \
-	} G_STMT_END
+_SET_FCN_DO_REMOVE(NMMetaAccessorModifier modifier, const char *value)
+{
+    nm_assert(NM_IN_SET(modifier,
+                        NM_META_ACCESSOR_MODIFIER_SET,
+                        NM_META_ACCESSOR_MODIFIER_ADD,
+                        NM_META_ACCESSOR_MODIFIER_DEL));
+    nm_assert(value);
+
+    return modifier == NM_META_ACCESSOR_MODIFIER_DEL;
+}
+
+#define RETURN_UNSUPPORTED_GET_TYPE()                       \
+    G_STMT_START                                            \
+    {                                                       \
+        if (!NM_IN_SET(get_type,                            \
+                       NM_META_ACCESSOR_GET_TYPE_PARSABLE,  \
+                       NM_META_ACCESSOR_GET_TYPE_PRETTY)) { \
+            nm_assert_not_reached();                        \
+            return NULL;                                    \
+        }                                                   \
+    }                                                       \
+    G_STMT_END;
+
+#define RETURN_STR_TO_FREE(val)           \
+    G_STMT_START                          \
+    {                                     \
+        char *_val = (val);               \
+                                          \
+        return ((*(out_to_free)) = _val); \
+    }                                     \
+    G_STMT_END
+
+#define RETURN_STR_TEMPORARY(val)                   \
+    G_STMT_START                                    \
+    {                                               \
+        const char *_val = (val);                   \
+                                                    \
+        if (_val == NULL)                           \
+            return NULL;                            \
+        if (_val[0] == '\0')                        \
+            return "";                              \
+        return ((*(out_to_free)) = g_strdup(_val)); \
+    }                                               \
+    G_STMT_END
 
 static gboolean
-_gobject_property_is_default (NMSetting *setting, const char *prop_name)
+_gobject_property_is_default(NMSetting *setting, const char *prop_name)
 {
-	nm_auto_unset_gvalue GValue v = G_VALUE_INIT;
-	GParamSpec *pspec;
-	GHashTable *ht;
-	char **strv;
+    nm_auto_unset_gvalue GValue v = G_VALUE_INIT;
+    GParamSpec *                pspec;
+    GHashTable *                ht;
+    char **                     strv;
 
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)),
-	                                      prop_name);
-	if (!G_IS_PARAM_SPEC (pspec))
-		g_return_val_if_reached (FALSE);
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(setting)), prop_name);
+    if (!G_IS_PARAM_SPEC(pspec))
+        g_return_val_if_reached(FALSE);
 
-	g_value_init (&v, pspec->value_type);
-	g_object_get_property (G_OBJECT (setting), prop_name, &v);
+    g_value_init(&v, pspec->value_type);
+    g_object_get_property(G_OBJECT(setting), prop_name, &v);
 
-	if (pspec->value_type == G_TYPE_STRV) {
-		strv = g_value_get_boxed (&v);
-		return !strv || !strv[0];
-	} else if (pspec->value_type == G_TYPE_HASH_TABLE) {
-		ht = g_value_get_boxed (&v);
-		return !ht || !g_hash_table_size (ht);
-	}
+    if (pspec->value_type == G_TYPE_STRV) {
+        strv = g_value_get_boxed(&v);
+        return !strv || !strv[0];
+    } else if (pspec->value_type == G_TYPE_HASH_TABLE) {
+        ht = g_value_get_boxed(&v);
+        return !ht || !g_hash_table_size(ht);
+    }
 
-	return g_param_value_defaults (pspec, &v);
+    return g_param_value_defaults(pspec, &v);
 }
 
 static gboolean
-_gobject_property_reset (NMSetting *setting,
-                         const char *prop_name,
-                         gboolean reset_default)
+_gobject_property_reset(NMSetting *setting, const char *prop_name, gboolean reset_default)
 {
-	nm_auto_unset_gvalue GValue v = G_VALUE_INIT;
-	GParamSpec *pspec;
+    nm_auto_unset_gvalue GValue v = G_VALUE_INIT;
+    GParamSpec *                pspec;
 
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)),
-	                                      prop_name);
-	if (!G_IS_PARAM_SPEC (pspec))
-		g_return_val_if_reached (FALSE);
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(setting)), prop_name);
+    if (!G_IS_PARAM_SPEC(pspec))
+        g_return_val_if_reached(FALSE);
 
-	g_value_init (&v, pspec->value_type);
-	if (reset_default)
-		g_param_value_set_default (pspec, &v);
-	g_object_set_property (G_OBJECT (setting), prop_name, &v);
-	return TRUE;
+    g_value_init(&v, pspec->value_type);
+    if (reset_default)
+        g_param_value_set_default(pspec, &v);
+    g_object_set_property(G_OBJECT(setting), prop_name, &v);
+    return TRUE;
 }
 
 static gboolean
-_gobject_property_reset_default (NMSetting *setting, const char *prop_name)
+_gobject_property_reset_default(NMSetting *setting, const char *prop_name)
 {
-	return _gobject_property_reset (setting, prop_name, TRUE);
+    return _gobject_property_reset(setting, prop_name, TRUE);
 }
 
 static const char *
-_coerce_str_emptyunset (NMMetaAccessorGetType get_type,
-                        gboolean is_default,
-                        const char *cstr,
-                        char **out_str)
-{
-	nm_assert (out_str && !*out_str);
-	nm_assert (   (!is_default && cstr && cstr[0] != '\0')
-	           || NM_IN_STRSET (cstr, NULL, ""));
-
-	if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY) {
-		if (   !cstr
-		    || cstr[0] == '\0') {
-			if (is_default)
-				return "";
-			else
-				return "\"\"";
-		}
-		nm_assert (!is_default);
-		return (*out_str = g_strdup_printf ("\"%s\"", cstr));
-	}
-
-	/* we coerce NULL/"" to either "" or " ". */
-	if (   !cstr
-	    || cstr[0] == '\0') {
-		if (is_default)
-			return "";
-		else
-			return " ";
-	}
-	nm_assert (!is_default);
-	return cstr;
-}
-
-#define RETURN_STR_EMPTYUNSET(get_type, is_default, cstr) \
-	G_STMT_START { \
-		char *_str = NULL; \
-		const char *_cstr; \
-		\
-		_cstr = _coerce_str_emptyunset ((get_type), (is_default), (cstr), &_str); \
-		if (_str) \
-			RETURN_STR_TO_FREE (_str); \
-		RETURN_STR_TEMPORARY (_cstr); \
-	} G_STMT_END
+_coerce_str_emptyunset(NMMetaAccessorGetType get_type,
+                       gboolean              is_default,
+                       const char *          cstr,
+                       char **               out_str)
+{
+    nm_assert(out_str && !*out_str);
+    nm_assert((!is_default && cstr && cstr[0] != '\0') || NM_IN_STRSET(cstr, NULL, ""));
+
+    if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY) {
+        if (!cstr || cstr[0] == '\0') {
+            if (is_default)
+                return "";
+            else
+                return "\"\"";
+        }
+        nm_assert(!is_default);
+        return (*out_str = g_strdup_printf("\"%s\"", cstr));
+    }
+
+    /* we coerce NULL/"" to either "" or " ". */
+    if (!cstr || cstr[0] == '\0') {
+        if (is_default)
+            return "";
+        else
+            return " ";
+    }
+    nm_assert(!is_default);
+    return cstr;
+}
+
+#define RETURN_STR_EMPTYUNSET(get_type, is_default, cstr)                        \
+    G_STMT_START                                                                 \
+    {                                                                            \
+        char *      _str = NULL;                                                 \
+        const char *_cstr;                                                       \
+                                                                                 \
+        _cstr = _coerce_str_emptyunset((get_type), (is_default), (cstr), &_str); \
+        if (_str)                                                                \
+            RETURN_STR_TO_FREE(_str);                                            \
+        RETURN_STR_TEMPORARY(_cstr);                                             \
+    }                                                                            \
+    G_STMT_END
 
 static gboolean
-_is_default (const NMMetaPropertyInfo *property_info,
-             NMSetting *setting)
-{
-	if (   property_info->property_typ_data
-	    && property_info->property_typ_data->is_default_fcn)
-		return !!(property_info->property_typ_data->is_default_fcn (setting));
-
-	return _gobject_property_is_default (setting, property_info->property_name);
-
-}
-
-static gconstpointer
-_get_fcn_gobject_impl (const NMMetaPropertyInfo *property_info,
-                       NMSetting *setting,
-                       NMMetaAccessorGetType get_type,
-                       gboolean handle_emptyunset,
-                       gboolean *out_is_default,
-                       gpointer *out_to_free)
-{
-	const char *cstr;
-	GType gtype_prop;
-	nm_auto_unset_gvalue GValue val = G_VALUE_INIT;
-	gboolean is_default;
-	gboolean glib_handles_str_transform;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	is_default = _is_default (property_info, setting);
-
-	NM_SET_OUT (out_is_default, is_default);
-
-	gtype_prop = _gobject_property_get_gtype (G_OBJECT (setting), property_info->property_name);
-
-	glib_handles_str_transform = !NM_IN_SET (gtype_prop, G_TYPE_BOOLEAN,
-	                                                     G_TYPE_STRV,
-	                                                     G_TYPE_BYTES,
-	                                                     G_TYPE_HASH_TABLE);
-
-	if (glib_handles_str_transform) {
-		/* We rely on the type convertion of the gobject property to string. */
-		g_value_init (&val, G_TYPE_STRING);
-	} else
-		g_value_init (&val, gtype_prop);
-
-	g_object_get_property (G_OBJECT (setting), property_info->property_name, &val);
-
-	/* Currently only one particular property asks us to "handle_emptyunset".
-	 * So, don't implement it (yet) for the other types, where it's unneeded. */
-	nm_assert (   !handle_emptyunset
-	           || (   gtype_prop == G_TYPE_STRV
-	               && !glib_handles_str_transform));
-
-	if (gtype_prop == G_TYPE_STRING) {
-		nm_assert (glib_handles_str_transform);
-		nm_assert (!handle_emptyunset);
-		if (   property_info->property_typ_data
-		    && property_info->property_typ_data->subtype.gobject_string.handle_emptyunset) {
-			/* This string property can both be empty and NULL. We need to
-			 * signal them differently. */
-			cstr = g_value_get_string (&val);
-			nm_assert ((!!is_default) == (cstr == NULL));
-			RETURN_STR_EMPTYUNSET (get_type, is_default, NULL);
-		}
-	}
-
-	if (glib_handles_str_transform)
-		RETURN_STR_TEMPORARY (g_value_get_string (&val));
-
-	if (gtype_prop == G_TYPE_BOOLEAN) {
-		gboolean b;
-
-		b = g_value_get_boolean (&val);
-		if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
-			cstr = b ? _("yes") : _("no");
-		else
-			cstr = b ? "yes" : "no";
-		return cstr;
-	}
-
-	if (gtype_prop == G_TYPE_STRV) {
-		const char *const*strv;
-
-		strv = g_value_get_boxed (&val);
-		if (strv && strv[0])
-			RETURN_STR_TO_FREE (g_strjoinv (",", (char **) strv));
-
-		if (handle_emptyunset) {
-			/* we need to express empty lists from unset lists differently. */
-			RETURN_STR_EMPTYUNSET (get_type, is_default, NULL);
-		}
-
-		return "";
-	}
-
-	if (gtype_prop == G_TYPE_BYTES) {
-		char *str;
-
-		str = bytes_to_string (g_value_get_boxed (&val));
-		NM_SET_OUT (out_is_default, !str || !str[0]);
-		RETURN_STR_TO_FREE (str);
-	}
-
-	if (gtype_prop == G_TYPE_HASH_TABLE) {
-		GHashTable *strdict;
-		gs_free const char **keys = NULL;
-		GString *str;
-		gsize i;
-
-		nm_assert (   property_info->setting_info == &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_WIRED]
-		           && NM_IN_STRSET (property_info->property_name, NM_SETTING_WIRED_S390_OPTIONS));
-		nm_assert (property_info->property_type->set_fcn == _set_fcn_optionlist);
-
-		strdict = g_value_get_boxed (&val);
-		keys = nm_utils_strdict_get_keys (strdict, TRUE, NULL);
-		if (!keys)
-			return NULL;
-
-		str = g_string_new (NULL);
-		for (i = 0; keys[i]; i++) {
-			const char *key = keys[i];
-			const char *v = g_hash_table_lookup (strdict, key);
-			gs_free char *escaped_key = NULL;
-			gs_free char *escaped_val = NULL;
-
-			if (str->len > 0)
-				g_string_append_c (str, ',');
-			g_string_append (str, nm_utils_escaped_tokens_options_escape_key (key, &escaped_key));
-			g_string_append_c (str, '=');
-			g_string_append (str, nm_utils_escaped_tokens_options_escape_val (v, &escaped_val));
-		}
-		RETURN_STR_TO_FREE (g_string_free (str, FALSE));
-	}
-
-	nm_assert_not_reached ();
-	return NULL;
-}
-
-static gconstpointer
-_get_fcn_gobject (ARGS_GET_FCN)
-{
-	return _get_fcn_gobject_impl (property_info, setting, get_type, FALSE, out_is_default, out_to_free);
-}
-
-static gconstpointer
-_get_fcn_gobject_int (ARGS_GET_FCN)
-{
-	GParamSpec *pspec;
-	nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
-	gboolean is_uint64 = FALSE;
-	NMMetaSignUnsignInt64 v;
-	guint base = 10;
-	const NMMetaUtilsIntValueInfo *value_infos;
-	char *return_str;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), property_info->property_name);
-	if (!G_IS_PARAM_SPEC (pspec))
-		g_return_val_if_reached (FALSE);
-
-	g_value_init (&gval, pspec->value_type);
-	g_object_get_property (G_OBJECT (setting), property_info->property_name, &gval);
-	NM_SET_OUT (out_is_default, g_param_value_defaults (pspec, &gval));
-	switch (pspec->value_type) {
-	case G_TYPE_INT:
-		v.i64 = g_value_get_int (&gval);
-		break;
-	case G_TYPE_UINT:
-		v.u64 = g_value_get_uint (&gval);
-		is_uint64 = TRUE;
-		break;
-	case G_TYPE_INT64:
-		v.i64 = g_value_get_int64 (&gval);
-		break;
-	case G_TYPE_UINT64:
-		v.u64 = g_value_get_uint64 (&gval);
-		is_uint64 = TRUE;
-		break;
-	default:
-		g_return_val_if_reached (NULL);
-		break;
-	}
-
-	if (   property_info->property_typ_data
-	    && property_info->property_typ_data->subtype.gobject_int.base > 0) {
-		base = property_info->property_typ_data->subtype.gobject_int.base;
-	}
-
-	switch (base) {
-	case 10:
-		if (is_uint64)
-			return_str = g_strdup_printf ("%"G_GUINT64_FORMAT, v.u64);
-		else
-			return_str = g_strdup_printf ("%"G_GINT64_FORMAT, v.i64);
-		break;
-	case 16:
-		if (is_uint64)
-			return_str = g_strdup_printf ("0x%"G_GINT64_MODIFIER"x", v.u64);
-		else
-			return_str = g_strdup_printf ("0x%"G_GINT64_MODIFIER"x", (guint64) v.i64);
-		break;
-	default:
-		return_str = NULL;
-		g_assert_not_reached ();
-	}
-
-	if (   get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
-	    && property_info->property_typ_data
-	    && (value_infos = property_info->property_typ_data->subtype.gobject_int.value_infos)) {
-		for (; value_infos->nick; value_infos++) {
-			if (   ( is_uint64 && value_infos->value.u64 == v.u64)
-			    || (!is_uint64 && value_infos->value.i64 == v.i64)) {
-				gs_free char *old_str = return_str;
-
-				return_str = g_strdup_printf ("%s (%s)", old_str, value_infos->nick);
-				break;
-			}
-		}
-	}
-
-	RETURN_STR_TO_FREE (return_str);
-}
-
-static gconstpointer
-_get_fcn_gobject_mtu (ARGS_GET_FCN)
-{
-	guint32 mtu;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	if (   !property_info->property_typ_data
-	    || !property_info->property_typ_data->subtype.mtu.get_fcn)
-		return _get_fcn_gobject_impl (property_info, setting, get_type, FALSE, out_is_default, out_to_free);
-
-	mtu = property_info->property_typ_data->subtype.mtu.get_fcn (setting);
-	if (mtu == 0) {
-		NM_SET_OUT (out_is_default, TRUE);
-		if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
-			return _("auto");
-		return "auto";
-	}
-	RETURN_STR_TO_FREE (g_strdup_printf ("%u", (unsigned) mtu));
-}
-
-static gconstpointer
-_get_fcn_gobject_secret_flags (ARGS_GET_FCN)
+_is_default(const NMMetaPropertyInfo *property_info, NMSetting *setting)
 {
-	guint v;
-	GValue val = G_VALUE_INIT;
+    if (property_info->property_typ_data && property_info->property_typ_data->is_default_fcn)
+        return !!(property_info->property_typ_data->is_default_fcn(setting));
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	g_value_init (&val, G_TYPE_UINT);
-	g_object_get_property (G_OBJECT (setting), property_info->property_name, &val);
-	v = g_value_get_uint (&val);
-	g_value_unset (&val);
-	RETURN_STR_TO_FREE (secret_flags_to_string (v, get_type));
+    return _gobject_property_is_default(setting, property_info->property_name);
 }
 
 static gconstpointer
-_get_fcn_gobject_enum (ARGS_GET_FCN)
-{
-	GType gtype = 0;
-	nm_auto_unref_gtypeclass GTypeClass *gtype_class = NULL;
-	nm_auto_unref_gtypeclass GTypeClass *gtype_prop_class = NULL;
-	const struct _NMUtilsEnumValueInfo *value_infos = NULL;
-	gboolean has_gtype = FALSE;
-	nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
-	gint64 v;
-	gboolean format_numeric = FALSE;
-	gboolean format_numeric_hex = FALSE;
-	gboolean format_numeric_hex_unknown = FALSE;
-	gboolean format_text = FALSE;
-	gboolean format_text_l10n = FALSE;
-	gs_free char *s = NULL;
-	char s_numeric[64];
-	GParamSpec *pspec;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	if (property_info->property_typ_data) {
-		if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
-			gtype = property_info->property_typ_data->subtype.gobject_enum.get_gtype ();
-			has_gtype = TRUE;
-		}
-	}
-
-	if (   property_info->property_typ_data
-	    && get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
-	    && NM_FLAGS_ANY (property_info->property_typ_data->typ_flags,   NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC
-	                                                                  | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC_HEX
-	                                                                  | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT
-	                                                                  | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT_L10N)) {
-		format_numeric_hex = NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC_HEX);
-		format_numeric = format_numeric_hex || NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC);
-		format_text_l10n = NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT_L10N);
-		format_text = format_text_l10n || NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT);
-	} else if (   property_info->property_typ_data
-	           && get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY
-	           && NM_FLAGS_ANY (property_info->property_typ_data->typ_flags,   NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC
-	                                                                         | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC_HEX
-	                                                                         | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT)) {
-		format_numeric_hex = NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC_HEX);
-		format_numeric = format_numeric && NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC);
-		format_text = NM_FLAGS_HAS (property_info->property_typ_data->typ_flags, NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT);
-	} else if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY) {
-		/* by default, output in format "%u (%s)" (with hex for flags and l10n). */
-		format_numeric = TRUE;
-		format_numeric_hex_unknown = TRUE;
-		format_text = TRUE;
-		format_text_l10n = TRUE;
-	} else {
-		/* by default, output only numeric (with hex for flags). */
-		format_numeric = TRUE;
-		format_numeric_hex_unknown = TRUE;
-	}
-
-	nm_assert (format_text || format_numeric);
-
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (setting), property_info->property_name);
-	g_return_val_if_fail (pspec, NULL);
-
-	g_value_init (&gval, pspec->value_type);
-	g_object_get_property (G_OBJECT (setting), property_info->property_name, &gval);
-	NM_SET_OUT (out_is_default, g_param_value_defaults (pspec, &gval));
-
-	if (   pspec->value_type == G_TYPE_INT
-	    || (    G_TYPE_IS_CLASSED (pspec->value_type)
-	        &&  G_IS_ENUM_CLASS ((gtype_prop_class ?: (gtype_prop_class = g_type_class_ref (pspec->value_type)))))) {
-		if (pspec->value_type == G_TYPE_INT) {
-			if (!has_gtype)
-				g_return_val_if_reached (NULL);
-			v = g_value_get_int (&gval);
-		} else
-		    v = g_value_get_enum (&gval);
-	} else if (   pspec->value_type == G_TYPE_UINT
-	           || (   G_TYPE_IS_CLASSED (pspec->value_type)
-	               && G_IS_FLAGS_CLASS ((gtype_prop_class ?: (gtype_prop_class = g_type_class_ref (pspec->value_type)))))) {
-		if (pspec->value_type == G_TYPE_UINT) {
-			if (!has_gtype)
-				g_return_val_if_reached (NULL);
-			v = g_value_get_uint (&gval);
-		} else
-		    v = g_value_get_flags (&gval);
-	} else
-		g_return_val_if_reached (NULL);
-
-	if (!has_gtype) {
-		gtype = pspec->value_type;
-		gtype_class = g_steal_pointer (&gtype_prop_class);
-	}
-
-	nm_assert (({
-		nm_auto_unref_gtypeclass GTypeClass *t = NULL;
-
-		(   G_TYPE_IS_CLASSED (gtype)
-		 && (t = g_type_class_ref (gtype))
-		 && (G_IS_ENUM_CLASS (t) || G_IS_FLAGS_CLASS (t)));
-	}));
-
-	if (format_numeric && !format_text) {
-		s =    format_numeric_hex
-		    || (   format_numeric_hex_unknown
-		        && !G_IS_ENUM_CLASS (gtype_class ?: (gtype_class = g_type_class_ref (gtype))))
-		    ? g_strdup_printf ("0x%"G_GINT64_MODIFIER"x", v)
-		    : g_strdup_printf ("%"G_GINT64_FORMAT, v);
-		RETURN_STR_TO_FREE (g_steal_pointer (&s));
-	}
-
-	/* the gobject_enum.value_infos are currently ignored for the getter. They
-	 * only declare additional aliases for the setter. */
-
-	if (property_info->property_typ_data)
-		value_infos = property_info->property_typ_data->subtype.gobject_enum.value_infos_get;
-	s = _nm_utils_enum_to_str_full (gtype, (int) v, ", ", value_infos);
-
-	if (!format_numeric)
-		RETURN_STR_TO_FREE (g_steal_pointer (&s));
-
-	if (   format_numeric_hex
-	    || (   format_numeric_hex_unknown
-	        && !G_IS_ENUM_CLASS (gtype_class ?: (gtype_class = g_type_class_ref (gtype)))))
-		nm_sprintf_buf (s_numeric, "0x%"G_GINT64_MODIFIER"x", v);
-	else
-		nm_sprintf_buf (s_numeric, "%"G_GINT64_FORMAT, v);
-
-	if (nm_streq0 (s, s_numeric))
-		RETURN_STR_TO_FREE (g_steal_pointer (&s));
-
-	if (format_text_l10n)
-		RETURN_STR_TO_FREE (g_strdup_printf (_("%s (%s)"), s_numeric, s));
-	else
-		RETURN_STR_TO_FREE (g_strdup_printf ("%s (%s)", s_numeric, s));
+_get_fcn_gobject_impl(const NMMetaPropertyInfo *property_info,
+                      NMSetting *               setting,
+                      NMMetaAccessorGetType     get_type,
+                      gboolean                  handle_emptyunset,
+                      gboolean *                out_is_default,
+                      gpointer *                out_to_free)
+{
+    const char *                cstr;
+    GType                       gtype_prop;
+    nm_auto_unset_gvalue GValue val = G_VALUE_INIT;
+    gboolean                    is_default;
+    gboolean                    glib_handles_str_transform;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    is_default = _is_default(property_info, setting);
+
+    NM_SET_OUT(out_is_default, is_default);
+
+    gtype_prop = _gobject_property_get_gtype(G_OBJECT(setting), property_info->property_name);
+
+    glib_handles_str_transform =
+        !NM_IN_SET(gtype_prop, G_TYPE_BOOLEAN, G_TYPE_STRV, G_TYPE_BYTES, G_TYPE_HASH_TABLE);
+
+    if (glib_handles_str_transform) {
+        /* We rely on the type conversion of the gobject property to string. */
+        g_value_init(&val, G_TYPE_STRING);
+    } else
+        g_value_init(&val, gtype_prop);
+
+    g_object_get_property(G_OBJECT(setting), property_info->property_name, &val);
+
+    /* Currently, only one particular property asks us to "handle_emptyunset".
+     * So, don't implement it (yet) for the other types, where it's unneeded. */
+    nm_assert(!handle_emptyunset || (gtype_prop == G_TYPE_STRV && !glib_handles_str_transform));
+
+    if (gtype_prop == G_TYPE_STRING) {
+        nm_assert(glib_handles_str_transform);
+        nm_assert(!handle_emptyunset);
+        if (property_info->property_typ_data
+            && property_info->property_typ_data->subtype.gobject_string.handle_emptyunset) {
+            /* This string property can both be empty and NULL. We need to
+             * signal them differently. */
+            cstr = g_value_get_string(&val);
+            nm_assert((!!is_default) == (cstr == NULL));
+            RETURN_STR_EMPTYUNSET(get_type, is_default, NULL);
+        }
+    }
+
+    if (glib_handles_str_transform)
+        RETURN_STR_TEMPORARY(g_value_get_string(&val));
+
+    if (gtype_prop == G_TYPE_BOOLEAN) {
+        gboolean b;
+
+        b = g_value_get_boolean(&val);
+        if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+            cstr = b ? _("yes") : _("no");
+        else
+            cstr = b ? "yes" : "no";
+        return cstr;
+    }
+
+    if (gtype_prop == G_TYPE_STRV) {
+        const char *const *strv;
+
+        strv = g_value_get_boxed(&val);
+        if (strv && strv[0])
+            RETURN_STR_TO_FREE(g_strjoinv(",", (char **) strv));
+
+        if (handle_emptyunset) {
+            /* we need to express empty lists from unset lists differently. */
+            RETURN_STR_EMPTYUNSET(get_type, is_default, NULL);
+        }
+
+        return "";
+    }
+
+    if (gtype_prop == G_TYPE_BYTES) {
+        char *str;
+
+        str = bytes_to_string(g_value_get_boxed(&val));
+        NM_SET_OUT(out_is_default, !str || !str[0]);
+        RETURN_STR_TO_FREE(str);
+    }
+
+    if (gtype_prop == G_TYPE_HASH_TABLE) {
+        GHashTable *         strdict;
+        gs_free const char **keys = NULL;
+        GString *            str;
+        gsize                i;
+
+        nm_assert(property_info->setting_info
+                      == &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_WIRED]
+                  && NM_IN_STRSET(property_info->property_name, NM_SETTING_WIRED_S390_OPTIONS));
+        nm_assert(property_info->property_type->set_fcn == _set_fcn_optionlist);
+
+        strdict = g_value_get_boxed(&val);
+        keys    = nm_utils_strdict_get_keys(strdict, TRUE, NULL);
+        if (!keys)
+            return NULL;
+
+        str = g_string_new(NULL);
+        for (i = 0; keys[i]; i++) {
+            const char *  key         = keys[i];
+            const char *  v           = g_hash_table_lookup(strdict, key);
+            gs_free char *escaped_key = NULL;
+            gs_free char *escaped_val = NULL;
+
+            if (str->len > 0)
+                g_string_append_c(str, ',');
+            g_string_append(str, nm_utils_escaped_tokens_options_escape_key(key, &escaped_key));
+            g_string_append_c(str, '=');
+            g_string_append(str, nm_utils_escaped_tokens_options_escape_val(v, &escaped_val));
+        }
+        RETURN_STR_TO_FREE(g_string_free(str, FALSE));
+    }
+
+    nm_assert_not_reached();
+    return NULL;
+}
+
+static gconstpointer _get_fcn_gobject(ARGS_GET_FCN)
+{
+    return _get_fcn_gobject_impl(property_info,
+                                 setting,
+                                 get_type,
+                                 FALSE,
+                                 out_is_default,
+                                 out_to_free);
+}
+
+static gconstpointer _get_fcn_gobject_int(ARGS_GET_FCN)
+{
+    GParamSpec *                   pspec;
+    nm_auto_unset_gvalue GValue    gval      = G_VALUE_INIT;
+    gboolean                       is_uint64 = FALSE;
+    NMMetaSignUnsignInt64          v;
+    guint                          base = 10;
+    const NMMetaUtilsIntValueInfo *value_infos;
+    char *                         return_str;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(setting)),
+                                         property_info->property_name);
+    if (!G_IS_PARAM_SPEC(pspec))
+        g_return_val_if_reached(FALSE);
+
+    g_value_init(&gval, pspec->value_type);
+    g_object_get_property(G_OBJECT(setting), property_info->property_name, &gval);
+    NM_SET_OUT(out_is_default, g_param_value_defaults(pspec, &gval));
+    switch (pspec->value_type) {
+    case G_TYPE_INT:
+        v.i64 = g_value_get_int(&gval);
+        break;
+    case G_TYPE_UINT:
+        v.u64     = g_value_get_uint(&gval);
+        is_uint64 = TRUE;
+        break;
+    case G_TYPE_INT64:
+        v.i64 = g_value_get_int64(&gval);
+        break;
+    case G_TYPE_UINT64:
+        v.u64     = g_value_get_uint64(&gval);
+        is_uint64 = TRUE;
+        break;
+    default:
+        g_return_val_if_reached(NULL);
+        break;
+    }
+
+    if (property_info->property_typ_data
+        && property_info->property_typ_data->subtype.gobject_int.base > 0) {
+        base = property_info->property_typ_data->subtype.gobject_int.base;
+    }
+
+    switch (base) {
+    case 10:
+        if (is_uint64)
+            return_str = g_strdup_printf("%" G_GUINT64_FORMAT, v.u64);
+        else
+            return_str = g_strdup_printf("%" G_GINT64_FORMAT, v.i64);
+        break;
+    case 16:
+        if (is_uint64)
+            return_str = g_strdup_printf("0x%" G_GINT64_MODIFIER "x", v.u64);
+        else
+            return_str = g_strdup_printf("0x%" G_GINT64_MODIFIER "x", (guint64) v.i64);
+        break;
+    default:
+        return_str = NULL;
+        g_assert_not_reached();
+    }
+
+    if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY && property_info->property_typ_data
+        && (value_infos = property_info->property_typ_data->subtype.gobject_int.value_infos)) {
+        for (; value_infos->nick; value_infos++) {
+            if ((is_uint64 && value_infos->value.u64 == v.u64)
+                || (!is_uint64 && value_infos->value.i64 == v.i64)) {
+                gs_free char *old_str = return_str;
+
+                return_str = g_strdup_printf("%s (%s)", old_str, value_infos->nick);
+                break;
+            }
+        }
+    }
+
+    RETURN_STR_TO_FREE(return_str);
+}
+
+static gconstpointer _get_fcn_gobject_mtu(ARGS_GET_FCN)
+{
+    guint32 mtu;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    if (!property_info->property_typ_data || !property_info->property_typ_data->subtype.mtu.get_fcn)
+        return _get_fcn_gobject_impl(property_info,
+                                     setting,
+                                     get_type,
+                                     FALSE,
+                                     out_is_default,
+                                     out_to_free);
+
+    mtu = property_info->property_typ_data->subtype.mtu.get_fcn(setting);
+    if (mtu == 0) {
+        NM_SET_OUT(out_is_default, TRUE);
+        if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+            return _("auto");
+        return "auto";
+    }
+    RETURN_STR_TO_FREE(g_strdup_printf("%u", (unsigned) mtu));
+}
+
+static gconstpointer _get_fcn_gobject_secret_flags(ARGS_GET_FCN)
+{
+    guint  v;
+    GValue val = G_VALUE_INIT;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    g_value_init(&val, G_TYPE_UINT);
+    g_object_get_property(G_OBJECT(setting), property_info->property_name, &val);
+    v = g_value_get_uint(&val);
+    g_value_unset(&val);
+    RETURN_STR_TO_FREE(secret_flags_to_string(v, get_type));
+}
+
+static gconstpointer _get_fcn_gobject_enum(ARGS_GET_FCN)
+{
+    GType                    gtype                        = 0;
+    nm_auto_unref_gtypeclass GTypeClass *gtype_class      = NULL;
+    nm_auto_unref_gtypeclass GTypeClass *gtype_prop_class = NULL;
+    const struct _NMUtilsEnumValueInfo * value_infos      = NULL;
+    gboolean                             has_gtype        = FALSE;
+    nm_auto_unset_gvalue GValue          gval             = G_VALUE_INIT;
+    gint64                               v;
+    gboolean                             format_numeric             = FALSE;
+    gboolean                             format_numeric_hex         = FALSE;
+    gboolean                             format_numeric_hex_unknown = FALSE;
+    gboolean                             format_text                = FALSE;
+    gboolean                             format_text_l10n           = FALSE;
+    gs_free char *                       s                          = NULL;
+    char                                 s_numeric[64];
+    GParamSpec *                         pspec;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    if (property_info->property_typ_data) {
+        if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
+            gtype     = property_info->property_typ_data->subtype.gobject_enum.get_gtype();
+            has_gtype = TRUE;
+        }
+    }
+
+    if (property_info->property_typ_data && get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
+        && NM_FLAGS_ANY(property_info->property_typ_data->typ_flags,
+                        NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC
+                            | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC_HEX
+                            | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT
+                            | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT_L10N)) {
+        format_numeric_hex = NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                          NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC_HEX);
+        format_numeric     = format_numeric_hex
+                         || NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                         NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_NUMERIC);
+        format_text_l10n = NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                        NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT_L10N);
+        format_text      = format_text_l10n
+                      || NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                      NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT);
+    } else if (property_info->property_typ_data && get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY
+               && NM_FLAGS_ANY(property_info->property_typ_data->typ_flags,
+                               NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC
+                                   | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC_HEX
+                                   | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT)) {
+        format_numeric_hex = NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                          NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC_HEX);
+        format_numeric     = format_numeric
+                         && NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                         NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_NUMERIC);
+        format_text = NM_FLAGS_HAS(property_info->property_typ_data->typ_flags,
+                                   NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT);
+    } else if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY) {
+        /* by default, output in format "%u (%s)" (with hex for flags and l10n). */
+        format_numeric             = TRUE;
+        format_numeric_hex_unknown = TRUE;
+        format_text                = TRUE;
+        format_text_l10n           = TRUE;
+    } else {
+        /* by default, output only numeric (with hex for flags). */
+        format_numeric             = TRUE;
+        format_numeric_hex_unknown = TRUE;
+    }
+
+    nm_assert(format_text || format_numeric);
+
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(setting), property_info->property_name);
+    g_return_val_if_fail(pspec, NULL);
+
+    g_value_init(&gval, pspec->value_type);
+    g_object_get_property(G_OBJECT(setting), property_info->property_name, &gval);
+    NM_SET_OUT(out_is_default, g_param_value_defaults(pspec, &gval));
+
+    if (pspec->value_type == G_TYPE_INT
+        || (G_TYPE_IS_CLASSED(pspec->value_type)
+            && G_IS_ENUM_CLASS(
+                (gtype_prop_class ?: (gtype_prop_class = g_type_class_ref(pspec->value_type)))))) {
+        if (pspec->value_type == G_TYPE_INT) {
+            if (!has_gtype)
+                g_return_val_if_reached(NULL);
+            v = g_value_get_int(&gval);
+        } else
+            v = g_value_get_enum(&gval);
+    } else if (pspec->value_type == G_TYPE_UINT
+               || (G_TYPE_IS_CLASSED(pspec->value_type)
+                   && G_IS_FLAGS_CLASS(
+                       (gtype_prop_class
+                            ?: (gtype_prop_class = g_type_class_ref(pspec->value_type)))))) {
+        if (pspec->value_type == G_TYPE_UINT) {
+            if (!has_gtype)
+                g_return_val_if_reached(NULL);
+            v = g_value_get_uint(&gval);
+        } else
+            v = g_value_get_flags(&gval);
+    } else
+        g_return_val_if_reached(NULL);
+
+    if (!has_gtype) {
+        gtype       = pspec->value_type;
+        gtype_class = g_steal_pointer(&gtype_prop_class);
+    }
+
+    nm_assert(({
+        nm_auto_unref_gtypeclass GTypeClass *t = NULL;
+
+        (G_TYPE_IS_CLASSED(gtype) && (t = g_type_class_ref(gtype))
+         && (G_IS_ENUM_CLASS(t) || G_IS_FLAGS_CLASS(t)));
+    }));
+
+    if (format_numeric && !format_text) {
+        s = format_numeric_hex
+                    || (format_numeric_hex_unknown
+                        && !G_IS_ENUM_CLASS(gtype_class ?: (gtype_class = g_type_class_ref(gtype))))
+                ? g_strdup_printf("0x%" G_GINT64_MODIFIER "x", v)
+                : g_strdup_printf("%" G_GINT64_FORMAT, v);
+        RETURN_STR_TO_FREE(g_steal_pointer(&s));
+    }
+
+    /* the gobject_enum.value_infos are currently ignored for the getter. They
+     * only declare additional aliases for the setter. */
+
+    if (property_info->property_typ_data)
+        value_infos = property_info->property_typ_data->subtype.gobject_enum.value_infos_get;
+    s = _nm_utils_enum_to_str_full(gtype, (int) v, ", ", value_infos);
+
+    if (!format_numeric)
+        RETURN_STR_TO_FREE(g_steal_pointer(&s));
+
+    if (format_numeric_hex
+        || (format_numeric_hex_unknown
+            && !G_IS_ENUM_CLASS(gtype_class ?: (gtype_class = g_type_class_ref(gtype)))))
+        nm_sprintf_buf(s_numeric, "0x%" G_GINT64_MODIFIER "x", v);
+    else
+        nm_sprintf_buf(s_numeric, "%" G_GINT64_FORMAT, v);
+
+    if (nm_streq0(s, s_numeric))
+        RETURN_STR_TO_FREE(g_steal_pointer(&s));
+
+    if (format_text_l10n)
+        RETURN_STR_TO_FREE(g_strdup_printf(_("%s (%s)"), s_numeric, s));
+    else
+        RETURN_STR_TO_FREE(g_strdup_printf("%s (%s)", s_numeric, s));
 }
 
 /*****************************************************************************/
 
-static gboolean
-_set_fcn_gobject_string (ARGS_SET_FCN)
-{
-	gs_free char *to_free = NULL;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	if (property_info->property_typ_data) {
-		if (property_info->property_typ_data->subtype.gobject_string.handle_emptyunset) {
-			if (   value
-			    && value[0]
-			    && NM_STRCHAR_ALL (value, ch, ch == ' ')) {
-				/* this string property can both be %NULL and empty. To express that, we coerce
-				 * a value of all whitespaces to dropping the first whitespace. That means,
-				 * " " gives "", "  " gives " ", and so on.
-				 *
-				 * This way the user can set the string value to "" (meaning NULL) and to
-				 * " " (meaning ""), and any other string.
-				 *
-				 * This is and non-obvious escaping mechanism. But out of all the possible
-				 * solutions, it seems the most sensible one. */
-				value++;
-			}
-		}
-		if (property_info->property_typ_data->subtype.gobject_string.validate_fcn) {
-			value = property_info->property_typ_data->subtype.gobject_string.validate_fcn (value, &to_free, error);
-			if (!value)
-				return FALSE;
-		} else if (property_info->property_typ_data->values_static) {
-			value = nmc_string_is_valid (value,
-			                             (const char **) property_info->property_typ_data->values_static,
-			                             error);
-			if (!value)
-				return FALSE;
-		}
-	}
-	g_object_set (setting, property_info->property_name, value, NULL);
-	return TRUE;
-}
-
-static gboolean
-_set_fcn_gobject_bool (ARGS_SET_FCN)
-{
-	gboolean val_bool;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	if (!nmc_string_to_bool (value, &val_bool, error))
-		return FALSE;
-
-	g_object_set (setting, property_info->property_name, val_bool, NULL);
-	return TRUE;
-}
-
-static gboolean
-_set_fcn_gobject_int (ARGS_SET_FCN)
-{
-	int errsv;
-	const GParamSpec *pspec;
-	nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
-	gboolean is_uint64;
-	NMMetaSignUnsignInt64 v;
-	gboolean has_minmax = FALSE;
-	NMMetaSignUnsignInt64 min = { 0 };
-	NMMetaSignUnsignInt64 max = { 0 };
-	guint base = 10;
-	const NMMetaUtilsIntValueInfo *value_infos;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), property_info->property_name);
-	if (!G_IS_PARAM_SPEC (pspec))
-		g_return_val_if_reached (FALSE);
-
-	is_uint64 = NM_IN_SET (pspec->value_type, G_TYPE_UINT, G_TYPE_UINT64);
-
-	if (property_info->property_typ_data) {
-		if (   value
-		    && (value_infos = property_info->property_typ_data->subtype.gobject_int.value_infos)) {
-			gs_free char *vv_free = NULL;
-			const char *vv;
-
-			vv = nm_strstrip_avoid_copy_a (300, value, &vv_free);
-			for (; value_infos->nick; value_infos++) {
-				if (nm_streq (value_infos->nick, vv)) {
-					v = value_infos->value;
-					goto have_value_from_nick;
-				}
-			}
-		}
-
-		if (property_info->property_typ_data->subtype.gobject_int.base > 0)
-			base = property_info->property_typ_data->subtype.gobject_int.base;
-
-		if (   (   is_uint64
-		        && (   property_info->property_typ_data->subtype.gobject_int.min.u64
-		            || property_info->property_typ_data->subtype.gobject_int.max.u64))
-		    || (   !is_uint64
-		        && (   property_info->property_typ_data->subtype.gobject_int.min.i64
-		            || property_info->property_typ_data->subtype.gobject_int.max.i64))) {
-			min = property_info->property_typ_data->subtype.gobject_int.min;
-			max = property_info->property_typ_data->subtype.gobject_int.max;
-			has_minmax = TRUE;
-		}
-	}
-
-	if (!has_minmax) {
-		switch (pspec->value_type) {
-		case G_TYPE_INT:
-			{
-				const GParamSpecInt *p = (GParamSpecInt *) pspec;
-
-				min.i64 = p->minimum;
-				max.i64 = p->maximum;
-			}
-			break;
-		case G_TYPE_UINT:
-			{
-				const GParamSpecUInt *p = (GParamSpecUInt *) pspec;
-
-				min.u64 = p->minimum;
-				max.u64 = p->maximum;
-			}
-			break;
-		case G_TYPE_INT64:
-			{
-				const GParamSpecInt64 *p = (GParamSpecInt64 *) pspec;
-
-				min.i64 = p->minimum;
-				max.i64 = p->maximum;
-			}
-			break;
-		case G_TYPE_UINT64:
-			{
-				const GParamSpecUInt64 *p = (GParamSpecUInt64 *) pspec;
-
-				min.u64 = p->minimum;
-				max.u64 = p->maximum;
-			}
-			break;
-		default:
-			g_return_val_if_reached (FALSE);
-		}
-	}
-
-	if (is_uint64)
-		v.u64 = _nm_utils_ascii_str_to_uint64 (value, base, min.u64, max.u64, 0);
-	else
-		v.i64 = _nm_utils_ascii_str_to_int64 (value, base, min.i64, max.i64, 0);
-
-	if ((errsv = errno) != 0) {
-		if (errsv == ERANGE) {
-			if (is_uint64) {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("'%s' is out of range [%"G_GUINT64_FORMAT", %"G_GUINT64_FORMAT"]"),
-				             value, min.u64, max.u64);
-			} else {
-				g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				             _("'%s' is out of range [%"G_GINT64_FORMAT", %"G_GINT64_FORMAT"]"),
-				             value, min.i64, max.i64);
-			}
-		} else {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("'%s' is not a valid number"), value);
-		}
-		return FALSE;
-	}
+static gboolean _set_fcn_gobject_string(ARGS_SET_FCN)
+{
+    gs_free char *to_free = NULL;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    if (property_info->property_typ_data) {
+        if (property_info->property_typ_data->subtype.gobject_string.handle_emptyunset) {
+            if (value && value[0] && NM_STRCHAR_ALL(value, ch, ch == ' ')) {
+                /* this string property can both be %NULL and empty. To express that, we coerce
+                 * a value of all whitespaces to dropping the first whitespace. That means,
+                 * " " gives "", "  " gives " ", and so on.
+                 *
+                 * This way the user can set the string value to "" (meaning NULL) and to
+                 * " " (meaning ""), and any other string.
+                 *
+                 * This is and non-obvious escaping mechanism. But out of all the possible
+                 * solutions, it seems the most sensible one. */
+                value++;
+            }
+        }
+        if (property_info->property_typ_data->subtype.gobject_string.validate_fcn) {
+            value = property_info->property_typ_data->subtype.gobject_string.validate_fcn(value,
+                                                                                          &to_free,
+                                                                                          error);
+            if (!value)
+                return FALSE;
+        } else if (property_info->property_typ_data->values_static) {
+            value =
+                nmc_string_is_valid(value,
+                                    (const char **) property_info->property_typ_data->values_static,
+                                    error);
+            if (!value)
+                return FALSE;
+        }
+    }
+    g_object_set(setting, property_info->property_name, value, NULL);
+    return TRUE;
+}
+
+static gboolean _set_fcn_gobject_bool(ARGS_SET_FCN)
+{
+    gboolean val_bool;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    if (!nmc_string_to_bool(value, &val_bool, error))
+        return FALSE;
+
+    g_object_set(setting, property_info->property_name, val_bool, NULL);
+    return TRUE;
+}
+
+static gboolean _set_fcn_gobject_int(ARGS_SET_FCN)
+{
+    int                            errsv;
+    const GParamSpec *             pspec;
+    nm_auto_unset_gvalue GValue    gval = G_VALUE_INIT;
+    gboolean                       is_uint64;
+    NMMetaSignUnsignInt64          v;
+    gboolean                       has_minmax = FALSE;
+    NMMetaSignUnsignInt64          min        = {0};
+    NMMetaSignUnsignInt64          max        = {0};
+    guint                          base       = 10;
+    const NMMetaUtilsIntValueInfo *value_infos;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(setting)),
+                                         property_info->property_name);
+    if (!G_IS_PARAM_SPEC(pspec))
+        g_return_val_if_reached(FALSE);
+
+    is_uint64 = NM_IN_SET(pspec->value_type, G_TYPE_UINT, G_TYPE_UINT64);
+
+    if (property_info->property_typ_data) {
+        if (value
+            && (value_infos = property_info->property_typ_data->subtype.gobject_int.value_infos)) {
+            gs_free char *vv_free = NULL;
+            const char *  vv;
+
+            vv = nm_strstrip_avoid_copy_a(300, value, &vv_free);
+            for (; value_infos->nick; value_infos++) {
+                if (nm_streq(value_infos->nick, vv)) {
+                    v = value_infos->value;
+                    goto have_value_from_nick;
+                }
+            }
+        }
+
+        if (property_info->property_typ_data->subtype.gobject_int.base > 0)
+            base = property_info->property_typ_data->subtype.gobject_int.base;
+
+        if ((is_uint64
+             && (property_info->property_typ_data->subtype.gobject_int.min.u64
+                 || property_info->property_typ_data->subtype.gobject_int.max.u64))
+            || (!is_uint64
+                && (property_info->property_typ_data->subtype.gobject_int.min.i64
+                    || property_info->property_typ_data->subtype.gobject_int.max.i64))) {
+            min        = property_info->property_typ_data->subtype.gobject_int.min;
+            max        = property_info->property_typ_data->subtype.gobject_int.max;
+            has_minmax = TRUE;
+        }
+    }
+
+    if (!has_minmax) {
+        switch (pspec->value_type) {
+        case G_TYPE_INT:
+        {
+            const GParamSpecInt *p = (GParamSpecInt *) pspec;
+
+            min.i64 = p->minimum;
+            max.i64 = p->maximum;
+        } break;
+        case G_TYPE_UINT:
+        {
+            const GParamSpecUInt *p = (GParamSpecUInt *) pspec;
+
+            min.u64 = p->minimum;
+            max.u64 = p->maximum;
+        } break;
+        case G_TYPE_INT64:
+        {
+            const GParamSpecInt64 *p = (GParamSpecInt64 *) pspec;
+
+            min.i64 = p->minimum;
+            max.i64 = p->maximum;
+        } break;
+        case G_TYPE_UINT64:
+        {
+            const GParamSpecUInt64 *p = (GParamSpecUInt64 *) pspec;
+
+            min.u64 = p->minimum;
+            max.u64 = p->maximum;
+        } break;
+        default:
+            g_return_val_if_reached(FALSE);
+        }
+    }
+
+    if (is_uint64)
+        v.u64 = _nm_utils_ascii_str_to_uint64(value, base, min.u64, max.u64, 0);
+    else
+        v.i64 = _nm_utils_ascii_str_to_int64(value, base, min.i64, max.i64, 0);
+
+    if ((errsv = errno) != 0) {
+        if (errsv == ERANGE) {
+            if (is_uint64) {
+                g_set_error(
+                    error,
+                    NM_UTILS_ERROR,
+                    NM_UTILS_ERROR_INVALID_ARGUMENT,
+                    _("'%s' is out of range [%" G_GUINT64_FORMAT ", %" G_GUINT64_FORMAT "]"),
+                    value,
+                    min.u64,
+                    max.u64);
+            } else {
+                g_set_error(error,
+                            NM_UTILS_ERROR,
+                            NM_UTILS_ERROR_INVALID_ARGUMENT,
+                            _("'%s' is out of range [%" G_GINT64_FORMAT ", %" G_GINT64_FORMAT "]"),
+                            value,
+                            min.i64,
+                            max.i64);
+            }
+        } else {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("'%s' is not a valid number"),
+                        value);
+        }
+        return FALSE;
+    }
 
 have_value_from_nick:
 
-	g_value_init (&gval, pspec->value_type);
-	switch (pspec->value_type) {
-	case G_TYPE_INT:
-		g_value_set_int (&gval, v.i64);
-		break;
-	case G_TYPE_UINT:
-		g_value_set_uint (&gval, v.u64);
-		break;
-	case G_TYPE_INT64:
-		g_value_set_int64 (&gval, v.i64);
-		break;
-	case G_TYPE_UINT64:
-		g_value_set_uint64 (&gval, v.u64);
-		break;
-	default:
-		g_return_val_if_reached (FALSE);
-		break;
-	}
-
-	/* Validate the number according to the property spec */
-	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
-_set_fcn_gobject_mtu (ARGS_SET_FCN)
-{
-	nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
-	const GParamSpec *pspec;
-	gint64 v;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	if (nm_streq (value, "auto"))
-		value = "0";
-
-	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;
+    g_value_init(&gval, pspec->value_type);
+    switch (pspec->value_type) {
+    case G_TYPE_INT:
+        g_value_set_int(&gval, v.i64);
+        break;
+    case G_TYPE_UINT:
+        g_value_set_uint(&gval, v.u64);
+        break;
+    case G_TYPE_INT64:
+        g_value_set_int64(&gval, v.i64);
+        break;
+    case G_TYPE_UINT64:
+        g_value_set_uint64(&gval, v.u64);
+        break;
+    default:
+        g_return_val_if_reached(FALSE);
+        break;
+    }
+
+    /* Validate the number according to the property spec */
+    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 _set_fcn_gobject_mtu(ARGS_SET_FCN)
+{
+    nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
+    const GParamSpec *          pspec;
+    gint64                      v;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    if (nm_streq(value, "auto"))
+        value = "0";
+
+    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;
 }
 
 /* Ideally we'll be able to get this from a public header. */
 #ifndef IEEE802154_ADDR_LEN
-#define IEEE802154_ADDR_LEN 8
+    #define IEEE802154_ADDR_LEN 8
 #endif
 
-static gboolean
-_set_fcn_gobject_mac (ARGS_SET_FCN)
-{
-	NMMetaPropertyTypeMacMode mode;
-	gboolean valid;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	if (property_info->property_typ_data)
-		mode = property_info->property_typ_data->subtype.mac.mode;
-	else
-		mode = NM_META_PROPERTY_TYPE_MAC_MODE_DEFAULT;
-
-	if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND) {
-		valid = nm_utils_hwaddr_valid (value, INFINIBAND_ALEN);
-	} else if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_WPAN) {
-		valid = nm_utils_hwaddr_valid (value, IEEE802154_ADDR_LEN);
-	} else {
-		valid =    nm_utils_hwaddr_valid (value, ETH_ALEN)
-		        || (   mode == NM_META_PROPERTY_TYPE_MAC_MODE_CLONED
-		            && NM_CLONED_MAC_IS_SPECIAL (value));
-	}
-
-	if (!valid) {
-		g_set_error (error, 1, 0, _("'%s' is not a valid Ethernet MAC"), value);
-		return FALSE;
-	}
-
-	g_object_set (setting, property_info->property_name, value, NULL);
-	return TRUE;
-}
-
-static gboolean
-_set_fcn_gobject_enum (ARGS_SET_FCN)
-{
-	GType gtype = 0;
-	GType gtype_prop;
-	gboolean has_gtype = FALSE;
-	nm_auto_unset_gvalue GValue gval = G_VALUE_INIT;
-	nm_auto_unref_gtypeclass GTypeClass *gtype_prop_class = NULL;
-	nm_auto_unref_gtypeclass GTypeClass *gtype_class = NULL;
-	gboolean is_flags;
-	int v;
-
-	if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	if (property_info->property_typ_data) {
-		if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
-			gtype = property_info->property_typ_data->subtype.gobject_enum.get_gtype ();
-			has_gtype = TRUE;
-		}
-	}
-
-	gtype_prop = _gobject_property_get_gtype (G_OBJECT (setting), property_info->property_name);
-
-	if (   has_gtype
-	    && NM_IN_SET (gtype_prop,
-	                  G_TYPE_INT,
-	                  G_TYPE_UINT)
-	    && G_TYPE_IS_CLASSED (gtype)
-	    && (gtype_prop_class = g_type_class_ref (gtype))
-	    && (   (is_flags = G_IS_FLAGS_CLASS (gtype_prop_class))
-	        || G_IS_ENUM_CLASS (gtype_prop_class))) {
-		/* valid */
-	} else if (   !has_gtype
-	           && G_TYPE_IS_CLASSED (gtype_prop)
-	           && (gtype_prop_class = g_type_class_ref (gtype_prop))
-	           && (   (is_flags = G_IS_FLAGS_CLASS (gtype_prop_class))
-	               || G_IS_ENUM_CLASS (gtype_prop_class))) {
-		gtype = gtype_prop;
-	} else
-		g_return_val_if_reached (FALSE);
-
-	if (!_nm_utils_enum_from_str_full (gtype, value, &v, NULL,
-	                                   property_info->property_typ_data
-	                                       ? property_info->property_typ_data->subtype.gobject_enum.value_infos
-	                                       : NULL))
-		goto fail;
-
-	if (   property_info->property_typ_data
-	    && property_info->property_typ_data->subtype.gobject_enum.pre_set_notify) {
-		property_info->property_typ_data->subtype.gobject_enum.pre_set_notify (property_info,
-		                                                                       environment,
-		                                                                       environment_user_data,
-		                                                                       setting,
-		                                                                       v);
-	}
-
-	gtype_class = g_type_class_ref (gtype);
-
-	if (   G_IS_FLAGS_CLASS (gtype_class)
-	    && !_SET_FCN_DO_SET_ALL (modifier, value)) {
-		nm_auto_unset_gvalue GValue int_value = { };
-		guint v_flag;
-
-		g_value_init (&int_value, G_TYPE_UINT);
-		g_object_get_property (G_OBJECT (setting), property_info->property_name, &int_value);
-		v_flag = g_value_get_uint (&int_value);
-
-		if (_SET_FCN_DO_REMOVE (modifier, value))
-			v = (int) (v_flag & ~((guint) v));
-		else
-			v = (int) (v_flag | ((guint) v));
-	}
-
-	g_value_init (&gval, gtype_prop);
-	if (gtype_prop == G_TYPE_INT)
-		g_value_set_int (&gval, v);
-	else if (gtype_prop == G_TYPE_UINT)
-		g_value_set_uint (&gval, v);
-	else if (is_flags) {
-		nm_assert (G_IS_FLAGS_CLASS (gtype_prop_class));
-		g_value_set_flags (&gval, v);
-	} else {
-		nm_assert (G_IS_ENUM_CLASS (gtype_prop_class));
-		g_value_set_enum (&gval, v);
-	}
-
-	if (!nm_g_object_set_property (G_OBJECT (setting), property_info->property_name, &gval, NULL))
-		goto fail;
-
-	return TRUE;
+static gboolean _set_fcn_gobject_mac(ARGS_SET_FCN)
+{
+    NMMetaPropertyTypeMacMode mode;
+    gboolean                  valid;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    if (property_info->property_typ_data)
+        mode = property_info->property_typ_data->subtype.mac.mode;
+    else
+        mode = NM_META_PROPERTY_TYPE_MAC_MODE_DEFAULT;
+
+    if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND) {
+        valid = nm_utils_hwaddr_valid(value, INFINIBAND_ALEN);
+    } else if (mode == NM_META_PROPERTY_TYPE_MAC_MODE_WPAN) {
+        valid = nm_utils_hwaddr_valid(value, IEEE802154_ADDR_LEN);
+    } else {
+        valid =
+            nm_utils_hwaddr_valid(value, ETH_ALEN)
+            || (mode == NM_META_PROPERTY_TYPE_MAC_MODE_CLONED && NM_CLONED_MAC_IS_SPECIAL(value));
+    }
+
+    if (!valid) {
+        g_set_error(error, 1, 0, _("'%s' is not a valid Ethernet MAC"), value);
+        return FALSE;
+    }
+
+    g_object_set(setting, property_info->property_name, value, NULL);
+    return TRUE;
+}
+
+static gboolean _set_fcn_gobject_enum(ARGS_SET_FCN)
+{
+    GType                       gtype = 0;
+    GType                       gtype_prop;
+    gboolean                    has_gtype                 = FALSE;
+    nm_auto_unset_gvalue GValue gval                      = G_VALUE_INIT;
+    nm_auto_unref_gtypeclass GTypeClass *gtype_prop_class = NULL;
+    nm_auto_unref_gtypeclass GTypeClass *gtype_class      = NULL;
+    gboolean                             is_flags;
+    int                                  v;
+
+    if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    if (property_info->property_typ_data) {
+        if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
+            gtype     = property_info->property_typ_data->subtype.gobject_enum.get_gtype();
+            has_gtype = TRUE;
+        }
+    }
+
+    gtype_prop = _gobject_property_get_gtype(G_OBJECT(setting), property_info->property_name);
+
+    if (has_gtype && NM_IN_SET(gtype_prop, G_TYPE_INT, G_TYPE_UINT) && G_TYPE_IS_CLASSED(gtype)
+        && (gtype_prop_class = g_type_class_ref(gtype))
+        && ((is_flags = G_IS_FLAGS_CLASS(gtype_prop_class)) || G_IS_ENUM_CLASS(gtype_prop_class))) {
+        /* valid */
+    } else if (!has_gtype && G_TYPE_IS_CLASSED(gtype_prop)
+               && (gtype_prop_class = g_type_class_ref(gtype_prop))
+               && ((is_flags = G_IS_FLAGS_CLASS(gtype_prop_class))
+                   || G_IS_ENUM_CLASS(gtype_prop_class))) {
+        gtype = gtype_prop;
+    } else
+        g_return_val_if_reached(FALSE);
+
+    if (!_nm_utils_enum_from_str_full(
+            gtype,
+            value,
+            &v,
+            NULL,
+            property_info->property_typ_data
+                ? property_info->property_typ_data->subtype.gobject_enum.value_infos
+                : NULL))
+        goto fail;
+
+    if (property_info->property_typ_data
+        && property_info->property_typ_data->subtype.gobject_enum.pre_set_notify) {
+        property_info->property_typ_data->subtype.gobject_enum.pre_set_notify(property_info,
+                                                                              environment,
+                                                                              environment_user_data,
+                                                                              setting,
+                                                                              v);
+    }
+
+    gtype_class = g_type_class_ref(gtype);
+
+    if (G_IS_FLAGS_CLASS(gtype_class) && !_SET_FCN_DO_SET_ALL(modifier, value)) {
+        nm_auto_unset_gvalue GValue int_value = {};
+        guint                       v_flag;
+
+        g_value_init(&int_value, G_TYPE_UINT);
+        g_object_get_property(G_OBJECT(setting), property_info->property_name, &int_value);
+        v_flag = g_value_get_uint(&int_value);
+
+        if (_SET_FCN_DO_REMOVE(modifier, value))
+            v = (int) (v_flag & ~((guint) v));
+        else
+            v = (int) (v_flag | ((guint) v));
+    }
+
+    g_value_init(&gval, gtype_prop);
+    if (gtype_prop == G_TYPE_INT)
+        g_value_set_int(&gval, v);
+    else if (gtype_prop == G_TYPE_UINT)
+        g_value_set_uint(&gval, v);
+    else if (is_flags) {
+        nm_assert(G_IS_FLAGS_CLASS(gtype_prop_class));
+        g_value_set_flags(&gval, v);
+    } else {
+        nm_assert(G_IS_ENUM_CLASS(gtype_prop_class));
+        g_value_set_enum(&gval, v);
+    }
+
+    if (!nm_g_object_set_property(G_OBJECT(setting), property_info->property_name, &gval, NULL))
+        goto fail;
+
+    return TRUE;
 
 fail:
-	if (error) {
-		gs_free const char **valid_all = NULL;
-		gs_free const char *valid_str = NULL;
-		gboolean has_minmax = FALSE;
-		int min = G_MININT;
-		int max = G_MAXINT;
-
-		if (property_info->property_typ_data) {
-			if (   property_info->property_typ_data->subtype.gobject_enum.min
-			    || property_info->property_typ_data->subtype.gobject_enum.max) {
-				min = property_info->property_typ_data->subtype.gobject_enum.min;
-				max = property_info->property_typ_data->subtype.gobject_enum.max;
-				has_minmax = TRUE;
-			}
-		}
-
-		if (!has_minmax && is_flags) {
-			min = 0;
-			max = (int) G_MAXUINT;
-		}
-
-		valid_all = nm_utils_enum_get_values (gtype, min, max);
-		valid_str = g_strjoinv (",", (char **) valid_all);
-		if (is_flags) {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("invalid option '%s', use a combination of [%s]"),
-			             value,
-			             valid_str);
-		} else {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("invalid option '%s', use one of [%s]"),
-			             value,
-			             valid_str);
-		}
-	}
-	return FALSE;
+    if (error) {
+        gs_free const char **valid_all  = NULL;
+        gs_free const char * valid_str  = NULL;
+        gboolean             has_minmax = FALSE;
+        int                  min        = G_MININT;
+        int                  max        = G_MAXINT;
+
+        if (property_info->property_typ_data) {
+            if (property_info->property_typ_data->subtype.gobject_enum.min
+                || property_info->property_typ_data->subtype.gobject_enum.max) {
+                min        = property_info->property_typ_data->subtype.gobject_enum.min;
+                max        = property_info->property_typ_data->subtype.gobject_enum.max;
+                has_minmax = TRUE;
+            }
+        }
+
+        if (!has_minmax && is_flags) {
+            min = 0;
+            max = (int) G_MAXUINT;
+        }
+
+        valid_all = nm_utils_enum_get_values(gtype, min, max);
+        valid_str = g_strjoinv(",", (char **) valid_all);
+        if (is_flags) {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("invalid option '%s', use a combination of [%s]"),
+                        value,
+                        valid_str);
+        } else {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("invalid option '%s', use one of [%s]"),
+                        value,
+                        valid_str);
+        }
+    }
+    return FALSE;
 }
 
 /*****************************************************************************/
 
-static const char *const*
-_values_fcn_gobject_enum (ARGS_VALUES_FCN)
-{
-	GType gtype = 0;
-	gboolean has_gtype = FALSE;
-	gboolean has_minmax = FALSE;
-	int min = G_MININT;
-	int max = G_MAXINT;
-	char **v;
-
-	if (property_info->property_typ_data) {
-		if (   property_info->property_typ_data->subtype.gobject_enum.min
-		    || property_info->property_typ_data->subtype.gobject_enum.max) {
-			min = property_info->property_typ_data->subtype.gobject_enum.min;
-			max = property_info->property_typ_data->subtype.gobject_enum.max;
-			has_minmax = TRUE;
-		}
-		if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
-			gtype = property_info->property_typ_data->subtype.gobject_enum.get_gtype ();
-			has_gtype = TRUE;
-		}
-	}
-
-	if (!has_gtype) {
-		gtype = _gtype_property_get_gtype (property_info->setting_info->general->get_setting_gtype (),
-		                                   property_info->property_name);
-	}
-
-	if (   !has_minmax
-	    && G_TYPE_IS_CLASSED (gtype)) {
-		nm_auto_unref_gtypeclass GTypeClass *class = NULL;
-
-		class = g_type_class_ref (gtype);
-		if (G_IS_FLAGS_CLASS (class)) {
-			min = 0;
-			max = (int) G_MAXUINT;
-		}
-	}
-
-	/* the gobject_enum.value_infos are currently ignored for the list of
-	 * values. They only declare additional (hidden) aliases for the setter. */
-
-	v = nm_utils_strv_make_deep_copied (nm_utils_enum_get_values (gtype, min, max));
-	return (const char *const*) (*out_to_free = v);
+static const char *const *_values_fcn_gobject_enum(ARGS_VALUES_FCN)
+{
+    GType    gtype      = 0;
+    gboolean has_gtype  = FALSE;
+    gboolean has_minmax = FALSE;
+    int      min        = G_MININT;
+    int      max        = G_MAXINT;
+    char **  v;
+
+    if (property_info->property_typ_data) {
+        if (property_info->property_typ_data->subtype.gobject_enum.min
+            || property_info->property_typ_data->subtype.gobject_enum.max) {
+            min        = property_info->property_typ_data->subtype.gobject_enum.min;
+            max        = property_info->property_typ_data->subtype.gobject_enum.max;
+            has_minmax = TRUE;
+        }
+        if (property_info->property_typ_data->subtype.gobject_enum.get_gtype) {
+            gtype     = property_info->property_typ_data->subtype.gobject_enum.get_gtype();
+            has_gtype = TRUE;
+        }
+    }
+
+    if (!has_gtype) {
+        gtype = _gtype_property_get_gtype(property_info->setting_info->general->get_setting_gtype(),
+                                          property_info->property_name);
+    }
+
+    if (!has_minmax && G_TYPE_IS_CLASSED(gtype)) {
+        nm_auto_unref_gtypeclass GTypeClass *class = NULL;
+
+        class = g_type_class_ref(gtype);
+        if (G_IS_FLAGS_CLASS(class)) {
+            min = 0;
+            max = (int) G_MAXUINT;
+        }
+    }
+
+    /* the gobject_enum.value_infos are currently ignored for the list of
+     * values. They only declare additional (hidden) aliases for the setter. */
+
+    v = nm_utils_strv_make_deep_copied(nm_utils_enum_get_values(gtype, min, max));
+    return (const char *const *) (*out_to_free = v);
 }
 
 /*****************************************************************************/
 
-static const char *const*
-_complete_fcn_gobject_bool (ARGS_COMPLETE_FCN)
+static const char *const *_complete_fcn_gobject_bool(ARGS_COMPLETE_FCN)
 {
-	static const char *const v[] = {
-		"true",
-		"false",
-		"on",
-		"off",
-		"1",
-		"0",
-		"yes",
-		"no",
-		NULL,
-	};
+    static const char *const v[] = {
+        "true",
+        "false",
+        "on",
+        "off",
+        "1",
+        "0",
+        "yes",
+        "no",
+        NULL,
+    };
 
-	if (!text || !text[0])
-		return &v[6];
-	return v;
+    if (!text || !text[0])
+        return &v[6];
+    return v;
 }
 
-static const char *const*
-_complete_fcn_gobject_devices (ARGS_COMPLETE_FCN)
+static const char *const *_complete_fcn_gobject_devices(ARGS_COMPLETE_FCN)
 {
-	NMDevice *const*devices = NULL;
-	guint i, j;
-	guint len = 0;
-	char **ifnames;
+    NMDevice *const *devices = NULL;
+    guint            i, j;
+    guint            len = 0;
+    char **          ifnames;
 
-	if (   environment
-	    && environment->get_nm_devices) {
-		devices = environment->get_nm_devices (environment,
-		                                       environment_user_data,
-		                                       &len);
-	}
+    if (environment && environment->get_nm_devices) {
+        devices = environment->get_nm_devices(environment, environment_user_data, &len);
+    }
 
-	if (len == 0)
-		return NULL;
+    if (len == 0)
+        return NULL;
 
-	ifnames = g_new (char *, len + 1);
-	for (i = 0, j = 0; i < len; i++) {
-		const char *ifname;
+    ifnames = g_new(char *, len + 1);
+    for (i = 0, j = 0; i < len; i++) {
+        const char *ifname;
 
-		nm_assert (NM_IS_DEVICE (devices[i]));
+        nm_assert(NM_IS_DEVICE(devices[i]));
 
-		ifname = nm_device_get_iface (devices[i]);
-		if (ifname)
-			ifnames[j++] = g_strdup (ifname);
-	}
-	ifnames[j++] = NULL;
+        ifname = nm_device_get_iface(devices[i]);
+        if (ifname)
+            ifnames[j++] = g_strdup(ifname);
+    }
+    ifnames[j++] = NULL;
 
-	*out_to_free = ifnames;
-	return (const char *const*) ifnames;
+    *out_to_free = ifnames;
+    return (const char *const *) ifnames;
 }
 
 /*****************************************************************************/
 
 static char *
-wep_key_type_to_string (NMWepKeyType type)
+wep_key_type_to_string(NMWepKeyType type)
 {
-	switch (type) {
-	case NM_WEP_KEY_TYPE_KEY:
-		return g_strdup_printf (_("%d (key)"), type);
-	case NM_WEP_KEY_TYPE_PASSPHRASE:
-		return g_strdup_printf (_("%d (passphrase)"), type);
-	case NM_WEP_KEY_TYPE_UNKNOWN:
-	default:
-		return g_strdup_printf (_("%d (unknown)"), type);
-	}
+    switch (type) {
+    case NM_WEP_KEY_TYPE_KEY:
+        return g_strdup_printf(_("%d (key)"), type);
+    case NM_WEP_KEY_TYPE_PASSPHRASE:
+        return g_strdup_printf(_("%d (passphrase)"), type);
+    case NM_WEP_KEY_TYPE_UNKNOWN:
+    default:
+        return g_strdup_printf(_("%d (unknown)"), type);
+    }
 }
 
 static char *
-vlan_flags_to_string (guint32 flags, NMMetaAccessorGetType get_type)
+vlan_flags_to_string(guint32 flags, NMMetaAccessorGetType get_type)
 {
-	GString *flag_str;
+    GString *flag_str;
 
-	if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
-		return g_strdup_printf ("%u", flags);
+    if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
+        return g_strdup_printf("%u", flags);
 
-	if (flags == 0)
-		return g_strdup (_("0 (NONE)"));
+    if (flags == 0)
+        return g_strdup(_("0 (NONE)"));
 
-	flag_str = g_string_new (NULL);
-	g_string_printf (flag_str, "%d (", flags);
+    flag_str = g_string_new(NULL);
+    g_string_printf(flag_str, "%d (", flags);
 
-	if (flags & NM_VLAN_FLAG_REORDER_HEADERS)
-		g_string_append (flag_str, _("REORDER_HEADERS, "));
-	if (flags & NM_VLAN_FLAG_GVRP)
-		g_string_append (flag_str, _("GVRP, "));
-	if (flags & NM_VLAN_FLAG_LOOSE_BINDING)
-		g_string_append (flag_str, _("LOOSE_BINDING, "));
-	if (flags & NM_VLAN_FLAG_MVRP)
-		g_string_append (flag_str, _("MVRP, "));
+    if (flags & NM_VLAN_FLAG_REORDER_HEADERS)
+        g_string_append(flag_str, _("REORDER_HEADERS, "));
+    if (flags & NM_VLAN_FLAG_GVRP)
+        g_string_append(flag_str, _("GVRP, "));
+    if (flags & NM_VLAN_FLAG_LOOSE_BINDING)
+        g_string_append(flag_str, _("LOOSE_BINDING, "));
+    if (flags & NM_VLAN_FLAG_MVRP)
+        g_string_append(flag_str, _("MVRP, "));
 
-	if (flag_str->str[flag_str->len-1] == '(')
-		g_string_append (flag_str, _("unknown"));
-	else
-		g_string_truncate (flag_str, flag_str->len-2);  /* chop off trailing ', ' */
+    if (flag_str->str[flag_str->len - 1] == '(')
+        g_string_append(flag_str, _("unknown"));
+    else
+        g_string_truncate(flag_str, flag_str->len - 2); /* chop off trailing ', ' */
 
-	g_string_append_c (flag_str, ')');
+    g_string_append_c(flag_str, ')');
 
-	return g_string_free (flag_str, FALSE);
+    return g_string_free(flag_str, FALSE);
 }
 
 static char *
-secret_flags_to_string (guint32 flags, NMMetaAccessorGetType get_type)
+secret_flags_to_string(guint32 flags, NMMetaAccessorGetType get_type)
 {
-	GString *flag_str;
+    GString *flag_str;
 
-	if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
-		return g_strdup_printf ("%u", flags);
+    if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
+        return g_strdup_printf("%u", flags);
 
-	if (flags == 0)
-		return g_strdup (_("0 (none)"));
+    if (flags == 0)
+        return g_strdup(_("0 (none)"));
 
-	flag_str = g_string_new (NULL);
-	g_string_printf (flag_str, "%u (", flags);
+    flag_str = g_string_new(NULL);
+    g_string_printf(flag_str, "%u (", flags);
 
-	if (flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED)
-		g_string_append (flag_str, _("agent-owned, "));
-	if (flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
-		g_string_append (flag_str, _("not saved, "));
-	if (flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
-		g_string_append (flag_str, _("not required, "));
+    if (flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED)
+        g_string_append(flag_str, _("agent-owned, "));
+    if (flags & NM_SETTING_SECRET_FLAG_NOT_SAVED)
+        g_string_append(flag_str, _("not saved, "));
+    if (flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
+        g_string_append(flag_str, _("not required, "));
 
-	if (flag_str->str[flag_str->len-1] == '(')
-		g_string_append (flag_str, _("unknown"));
-	else
-		g_string_truncate (flag_str, flag_str->len-2);  /* chop off trailing ', ' */
+    if (flag_str->str[flag_str->len - 1] == '(')
+        g_string_append(flag_str, _("unknown"));
+    else
+        g_string_truncate(flag_str, flag_str->len - 2); /* chop off trailing ', ' */
 
-	g_string_append_c (flag_str, ')');
+    g_string_append_c(flag_str, ')');
 
-	return g_string_free (flag_str, FALSE);
+    return g_string_free(flag_str, FALSE);
 }
 
 static const char *
-_multilist_do_validate (const NMMetaPropertyInfo *property_info,
-                        NMSetting *setting,
-                        const char *item,
-                        GError **error)
-{
-	if (property_info->property_typ_data->values_static) {
-		nm_assert (!property_info->property_typ_data->subtype.multilist.validate_fcn);
-		return nmc_string_is_valid (item,
-		                            (const char **) property_info->property_typ_data->values_static,
-		                            error);
-	}
-	if (property_info->property_typ_data->subtype.multilist.validate_fcn) {
-		return property_info->property_typ_data->subtype.multilist.validate_fcn (item,
-		                                                                         error);
-	}
-	if (property_info->property_typ_data->subtype.multilist.validate2_fcn) {
-		return property_info->property_typ_data->subtype.multilist.validate2_fcn (setting,
-		                                                                          item,
-		                                                                          error);
-	}
-
-	return item;
-}
-
-static gconstpointer
-_get_fcn_multilist (ARGS_GET_FCN)
-{
-	return _get_fcn_gobject_impl (property_info,
-	                              setting,
-	                              get_type,
-	                              property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn != NULL,
-	                              out_is_default,
-	                              out_to_free);
+_multilist_do_validate(const NMMetaPropertyInfo *property_info,
+                       NMSetting *               setting,
+                       const char *              item,
+                       GError **                 error)
+{
+    if (property_info->property_typ_data->values_static) {
+        nm_assert(!property_info->property_typ_data->subtype.multilist.validate_fcn);
+        return nmc_string_is_valid(item,
+                                   (const char **) property_info->property_typ_data->values_static,
+                                   error);
+    }
+    if (property_info->property_typ_data->subtype.multilist.validate_fcn) {
+        return property_info->property_typ_data->subtype.multilist.validate_fcn(item, error);
+    }
+    if (property_info->property_typ_data->subtype.multilist.validate2_fcn) {
+        return property_info->property_typ_data->subtype.multilist.validate2_fcn(setting,
+                                                                                 item,
+                                                                                 error);
+    }
+
+    return item;
+}
+
+static gconstpointer _get_fcn_multilist(ARGS_GET_FCN)
+{
+    return _get_fcn_gobject_impl(
+        property_info,
+        setting,
+        get_type,
+        property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn != NULL,
+        out_is_default,
+        out_to_free);
 }
 
 static gboolean
-_multilist_clear_property (const NMMetaPropertyInfo *property_info,
-                           NMSetting *setting,
-                           gboolean is_set /* or else set default */)
-{
-	if (property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn) {
-		property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn (setting, is_set);
-		return TRUE;
-	}
-	if (property_info->property_typ_data->subtype.multilist.clear_all_fcn) {
-		property_info->property_typ_data->subtype.multilist.clear_all_fcn (setting);
-		return TRUE;
-	}
-	return _gobject_property_reset (setting, property_info->property_name, FALSE);
-}
-
-static gboolean
-_set_fcn_multilist (ARGS_SET_FCN)
-{
-	gs_free const char **strv = NULL;
-	gsize i, j, nstrv;
-
-	if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (property_info, modifier, value))
-		return _multilist_clear_property (property_info, setting, FALSE);
-
-	if (   _SET_FCN_DO_REMOVE (modifier, value)
-	    && (   property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32
-	        || property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s
-	        || property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u)) {
-		gs_free gint64 *indexes = NULL;
-
-		indexes = _value_str_as_index_list (value, &nstrv);
-		if (indexes) {
-			gint64 num;
-
-			if (property_info->property_typ_data->subtype.multilist.get_num_fcn_u32)
-				num = property_info->property_typ_data->subtype.multilist.get_num_fcn_u32 (setting);
-			else
-				num = property_info->property_typ_data->subtype.multilist.get_num_fcn_u (setting);
-			for (i = 0; i < nstrv; i++) {
-				gint64 idx = indexes[i];
-
-				if (idx >= num)
-					continue;
-
-				if (property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32)
-					property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32 (setting, idx);
-				else if (property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s)
-					property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s (setting, idx);
-				else
-					property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u (setting, idx);
-			}
-			return TRUE;
-		}
-	}
-
-	if (   _SET_FCN_DO_SET_ALL (modifier, value)
-	    && property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn
-	    && value[0] == '\0')
-		return _multilist_clear_property (property_info, setting, FALSE);
-
-	strv = _value_strsplit (value,
-	                          property_info->property_typ_data->subtype.multilist.strsplit_plain
-	                        ? VALUE_STRSPLIT_MODE_MULTILIST
-	                        : (  property_info->property_typ_data->subtype.multilist.strsplit_with_spaces
-	                           ? VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES
-	                           : VALUE_STRSPLIT_MODE_ESCAPED_TOKENS),
-	                        &nstrv);
-
-	j = 0;
-	for (i = 0; i < nstrv; i++) {
-		const char *item = strv[i];
-
-		item = _multilist_do_validate (property_info,
-		                               setting,
-		                               item,
-		                               error);
-		if (!item)
-			return FALSE;
-		strv[j++] = item;
-	}
-	nstrv = j;
-
-	if (_SET_FCN_DO_SET_ALL (modifier, value))
-		_multilist_clear_property (property_info, setting, TRUE);
-	else if (   property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn
-	         && _is_default (property_info, setting)) {
-		/* the property is already the default. But we hav here a '+' / '-' modifier, so
-		 * that always makes it non-default (empty) first. */
-		_multilist_clear_property (property_info, setting, TRUE);
-	}
-
-	for (i = 0; i < nstrv; i++) {
-		if (_SET_FCN_DO_REMOVE (modifier, value)) {
-			property_info->property_typ_data->subtype.multilist.remove_by_value_fcn (setting,
-			                                                                         strv[i]);
-		} else {
-			if (property_info->property_typ_data->subtype.multilist.add2_fcn)
-				property_info->property_typ_data->subtype.multilist.add2_fcn (setting, strv[i]);
-			else
-				property_info->property_typ_data->subtype.multilist.add_fcn (setting, strv[i]);
-		}
-	}
-	return TRUE;
-}
-
-static gboolean
-_set_fcn_optionlist (ARGS_SET_FCN)
-{
-	gs_free const char **strv = NULL;
-	gs_free const char **strv_val = NULL;
-	gsize strv_len;
-	gsize i, nstrv;
-
-	nm_assert (!error || !*error);
-
-	if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	nstrv = 0;
-	strv = nm_utils_escaped_tokens_options_split_list (value);
-	if (strv) {
-		strv_len = NM_PTRARRAY_LEN (strv);
-
-		strv_val = g_new (const char *, strv_len);
-		for (i = 0; strv[i]; i++) {
-			const char *opt_name;
-			const char *opt_value;
-
-			nm_utils_escaped_tokens_options_split ((char *) strv[i], &opt_name, &opt_value);
-
-			if (   property_info->property_type->values_fcn
-			    || property_info->property_typ_data->values_static) {
-				gs_strfreev char **valid_options_to_free = NULL;
-				const char *const*valid_options;
-
-				if (property_info->property_type->values_fcn)
-					valid_options = property_info->property_type->values_fcn (property_info, &valid_options_to_free);
-				else
-					valid_options = property_info->property_typ_data->values_static;
-
-				opt_name = nmc_string_is_valid (opt_name, (const char **) valid_options, error);
-				if (!opt_name)
-					return FALSE;
-			}
-
-			if (opt_value) {
-				if (_SET_FCN_DO_REMOVE (modifier, value))
-					opt_value = NULL;
-			} else {
-				if (!_SET_FCN_DO_REMOVE (modifier, value)) {
-					nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-					                    _("'%s' is not valid; use <option>=<value>"),
-					                    opt_name);
-					return FALSE;
-				}
-			}
-
-			if (   opt_value
-			    && opt_value[0] == '\0'
-			    && property_info->property_typ_data->subtype.optionlist.no_empty_value) {
-				nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-				                    _("cannot set empty \"%s\" option"),
-				                    opt_name);
-				return FALSE;
-			}
-
-			strv[nstrv] = opt_name;
-			strv_val[nstrv] = opt_value;
-			nstrv++;
-		}
-	}
-
-	if (_SET_FCN_DO_SET_ALL (modifier, value))
-		_gobject_property_reset (setting, property_info->property_name, FALSE);
-
-	for (i = 0; i < nstrv; i++) {
-		if (!property_info->property_typ_data->subtype.optionlist.set_fcn (setting,
-		                                                                   strv[i],
-		                                                                   strv_val[i],
-		                                                                   error))
-			return FALSE;
-	}
-
-	return TRUE;
+_multilist_clear_property(const NMMetaPropertyInfo *property_info,
+                          NMSetting *               setting,
+                          gboolean                  is_set /* or else set default */)
+{
+    if (property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn) {
+        property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn(setting, is_set);
+        return TRUE;
+    }
+    if (property_info->property_typ_data->subtype.multilist.clear_all_fcn) {
+        property_info->property_typ_data->subtype.multilist.clear_all_fcn(setting);
+        return TRUE;
+    }
+    return _gobject_property_reset(setting, property_info->property_name, FALSE);
+}
+
+static gboolean _set_fcn_multilist(ARGS_SET_FCN)
+{
+    gs_free const char **strv = NULL;
+    gsize                i, j, nstrv;
+
+    if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(property_info, modifier, value))
+        return _multilist_clear_property(property_info, setting, FALSE);
+
+    if (_SET_FCN_DO_REMOVE(modifier, value)
+        && (property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32
+            || property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s
+            || property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u)) {
+        gs_free gint64 *indexes = NULL;
+
+        indexes = _value_str_as_index_list(value, &nstrv);
+        if (indexes) {
+            gint64 num;
+
+            if (property_info->property_typ_data->subtype.multilist.get_num_fcn_u32)
+                num = property_info->property_typ_data->subtype.multilist.get_num_fcn_u32(setting);
+            else
+                num = property_info->property_typ_data->subtype.multilist.get_num_fcn_u(setting);
+            for (i = 0; i < nstrv; i++) {
+                gint64 idx = indexes[i];
+
+                if (idx >= num)
+                    continue;
+
+                if (property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32)
+                    property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u32(
+                        setting,
+                        idx);
+                else if (property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s)
+                    property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_s(setting,
+                                                                                            idx);
+                else
+                    property_info->property_typ_data->subtype.multilist.remove_by_idx_fcn_u(setting,
+                                                                                            idx);
+            }
+            return TRUE;
+        }
+    }
+
+    if (_SET_FCN_DO_SET_ALL(modifier, value)
+        && property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn
+        && value[0] == '\0')
+        return _multilist_clear_property(property_info, setting, FALSE);
+
+    strv = _value_strsplit(
+        value,
+        property_info->property_typ_data->subtype.multilist.strsplit_plain
+            ? VALUE_STRSPLIT_MODE_MULTILIST
+            : (property_info->property_typ_data->subtype.multilist.strsplit_with_spaces
+                   ? VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES
+                   : VALUE_STRSPLIT_MODE_ESCAPED_TOKENS),
+        &nstrv);
+
+    j = 0;
+    for (i = 0; i < nstrv; i++) {
+        const char *item = strv[i];
+
+        item = _multilist_do_validate(property_info, setting, item, error);
+        if (!item)
+            return FALSE;
+        strv[j++] = item;
+    }
+    nstrv = j;
+
+    if (_SET_FCN_DO_SET_ALL(modifier, value))
+        _multilist_clear_property(property_info, setting, TRUE);
+    else if (property_info->property_typ_data->subtype.multilist.clear_emptyunset_fcn
+             && _is_default(property_info, setting)) {
+        /* the property is already the default. But we hav here a '+' / '-' modifier, so
+         * that always makes it non-default (empty) first. */
+        _multilist_clear_property(property_info, setting, TRUE);
+    }
+
+    for (i = 0; i < nstrv; i++) {
+        if (_SET_FCN_DO_REMOVE(modifier, value)) {
+            property_info->property_typ_data->subtype.multilist.remove_by_value_fcn(setting,
+                                                                                    strv[i]);
+        } else {
+            if (property_info->property_typ_data->subtype.multilist.add2_fcn)
+                property_info->property_typ_data->subtype.multilist.add2_fcn(setting, strv[i]);
+            else
+                property_info->property_typ_data->subtype.multilist.add_fcn(setting, strv[i]);
+        }
+    }
+    return TRUE;
+}
+
+static gboolean _set_fcn_optionlist(ARGS_SET_FCN)
+{
+    gs_free const char **strv     = NULL;
+    gs_free const char **strv_val = NULL;
+    gsize                strv_len;
+    gsize                i, nstrv;
+
+    nm_assert(!error || !*error);
+
+    if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    nstrv = 0;
+    strv  = nm_utils_escaped_tokens_options_split_list(value);
+    if (strv) {
+        strv_len = NM_PTRARRAY_LEN(strv);
+
+        strv_val = g_new(const char *, strv_len);
+        for (i = 0; strv[i]; i++) {
+            const char *opt_name;
+            const char *opt_value;
+
+            nm_utils_escaped_tokens_options_split((char *) strv[i], &opt_name, &opt_value);
+
+            if (property_info->property_type->values_fcn
+                || property_info->property_typ_data->values_static) {
+                gs_strfreev char **valid_options_to_free = NULL;
+                const char *const *valid_options;
+
+                if (property_info->property_type->values_fcn)
+                    valid_options =
+                        property_info->property_type->values_fcn(property_info,
+                                                                 &valid_options_to_free);
+                else
+                    valid_options = property_info->property_typ_data->values_static;
+
+                opt_name = nmc_string_is_valid(opt_name, (const char **) valid_options, error);
+                if (!opt_name)
+                    return FALSE;
+            }
+
+            if (opt_value) {
+                if (_SET_FCN_DO_REMOVE(modifier, value))
+                    opt_value = NULL;
+            } else {
+                if (!_SET_FCN_DO_REMOVE(modifier, value)) {
+                    nm_utils_error_set(error,
+                                       NM_UTILS_ERROR_INVALID_ARGUMENT,
+                                       _("'%s' is not valid; use <option>=<value>"),
+                                       opt_name);
+                    return FALSE;
+                }
+            }
+
+            if (opt_value && opt_value[0] == '\0'
+                && property_info->property_typ_data->subtype.optionlist.no_empty_value) {
+                nm_utils_error_set(error,
+                                   NM_UTILS_ERROR_INVALID_ARGUMENT,
+                                   _("cannot set empty \"%s\" option"),
+                                   opt_name);
+                return FALSE;
+            }
+
+            strv[nstrv]     = opt_name;
+            strv_val[nstrv] = opt_value;
+            nstrv++;
+        }
+    }
+
+    if (_SET_FCN_DO_SET_ALL(modifier, value))
+        _gobject_property_reset(setting, property_info->property_name, FALSE);
+
+    for (i = 0; i < nstrv; i++) {
+        if (!property_info->property_typ_data->subtype.optionlist.set_fcn(setting,
+                                                                          strv[i],
+                                                                          strv_val[i],
+                                                                          error))
+            return FALSE;
+    }
+
+    return TRUE;
 }
 
 static char *
-flag_values_to_string (GFlagsValue *array, guint n)
+flag_values_to_string(GFlagsValue *array, guint n)
 {
-	GString *str;
-	guint i;
+    GString *str;
+    guint    i;
 
-	str = g_string_new (NULL);
-	for (i = 0; i < n; i++)
-		g_string_append_printf (str, "%u, ", array[i].value);
-	if (str->len)
-		g_string_truncate (str, str->len-2);  /* chop off trailing ', ' */
-	return g_string_free (str, FALSE);
+    str = g_string_new(NULL);
+    for (i = 0; i < n; i++)
+        g_string_append_printf(str, "%u, ", array[i].value);
+    if (str->len)
+        g_string_truncate(str, str->len - 2); /* chop off trailing ', ' */
+    return g_string_free(str, FALSE);
 }
 
 static gboolean
-validate_flags (NMSetting *setting, const char* prop, guint val, GError **error)
+validate_flags(NMSetting *setting, const char *prop, guint val, GError **error)
 {
-	GParamSpec *pspec;
-	GValue value = G_VALUE_INIT;
-	gboolean success = TRUE;
+    GParamSpec *pspec;
+    GValue      value   = G_VALUE_INIT;
+    gboolean    success = TRUE;
 
-	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (setting)), prop);
-	g_assert (G_IS_PARAM_SPEC (pspec));
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(setting)), prop);
+    g_assert(G_IS_PARAM_SPEC(pspec));
 
-	g_value_init (&value, pspec->value_type);
-	g_value_set_flags (&value, val);
+    g_value_init(&value, pspec->value_type);
+    g_value_set_flags(&value, val);
 
-	if (g_param_value_validate (pspec, &value)) {
-		GParamSpecFlags *pspec_flags = (GParamSpecFlags *) pspec;
-		gs_free char *flag_values = NULL;
+    if (g_param_value_validate(pspec, &value)) {
+        GParamSpecFlags *pspec_flags = (GParamSpecFlags *) pspec;
+        gs_free char *   flag_values = NULL;
 
-		flag_values = flag_values_to_string (pspec_flags->flags_class->values,
-		                                     pspec_flags->flags_class->n_values);
+        flag_values = flag_values_to_string(pspec_flags->flags_class->values,
+                                            pspec_flags->flags_class->n_values);
 
-		g_set_error (error, 1, 0, _("'%u' flags are not valid; use combination of %s"),
-		             val, flag_values);
-		success = FALSE;
-	}
-	g_value_unset (&value);
-	return success;
+        g_set_error(error,
+                    1,
+                    0,
+                    _("'%u' flags are not valid; use combination of %s"),
+                    val,
+                    flag_values);
+        success = FALSE;
+    }
+    g_value_unset(&value);
+    return success;
 }
 
-static gboolean
-_set_fcn_gobject_flags (ARGS_SET_FCN)
+static gboolean _set_fcn_gobject_flags(ARGS_SET_FCN)
 {
-	unsigned long val_int;
+    unsigned long val_int;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!nmc_string_to_uint (value, TRUE, 0, G_MAXUINT, &val_int)) {
-		g_set_error (error, 1, 0, _("'%s' is not a valid number (or out of range)"), value);
-		return FALSE;
-	}
+    if (!nmc_string_to_uint(value, TRUE, 0, G_MAXUINT, &val_int)) {
+        g_set_error(error, 1, 0, _("'%s' is not a valid number (or out of range)"), value);
+        return FALSE;
+    }
 
-	/* Validate the flags according to the property spec */
-	if (!validate_flags (setting, property_info->property_name, (guint) val_int, error))
-		return FALSE;
+    /* Validate the flags according to the property spec */
+    if (!validate_flags(setting, property_info->property_name, (guint) val_int, error))
+        return FALSE;
 
-	g_object_set (setting, property_info->property_name, (guint) val_int, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, (guint) val_int, NULL);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_gobject_ssid (ARGS_SET_FCN)
+static gboolean _set_fcn_gobject_ssid(ARGS_SET_FCN)
 {
-	gs_unref_bytes GBytes *ssid = NULL;
+    gs_unref_bytes GBytes *ssid = NULL;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (strlen (value) > 32) {
-		g_set_error (error, 1, 0, _("'%s' is not valid"), value);
-		return FALSE;
-	}
+    if (strlen(value) > 32) {
+        g_set_error(error, 1, 0, _("'%s' is not valid"), value);
+        return FALSE;
+    }
 
-	ssid = g_bytes_new (value, strlen (value));
-	g_object_set (setting, property_info->property_name, ssid, NULL);
-	return TRUE;
+    ssid = g_bytes_new(value, strlen(value));
+    g_object_set(setting, property_info->property_name, ssid, NULL);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_gobject_ifname (ARGS_SET_FCN)
+static gboolean _set_fcn_gobject_ifname(ARGS_SET_FCN)
 {
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	g_object_set (setting, property_info->property_name, value, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, value, NULL);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_vpn_service_type (ARGS_SET_FCN)
+static gboolean _set_fcn_vpn_service_type(ARGS_SET_FCN)
 {
-	gs_free char *service_name = NULL;
+    gs_free char *service_name = NULL;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	service_name = nm_vpn_plugin_info_list_find_service_type (nm_vpn_get_plugin_infos (), value);
-	g_object_set (setting, property_info->property_name, service_name ?: value, NULL);
-	return TRUE;
+    service_name = nm_vpn_plugin_info_list_find_service_type(nm_vpn_get_plugin_infos(), value);
+    g_object_set(setting, property_info->property_name, service_name ?: value, NULL);
+    return TRUE;
 }
 
-static const char *const*
-_complete_fcn_vpn_service_type (ARGS_COMPLETE_FCN)
+static const char *const *_complete_fcn_vpn_service_type(ARGS_COMPLETE_FCN)
 {
-	gsize i, j;
-	char **values;
+    gsize  i, j;
+    char **values;
 
-	values = nm_vpn_plugin_info_list_get_service_types (nm_vpn_get_plugin_infos (), FALSE, TRUE);
-	if (!values)
-		return NULL;
+    values = nm_vpn_plugin_info_list_get_service_types(nm_vpn_get_plugin_infos(), FALSE, TRUE);
+    if (!values)
+        return NULL;
 
-	if (!text || !*text) {
-		/* If the prompt text is empty or contains no '.',
-		 * filter out full names. */
-		for (i = 0, j = 0; values[i]; i++) {
-			if (strchr (values[i], '.')) {
-				g_free (values[i]);
-				continue;
-			}
+    if (!text || !*text) {
+        /* If the prompt text is empty or contains no '.',
+         * filter out full names. */
+        for (i = 0, j = 0; values[i]; i++) {
+            if (strchr(values[i], '.')) {
+                g_free(values[i]);
+                continue;
+            }
 
-			if (i != j)
-				values[j] = values[i];
-			j++;
-		}
-		if (j)
-			values[j++] = NULL;
-		else {
-			g_free (values);
-			values = NULL;
-		}
-	}
-	return (const char *const*) (*out_to_free = values);
+            if (i != j)
+                values[j] = values[i];
+            j++;
+        }
+        if (j)
+            values[j++] = NULL;
+        else {
+            g_free(values);
+            values = NULL;
+        }
+    }
+    return (const char *const *) (*out_to_free = values);
 }
 
 static const char *
-_multilist_validate_fcn_is_domain (const char *domain, GError **error)
+_multilist_validate_fcn_is_domain(const char *domain, GError **error)
 {
-	//FIXME: implement
-	return domain;
+    //FIXME: implement
+    return domain;
 }
 
-static gboolean
-_set_fcn_gobject_bytes (ARGS_SET_FCN)
-{
-	gs_free char *val_strip_free = NULL;
-	gs_free const char **strv = NULL;
-	const char *val_strip;
-	const char **iter;
-	gs_unref_bytes GBytes *bytes = NULL;
-	GByteArray *array;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	val_strip = nm_strstrip_avoid_copy_a (300, value, &val_strip_free);
-
-	/* First try hex string in the format of AAbbCCDd */
-	bytes = nm_utils_hexstr2bin (val_strip);
-	if (bytes)
-		goto done;
-
-	if (   !property_info->property_typ_data
-	    || !property_info->property_typ_data->subtype.gobject_bytes.legacy_format) {
-		if (value && value[0]) {
-			g_set_error_literal (error, 1, 0, _("not a valid hex-string"));
-			return FALSE;
-		}
-		/* accept the empty word to reset the property to %NULL. */
-		goto done;
-	}
-
-	/* Otherwise, consider the following format: AA b 0xCc D */
-	strv = nm_utils_strsplit_set (value, " \t");
-	array = g_byte_array_sized_new (NM_PTRARRAY_LEN (strv));
-	for (iter = strv; iter && *iter; iter++) {
-		int v;
-		guint8 v8;
-
-		v = _nm_utils_ascii_str_to_int64 (*iter, 16, 0, 255, -1);
-		if (v == -1) {
-			g_set_error (error, 1, 0, _("'%s' is not a valid hex character"), *iter);
-			g_byte_array_free (array, TRUE);
-			return FALSE;
-		}
-		v8 = v;
-		g_byte_array_append (array, &v8, 1);
-	}
-	bytes = g_byte_array_free_to_bytes (array);
+static const char *
+_multilist_validate_fcn_is_ipv4_addr_or_subnet(const char *value, GError **error)
+{
+    if (!nm_utils_parse_inaddr_prefix_bin(AF_INET, value, NULL, NULL, NULL)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("invalid IPv4 or subnet \"%s\""),
+                           value);
+        return NULL;
+    }
+
+    return value;
+}
+
+static gboolean _set_fcn_gobject_bytes(ARGS_SET_FCN)
+{
+    gs_free char *       val_strip_free = NULL;
+    gs_free const char **strv           = NULL;
+    const char *         val_strip;
+    const char **        iter;
+    gs_unref_bytes GBytes *bytes = NULL;
+    GByteArray *           array;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    val_strip = nm_strstrip_avoid_copy_a(300, value, &val_strip_free);
+
+    /* First try hex string in the format of AAbbCCDd */
+    bytes = nm_utils_hexstr2bin(val_strip);
+    if (bytes)
+        goto done;
+
+    if (!property_info->property_typ_data
+        || !property_info->property_typ_data->subtype.gobject_bytes.legacy_format) {
+        if (value && value[0]) {
+            g_set_error_literal(error, 1, 0, _("not a valid hex-string"));
+            return FALSE;
+        }
+        /* accept the empty word to reset the property to %NULL. */
+        goto done;
+    }
+
+    /* Otherwise, consider the following format: AA b 0xCc D */
+    strv  = nm_utils_strsplit_set(value, " \t");
+    array = g_byte_array_sized_new(NM_PTRARRAY_LEN(strv));
+    for (iter = strv; iter && *iter; iter++) {
+        int    v;
+        guint8 v8;
+
+        v = _nm_utils_ascii_str_to_int64(*iter, 16, 0, 255, -1);
+        if (v == -1) {
+            g_set_error(error, 1, 0, _("'%s' is not a valid hex character"), *iter);
+            g_byte_array_free(array, TRUE);
+            return FALSE;
+        }
+        v8 = v;
+        g_byte_array_append(array, &v8, 1);
+    }
+    bytes = g_byte_array_free_to_bytes(array);
 
 done:
-	g_object_set (setting, property_info->property_name, bytes, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, bytes, NULL);
+    return TRUE;
 }
 
 /*****************************************************************************/
 
-static gconstpointer
-_get_fcn_cert_8021x (ARGS_GET_FCN)
-{
-	NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting);
-	const NMSetting8021xSchemeVtable *vtable;
-	char *str = NULL;
+static gconstpointer _get_fcn_cert_8021x(ARGS_GET_FCN)
+{
+    NMSetting8021x *                  s_8021X = NM_SETTING_802_1X(setting);
+    const NMSetting8021xSchemeVtable *vtable;
+    char *                            str = NULL;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x
+                                                 .scheme_type];
+
+    switch (vtable->scheme_func(s_8021X)) {
+    case NM_SETTING_802_1X_CK_SCHEME_BLOB:
+        if (!NM_FLAGS_HAS(get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS))
+            return _get_text_hidden(get_type);
+        str = bytes_to_string(vtable->blob_func(s_8021X));
+        break;
+    case NM_SETTING_802_1X_CK_SCHEME_PATH:
+        str = g_strdup(vtable->path_func(s_8021X));
+        break;
+    case NM_SETTING_802_1X_CK_SCHEME_PKCS11:
+        str = g_strdup(vtable->uri_func(s_8021X));
+        break;
+    case NM_SETTING_802_1X_CK_SCHEME_UNKNOWN:
+        break;
+    }
+
+    NM_SET_OUT(out_is_default, !str || !str[0]);
+    RETURN_STR_TO_FREE(str);
+}
+
+static gboolean _set_fcn_cert_8021x(ARGS_SET_FCN)
+{
+    gs_free char *                    value_to_free = NULL;
+    NMSetting8021xCKScheme            scheme        = NM_SETTING_802_1X_CK_SCHEME_PATH;
+    const NMSetting8021xSchemeVtable *vtable;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    value = nm_strstrip_avoid_copy_a(300, value, &value_to_free);
+
+    if (strncmp(value,
+                NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PKCS11,
+                NM_STRLEN(NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PKCS11))
+        == 0)
+        scheme = NM_SETTING_802_1X_CK_SCHEME_PKCS11;
+    else if (strncmp(value,
+                     NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH,
+                     NM_STRLEN(NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH))
+             == 0)
+        value += NM_STRLEN(NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH);
+
+    vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x
+                                                 .scheme_type];
+
+    if (vtable->is_secret) {
+        nm_auto_free_secret char *password_free = NULL;
+        gs_free const char **     strv          = NULL;
+        const char *              password;
+        const char *              path;
+        gsize                     len;
+
+        strv = nm_utils_escaped_tokens_split(value, NM_ASCII_SPACES);
+        len  = NM_PTRARRAY_LEN(strv);
+        if (len > 2) {
+            g_set_error_literal(error,
+                                NM_UTILS_ERROR,
+                                NM_UTILS_ERROR_INVALID_ARGUMENT,
+                                _("too many arguments. Please only specify a private key file and "
+                                  "optionally a password"));
+            return FALSE;
+        }
+
+        path = len > 0 ? strv[0] : NULL;
+        if (len == 2) {
+            password = strv[1];
+        } else {
+            password_free = g_strdup(vtable->passwd_func(NM_SETTING_802_1X(setting)));
+            password      = password_free;
+        }
+
+        return vtable
+            ->set_private_key_func(NM_SETTING_802_1X(setting), path, password, scheme, NULL, error);
+    } else {
+        return vtable->set_cert_func(NM_SETTING_802_1X(setting), value, scheme, NULL, error);
+    }
+}
+
+static const char *const *_complete_fcn_cert_8021x(ARGS_COMPLETE_FCN)
+{
+    const NMSetting8021xSchemeVtable *vtable;
+
+    vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x
+                                                 .scheme_type];
+
+    if (vtable->is_secret) {
+        gs_free const char **strv = NULL;
+
+        strv = nm_utils_escaped_tokens_split(text, NM_ASCII_SPACES);
+        /* don't try to complete the password */
+        if (NM_PTRARRAY_LEN(strv) > 1)
+            return NULL;
+    }
+
+    NM_SET_OUT(out_complete_filename, TRUE);
+    return NULL;
+}
+
+static gconstpointer _get_fcn_bond_options(ARGS_GET_FCN)
+{
+    NMSettingBond *s_bond = NM_SETTING_BOND(setting);
+    GString *      str;
+    guint32        i, len;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    str = g_string_new(NULL);
+    len = nm_setting_bond_get_num_options(s_bond);
+    for (i = 0; i < len; i++) {
+        const char *  key;
+        const char *  val;
+        gs_free char *val_tmp = NULL;
+        char *        p;
+        gs_free char *escaped_key = NULL;
+        gs_free char *escaped_val = NULL;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x.scheme_type];
-
-	switch (vtable->scheme_func (s_8021X)) {
-	case NM_SETTING_802_1X_CK_SCHEME_BLOB:
-		if (!NM_FLAGS_HAS (get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS))
-			return _get_text_hidden (get_type);
-		str = bytes_to_string (vtable->blob_func (s_8021X));
-		break;
-	case NM_SETTING_802_1X_CK_SCHEME_PATH:
-		str = g_strdup (vtable->path_func (s_8021X));
-		break;
-	case NM_SETTING_802_1X_CK_SCHEME_PKCS11:
-		str = g_strdup (vtable->uri_func (s_8021X));
-		break;
-	case NM_SETTING_802_1X_CK_SCHEME_UNKNOWN:
-		break;
-	}
-
-	NM_SET_OUT (out_is_default, !str || !str[0]);
-	RETURN_STR_TO_FREE (str);
-}
-
-static gboolean
-_set_fcn_cert_8021x (ARGS_SET_FCN)
-{
-	gs_free char *value_to_free = NULL;
-	NMSetting8021xCKScheme scheme = NM_SETTING_802_1X_CK_SCHEME_PATH;
-	const NMSetting8021xSchemeVtable *vtable;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	value = nm_strstrip_avoid_copy_a (300, value, &value_to_free);
-
-	if (strncmp (value, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PKCS11, NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PKCS11)) == 0)
-		scheme = NM_SETTING_802_1X_CK_SCHEME_PKCS11;
-	else if (strncmp (value, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH, NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) == 0)
-		value += NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH);
-
-	vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x.scheme_type];
-
-	if (vtable->is_secret) {
-		nm_auto_free_secret char *password_free = NULL;
-		gs_free const char **strv = NULL;
-		const char *password;
-		const char *path;
-		gsize len;
-
-		strv = nm_utils_escaped_tokens_split (value, NM_ASCII_SPACES);
-		len = NM_PTRARRAY_LEN (strv);
-		if (len > 2) {
-			g_set_error_literal (error,
-			                     NM_UTILS_ERROR,
-			                     NM_UTILS_ERROR_INVALID_ARGUMENT,
-			                     _("too many arguments. Please only specify a private key file and optionally a password"));
-			return FALSE;
-		}
-
-		path = len > 0 ? strv[0] : NULL;
-		if (len == 2) {
-			password = strv[1];
-		} else {
-			password_free = g_strdup (vtable->passwd_func (NM_SETTING_802_1X (setting)));
-			password = password_free;
-		}
-
-		return vtable->set_private_key_func (NM_SETTING_802_1X (setting),
-		                                     path,
-		                                     password,
-		                                     scheme,
-		                                     NULL,
-		                                     error);
-	} else {
-		return vtable->set_cert_func (NM_SETTING_802_1X (setting),
-		                              value,
-		                              scheme,
-		                              NULL,
-		                              error);
-	}
-}
-
-static const char *const*
-_complete_fcn_cert_8021x (ARGS_COMPLETE_FCN)
-{
-	const NMSetting8021xSchemeVtable *vtable;
-
-	vtable = &nm_setting_8021x_scheme_vtable[property_info->property_typ_data->subtype.cert_8021x.scheme_type];
-
-	if (vtable->is_secret) {
-		gs_free const char **strv = NULL;
-
-		strv = nm_utils_escaped_tokens_split (text, NM_ASCII_SPACES);
-		/* don't try to complete the password */
-		if (NM_PTRARRAY_LEN (strv) > 1)
-			return NULL;
-	}
-
-	NM_SET_OUT (out_complete_filename, TRUE);
-	return NULL;
-}
-
-static gconstpointer
-_get_fcn_bond_options (ARGS_GET_FCN)
-{
-	NMSettingBond *s_bond = NM_SETTING_BOND (setting);
-	GString *str;
-	guint32 i, len;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	str = g_string_new (NULL);
-	len = nm_setting_bond_get_num_options (s_bond);
-	for (i = 0; i < len; i++) {
-		const char *key;
-		const char *val;
-		gs_free char *val_tmp = NULL;
-		char *p;
-		gs_free char *escaped_key = NULL;
-		gs_free char *escaped_val = NULL;
-
-		nm_setting_bond_get_option (s_bond, i, &key, &val);
-
-		if (nm_streq (key, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
-			val_tmp = g_strdup (val);
-			for (p = val_tmp; p && *p; p++) {
-				if (*p == ',')
-					*p = ' ';
-			}
-			val = val_tmp;
-		}
-
-		if (str->len > 0u)
-			g_string_append_c (str, ',');
-		g_string_append (str, nm_utils_escaped_tokens_options_escape_key (key, &escaped_key));
-		g_string_append_c (str, '=');
-		g_string_append (str, nm_utils_escaped_tokens_options_escape_val (val, &escaped_val));
-	}
-
-	NM_SET_OUT (out_is_default, str->len == 0);
-	RETURN_STR_TO_FREE (g_string_free (str, FALSE));
+        nm_setting_bond_get_option(s_bond, i, &key, &val);
+
+        if (nm_streq(key, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
+            val_tmp = g_strdup(val);
+            for (p = val_tmp; p && *p; p++) {
+                if (*p == ',')
+                    *p = ' ';
+            }
+            val = val_tmp;
+        }
+
+        if (str->len > 0u)
+            g_string_append_c(str, ',');
+        g_string_append(str, nm_utils_escaped_tokens_options_escape_key(key, &escaped_key));
+        g_string_append_c(str, '=');
+        g_string_append(str, nm_utils_escaped_tokens_options_escape_val(val, &escaped_val));
+    }
+
+    NM_SET_OUT(out_is_default, str->len == 0);
+    RETURN_STR_TO_FREE(g_string_free(str, FALSE));
 }
 
 gboolean
-_nm_meta_setting_bond_add_option (NMSetting *setting,
-                                  const char *name,
-                                  const char *value,
-                                  GError **error)
-{
-	gs_free char *tmp_value = NULL;
-	char *p;
-
-	if (   !value
-	    || !value[0]) {
-		if (!nm_setting_bond_remove_option (NM_SETTING_BOND (setting), name)) {
-			nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			                    _("failed to unset bond option \"%s\""),
-			                    name);
-			return FALSE;
-		}
-		return TRUE;
-	}
-
-	if (nm_streq (name, NM_SETTING_BOND_OPTION_MODE)) {
-		value = nmc_bond_validate_mode (value, error);
-		if (!value)
-			return FALSE;
-	} else if (nm_streq (name, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
-		value = tmp_value = g_strdup (value);
-		for (p = tmp_value; p && *p; p++)
-			if (*p == ' ')
-				*p = ',';
-	}
-
-	if (!nm_setting_bond_add_option (NM_SETTING_BOND (setting), name, value)) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    _("failed to set bond option \"%s\""),
-		                    name);
-		return FALSE;
-	}
-
-	if (nm_streq (name, NM_SETTING_BOND_OPTION_ARP_INTERVAL)) {
-		if (_nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXINT, 0) > 0)
-			_nm_setting_bond_remove_options_miimon (NM_SETTING_BOND (setting));
-	} else if (nm_streq (name, NM_SETTING_BOND_OPTION_MIIMON)) {
-		if (_nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXINT, 0) > 0)
-			_nm_setting_bond_remove_options_arp_interval (NM_SETTING_BOND (setting));
-	}
-
-	return TRUE;
-}
-
-static const char *
-_describe_fcn_bond_options (ARGS_DESCRIBE_FCN)
-{
-	gs_free char *options_str = NULL;
-	const char **valid_options;
-	char *s;
+_nm_meta_setting_bond_add_option(NMSetting * setting,
+                                 const char *name,
+                                 const char *value,
+                                 GError **   error)
+{
+    NMSettingBond *s_bond    = NM_SETTING_BOND(setting);
+    gs_free char * tmp_value = NULL;
+    const char *   val2;
+    char *         p;
+
+    if (!value || !value[0]) {
+        if (!nm_setting_bond_remove_option(s_bond, name)) {
+            nm_utils_error_set(error,
+                               NM_UTILS_ERROR_INVALID_ARGUMENT,
+                               _("failed to unset bond option \"%s\""),
+                               name);
+            return FALSE;
+        }
+        return TRUE;
+    }
+
+    if (nm_streq(name, NM_SETTING_BOND_OPTION_MODE)) {
+        value = nmc_bond_validate_mode(value, error);
+        if (!value)
+            return FALSE;
+    } else if (nm_streq(name, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
+        value = tmp_value = g_strdup(value);
+        for (p = tmp_value; p && *p; p++)
+            if (*p == ' ')
+                *p = ',';
+    }
+
+    if (!nm_setting_bond_add_option(s_bond, name, value)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("failed to set bond option \"%s\""),
+                           name);
+        return FALSE;
+    }
+
+    if (nm_streq(name, NM_SETTING_BOND_OPTION_ARP_INTERVAL)) {
+        if (_nm_utils_ascii_str_to_int64(value, 10, 0, G_MAXINT, 0) > 0)
+            _nm_setting_bond_remove_options_miimon(s_bond);
+    } else if (nm_streq(name, NM_SETTING_BOND_OPTION_MIIMON)) {
+        if (_nm_utils_ascii_str_to_int64(value, 10, 0, G_MAXINT, 0) > 0)
+            _nm_setting_bond_remove_options_arp_interval(s_bond);
+    } else if (nm_streq(name, NM_SETTING_BOND_OPTION_PRIMARY)) {
+        if ((val2 = nm_setting_bond_get_option_by_name(s_bond, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE))
+            && !nm_streq(val2, value)) {
+            /* "active_slave" option is deprecated and an alias for "primary". When
+             * setting "primary" to a different value, remove the deprecated "active_slave"
+             * setting.
+             *
+             * If we wouldn't do this, then the profile would work as requested, but ignoring
+             * the (redundant, differing) "active_slave" option. That is confusing, thus clean
+             * it up. */
+            nm_setting_bond_remove_option(s_bond, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE);
+        }
+    } else if (nm_streq(name, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE)) {
+        if ((val2 = nm_setting_bond_get_option_by_name(s_bond, NM_SETTING_BOND_OPTION_PRIMARY))
+            && !nm_streq(val2, value)) {
+            /* "active_slave" is a deprecated alias for "primary". NetworkManager will ignore
+             * "active_slave" if "primary" is set, we thus need to coerce the primary option
+             * too. */
+            nm_setting_bond_add_option(s_bond, NM_SETTING_BOND_OPTION_PRIMARY, value);
+        }
+    }
+
+    return TRUE;
+}
+
+static const char *_describe_fcn_bond_options(ARGS_DESCRIBE_FCN)
+{
+    gs_free char *options_str = NULL;
+    const char ** valid_options;
+    char *        s;
+
+    valid_options = nm_setting_bond_get_valid_options(NULL);
+    options_str   = g_strjoinv(", ", (char **) valid_options);
+
+    s = g_strdup_printf(_("Enter a list of bonding options formatted as:\n"
+                          "  option = <value>, option = <value>,... \n"
+                          "Valid options are: %s\n"
+                          "'mode' can be provided as a name or a number:\n"
+                          "balance-rr    = 0\n"
+                          "active-backup = 1\n"
+                          "balance-xor   = 2\n"
+                          "broadcast     = 3\n"
+                          "802.3ad       = 4\n"
+                          "balance-tlb   = 5\n"
+                          "balance-alb   = 6\n\n"
+                          "Example: mode=2,miimon=120\n"),
+                        options_str);
+    return (*out_to_free = s);
+}
+
+static const char *const *_values_fcn_bond_options(ARGS_VALUES_FCN)
+{
+    return nm_setting_bond_get_valid_options(NULL);
+}
+
+static gconstpointer _get_fcn_connection_permissions(ARGS_GET_FCN)
+{
+    NMSettingConnection *s_con = NM_SETTING_CONNECTION(setting);
+    GString *            perm  = NULL;
+    const char *         perm_item;
+    const char *         perm_type;
+    guint                i, n;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    n = nm_setting_connection_get_num_permissions(s_con);
+    for (i = 0; i < n; i++) {
+        if (!nm_setting_connection_get_permission(s_con, i, &perm_type, &perm_item, NULL))
+            continue;
+        if (!nm_streq(perm_type, NM_SETTINGS_CONNECTION_PERMISSION_USER))
+            continue;
+
+        if (!perm)
+            perm = g_string_new(NULL);
+        else
+            g_string_append_c(perm, ',');
+        g_string_append_printf(perm, NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX "%s", perm_item);
+    }
+
+    NM_SET_OUT(out_is_default, !perm);
+
+    if (perm)
+        RETURN_STR_TO_FREE(g_string_free(perm, FALSE));
+
+    return NULL;
+}
+
+static gboolean _set_fcn_connection_type(ARGS_SET_FCN)
+{
+    gs_free char *uuid = NULL;
+
+    if (nm_setting_connection_get_uuid(NM_SETTING_CONNECTION(setting))) {
+        /* Don't allow setting type unless the connection is brand new.
+         * Just because it's a bad idea and the user wouldn't probably want that.
+         * No technical reason, really.
+         * Also, using uuid to see if the connection is brand new is a bit
+         * hacky: we can not see if the type is already set, because
+         * nmc_setting_set_property() is called only after the property
+         * we're setting (type) has been removed. */
+        g_set_error(error, 1, 0, _("Can not change the connection type"));
+        return FALSE;
+    }
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value)) {
+        g_object_set(G_OBJECT(setting), property_info->property_name, NULL, NULL);
+        return TRUE;
+    }
 
-	valid_options = nm_setting_bond_get_valid_options (NULL);
-	options_str = g_strjoinv (", ", (char **) valid_options);
+    uuid = nm_utils_uuid_generate();
+    g_object_set(G_OBJECT(setting), NM_SETTING_CONNECTION_UUID, uuid, NULL);
 
-	s = g_strdup_printf (_("Enter a list of bonding options formatted as:\n"
-	                       "  option = <value>, option = <value>,... \n"
-	                       "Valid options are: %s\n"
-	                       "'mode' can be provided as a name or a number:\n"
-	                       "balance-rr    = 0\n"
-	                       "active-backup = 1\n"
-	                       "balance-xor   = 2\n"
-	                       "broadcast     = 3\n"
-	                       "802.3ad       = 4\n"
-	                       "balance-tlb   = 5\n"
-	                       "balance-alb   = 6\n\n"
-	                       "Example: mode=2,miimon=120\n"), options_str);
-	return (*out_to_free = s);
+    g_object_set(G_OBJECT(setting), property_info->property_name, value, NULL);
+    return TRUE;
 }
 
-static const char *const*
-_values_fcn_bond_options (ARGS_VALUES_FCN)
+static const char *const *_complete_fcn_connection_type(ARGS_COMPLETE_FCN)
 {
-	return nm_setting_bond_get_valid_options (NULL);
-}
+    guint       i, j;
+    char **     result;
+    gsize       text_len;
+    const char *slave_types[] = {"bond-slave", "bridge-slave", "team-slave"};
 
-static gconstpointer
-_get_fcn_connection_permissions (ARGS_GET_FCN)
-{
-	NMSettingConnection *s_con = NM_SETTING_CONNECTION (setting);
-	GString *perm = NULL;
-	const char *perm_item;
-	const char *perm_type;
-	guint i, n;
+    result = g_new(char *, _NM_META_SETTING_TYPE_NUM * 2 + G_N_ELEMENTS(slave_types) + 1);
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    text_len = text ? strlen(text) : 0;
 
-	n = nm_setting_connection_get_num_permissions (s_con);
-	for (i = 0; i < n; i++) {
-		if (!nm_setting_connection_get_permission (s_con, i, &perm_type, &perm_item, NULL))
-			continue;
+    for (i = 0, j = 0; i < _NM_META_SETTING_TYPE_NUM; i++) {
+        const NMMetaSettingInfoEditor *setting_info = &nm_meta_setting_infos_editor[i];
+        const char *                   v;
 
-		if (!perm)
-			perm = g_string_new (NULL);
-		else
-			g_string_append_c (perm, ',');
-		g_string_append_printf (perm, "%s:%s", perm_type, perm_item);
-	}
+        if (!setting_info->valid_parts)
+            continue;
 
-	NM_SET_OUT (out_is_default, !perm);
+        v = setting_info->alias;
+        if (v) {
+            if (!text || strncmp(text, v, text_len) == 0)
+                result[j++] = g_strdup(v);
+        }
+        v = setting_info->general->setting_name;
+        if (!text || strncmp(text, v, text_len) == 0)
+            result[j++] = g_strdup(v);
+    }
+    for (i = 0; i < G_N_ELEMENTS(slave_types); i++) {
+        const char *v = slave_types[i];
 
-	if (perm)
-		RETURN_STR_TO_FREE (g_string_free (perm, FALSE));
+        if (!text || strncmp(text, v, text_len) == 0)
+            result[j++] = g_strdup(v);
+    }
+    if (j)
+        result[j++] = NULL;
+    else {
+        g_free(result);
+        result = NULL;
+    }
 
-	return NULL;
+    return (const char *const *) (*out_to_free = result);
 }
 
-static gboolean
-_set_fcn_connection_type (ARGS_SET_FCN)
-{
-	gs_free char *uuid = NULL;
-
-	if (nm_setting_connection_get_uuid (NM_SETTING_CONNECTION (setting))) {
-		/* Don't allow setting type unless the connection is brand new.
-		 * Just because it's a bad idea and the user wouldn't probably want that.
-		 * No technical reason, really.
-		 * Also, using uuid to see if the connection is brand new is a bit
-		 * hacky: we can not see if the type is already set, because
-		 * nmc_setting_set_property() is called only after the property
-		 * we're setting (type) has been removed. */
-		g_set_error (error, 1, 0, _("Can not change the connection type"));
-		return FALSE;
-	}
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value)) {
-		g_object_set (G_OBJECT (setting), property_info->property_name, NULL, NULL);
-		return TRUE;
-	}
-
-	uuid = nm_utils_uuid_generate ();
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NULL);
-
-	g_object_set (G_OBJECT (setting), property_info->property_name, value, NULL);
-	return TRUE;
-}
-
-static const char *const*
-_complete_fcn_connection_type (ARGS_COMPLETE_FCN)
-{
-	guint i, j;
-	char **result;
-	gsize text_len;
-	const char *slave_types[] = {"bond-slave", "bridge-slave", "team-slave"};
-
-	result = g_new (char *, _NM_META_SETTING_TYPE_NUM * 2 + G_N_ELEMENTS (slave_types) + 1);
-
-	text_len = text ? strlen (text) : 0;
-
-	for (i = 0, j = 0; i < _NM_META_SETTING_TYPE_NUM; i++) {
-		const NMMetaSettingInfoEditor *setting_info = &nm_meta_setting_infos_editor[i];
-		const char *v;
-
-		if (!setting_info->valid_parts)
-			continue;
-
-		v = setting_info->alias;
-		if (v) {
-			if (!text || strncmp (text, v, text_len) == 0)
-				result[j++] = g_strdup (v);
-		}
-		v = setting_info->general->setting_name;
-		if (!text || strncmp (text, v, text_len) == 0)
-			result[j++] = g_strdup (v);
-	}
-	for (i = 0; i < G_N_ELEMENTS (slave_types); i++) {
-		const char *v = slave_types[i];
-
-		if (!text || strncmp (text, v, text_len) == 0)
-			result[j++] = g_strdup (v);
-	}
-	if (j)
-		result[j++] = NULL;
-	else {
-		g_free (result);
-		result = NULL;
-	}
-
-	return (const char *const*) (*out_to_free = result);
-}
-
-#define PERM_USER_PREFIX  "user:"
-
 static const char *
-_sanitize_connection_permission_user (const char *perm)
+_sanitize_connection_permission_user(const char *perm)
 {
-	if (NM_STR_HAS_PREFIX (perm, PERM_USER_PREFIX))
-		perm += NM_STRLEN (PERM_USER_PREFIX);
-
-	if (perm[0] == '\0')
-		return NULL;
-	if (!g_utf8_validate (perm, -1, NULL))
-		return NULL;
-
-	return perm;
+    if (NM_STR_HAS_PREFIX(perm, NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX))
+        perm += NM_STRLEN(NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX);
+    if (!nm_settings_connection_validate_permission_user(perm, -1))
+        return NULL;
+    return perm;
 }
 
 static const char *
-_multilist_validate2_fcn_connection_permissions (NMSetting *setting,
-                                                 const char *item,
-                                                 GError **error)
+_multilist_validate2_fcn_connection_permissions(NMSetting * setting,
+                                                const char *item,
+                                                GError **   error)
 {
-	if (!_sanitize_connection_permission_user (item)) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    _("invalid permission \"%s\""),
-		                    item);
-		return NULL;
-	}
-	return item;
+    if (!_sanitize_connection_permission_user(item)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("invalid permission \"%s\""),
+                           item);
+        return NULL;
+    }
+    return item;
 }
 
 static gboolean
-_multilist_set_fcn_connection_permissions (NMSetting *setting,
-                                           const char *item)
+_multilist_set_fcn_connection_permissions(NMSetting *setting, const char *item)
 {
-	item = _sanitize_connection_permission_user (item);
-	nm_setting_connection_add_permission (NM_SETTING_CONNECTION (setting), "user", item, NULL);
-	return TRUE;
+    item = _sanitize_connection_permission_user(item);
+    if (!item)
+        return FALSE;
+    if (!nm_setting_connection_add_permission(NM_SETTING_CONNECTION(setting),
+                                              NM_SETTINGS_CONNECTION_PERMISSION_USER,
+                                              item,
+                                              NULL))
+        nm_assert_not_reached();
+    return TRUE;
 }
 
 static gboolean
-_multilist_remove_by_value_fcn_connection_permissions (NMSetting *setting,
-                                                       const char *item)
-{
-	const char *sanitized;
-
-	sanitized = _sanitize_connection_permission_user (item);
-	nm_setting_connection_remove_permission_by_value (NM_SETTING_CONNECTION (setting), "user", sanitized ?: item, NULL);
-	return TRUE;
-}
-
-static const char *const*
-_complete_fcn_connection_master (ARGS_COMPLETE_FCN)
-{
-	NMRemoteConnection *const*connections = NULL;
-	guint len = 0;
-	guint i, j;
-	char **result;
-	NMSettingConnection *s_con;
-	const char *expected_type = NULL;
-	gsize text_len;
-
-	if (   environment
-	    && environment->get_nm_connections) {
-		connections = environment->get_nm_connections (environment,
-		                                               environment_user_data,
-		                                               &len);
-	}
-	if (!len)
-		return NULL;
-
-	if (   (!text || !*text)
-	    && operation_context
-	    && operation_context->connection) {
-		/* if we have no text yet, initially only complete for matching
-		 * slave-type. */
-		s_con = nm_connection_get_setting_connection (operation_context->connection);
-		if (s_con)
-			expected_type = nm_setting_connection_get_slave_type (s_con);
-	}
-
-	text_len = text ? strlen (text) : 0;
-
-	result = g_new (char *, (2 * len) + 1);
-	for (i = 0, j = 0; i < len; i++) {
-		const char *v;
-
-		s_con = nm_connection_get_setting_connection (NM_CONNECTION (connections[i]));
-		if (!s_con)
-			continue;
-
-		if (   expected_type
-		    && !nm_streq0 (nm_setting_connection_get_connection_type (s_con),
-		                   expected_type))
-			continue;
-
-		if (text && text[0]) {
-			/* if we have text, also complete for the UUID. */
-			v = nm_setting_connection_get_uuid (s_con);
-			if (v && (!text || strncmp (text, v, text_len) == 0))
-				result[j++] = g_strdup (v);
-		}
-
-		v = nm_setting_connection_get_interface_name (s_con);
-		if (v && (!text || strncmp (text, v, text_len) == 0))
-			result[j++] = g_strdup (v);
-	}
-	if (j)
-		result[j++] = NULL;
-	else {
-		g_free (result);
-		result = NULL;
-	}
-
-	return (const char *const*) (*out_to_free = result);
+_multilist_remove_by_value_fcn_connection_permissions(NMSetting *setting, const char *item)
+{
+    item = _sanitize_connection_permission_user(item);
+    if (!item)
+        return FALSE;
+    nm_setting_connection_remove_permission_by_value(NM_SETTING_CONNECTION(setting),
+                                                     NM_SETTINGS_CONNECTION_PERMISSION_USER,
+                                                     item,
+                                                     NULL);
+    return TRUE;
+}
+
+static const char *const *_complete_fcn_connection_master(ARGS_COMPLETE_FCN)
+{
+    NMRemoteConnection *const *connections = NULL;
+    guint                      len         = 0;
+    guint                      i, j;
+    char **                    result;
+    NMSettingConnection *      s_con;
+    const char *               expected_type = NULL;
+    gsize                      text_len;
+
+    if (environment && environment->get_nm_connections) {
+        connections = environment->get_nm_connections(environment, environment_user_data, &len);
+    }
+    if (!len)
+        return NULL;
+
+    if ((!text || !*text) && operation_context && operation_context->connection) {
+        /* if we have no text yet, initially only complete for matching
+         * slave-type. */
+        s_con = nm_connection_get_setting_connection(operation_context->connection);
+        if (s_con)
+            expected_type = nm_setting_connection_get_slave_type(s_con);
+    }
+
+    text_len = text ? strlen(text) : 0;
+
+    result = g_new(char *, (2 * len) + 1);
+    for (i = 0, j = 0; i < len; i++) {
+        const char *v;
+
+        s_con = nm_connection_get_setting_connection(NM_CONNECTION(connections[i]));
+        if (!s_con)
+            continue;
+
+        if (expected_type
+            && !nm_streq0(nm_setting_connection_get_connection_type(s_con), expected_type))
+            continue;
+
+        if (text && text[0]) {
+            /* if we have text, also complete for the UUID. */
+            v = nm_setting_connection_get_uuid(s_con);
+            if (v && (!text || strncmp(text, v, text_len) == 0))
+                result[j++] = g_strdup(v);
+        }
+
+        v = nm_setting_connection_get_interface_name(s_con);
+        if (v && (!text || strncmp(text, v, text_len) == 0))
+            result[j++] = g_strdup(v);
+    }
+    if (j)
+        result[j++] = NULL;
+    else {
+        g_free(result);
+        result = NULL;
+    }
+
+    return (const char *const *) (*out_to_free = result);
 }
 
 static const char *
-_multilist_validate2_fcn_uuid (NMSetting *setting,
-                               const char *item,
-                               GError **error)
+_multilist_validate2_fcn_uuid(NMSetting *setting, const char *item, GError **error)
 {
-	if (!nm_utils_is_uuid (item)) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    _("the value '%s' is not a valid UUID"),
-		                    item);
-		return NULL;
-	}
+    if (!nm_utils_is_uuid(item)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("the value '%s' is not a valid UUID"),
+                           item);
+        return NULL;
+    }
 
-	return item;
+    return item;
 }
 
-static gconstpointer
-_get_fcn_connection_metered (ARGS_GET_FCN)
+static gconstpointer _get_fcn_connection_metered(ARGS_GET_FCN)
 {
-	NMSettingConnection *s_conn = NM_SETTING_CONNECTION (setting);
-	const char *s;
+    NMSettingConnection *s_conn = NM_SETTING_CONNECTION(setting);
+    const char *         s;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	switch (nm_setting_connection_get_metered (s_conn)) {
-	case NM_METERED_YES:
-		s = N_("yes");
-		break;
-	case NM_METERED_NO:
-		s = N_("no");
-		break;
-	case NM_METERED_UNKNOWN:
-	default:
-		NM_SET_OUT (out_is_default, TRUE);
-		s = N_("unknown");
-		break;
-	}
+    switch (nm_setting_connection_get_metered(s_conn)) {
+    case NM_METERED_YES:
+        s = N_("yes");
+        break;
+    case NM_METERED_NO:
+        s = N_("no");
+        break;
+    case NM_METERED_UNKNOWN:
+    default:
+        NM_SET_OUT(out_is_default, TRUE);
+        s = N_("unknown");
+        break;
+    }
 
-	if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
-		return _(s);
-	return s;
+    if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+        return _(s);
+    return s;
 }
 
-static gboolean
-_set_fcn_connection_metered (ARGS_SET_FCN)
+static gboolean _set_fcn_connection_metered(ARGS_SET_FCN)
 {
-	NMMetered metered;
-	NMTernary ts_val;
+    NMMetered metered;
+    NMTernary ts_val;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!nmc_string_to_ternary (value, &ts_val, error))
-		return FALSE;
+    if (!nmc_string_to_ternary(value, &ts_val, error))
+        return FALSE;
 
-	switch (ts_val) {
-	case NM_TERNARY_TRUE:
-		metered = NM_METERED_YES;
-		break;
-	case NM_TERNARY_FALSE:
-		metered = NM_METERED_NO;
-		break;
-	case NM_TERNARY_DEFAULT:
-		metered = NM_METERED_UNKNOWN;
-		break;
-	default:
-		g_assert_not_reached();
-	}
+    switch (ts_val) {
+    case NM_TERNARY_TRUE:
+        metered = NM_METERED_YES;
+        break;
+    case NM_TERNARY_FALSE:
+        metered = NM_METERED_NO;
+        break;
+    case NM_TERNARY_DEFAULT:
+        metered = NM_METERED_UNKNOWN;
+        break;
+    default:
+        g_assert_not_reached();
+    }
 
-	g_object_set (setting, property_info->property_name, metered, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, metered, NULL);
+    return TRUE;
 }
 
 static char *
-dcb_flags_to_string (NMSettingDcbFlags flags)
+dcb_flags_to_string(NMSettingDcbFlags flags)
 {
-	GString *flag_str;
+    GString *flag_str;
 
-	if (flags == 0)
-		return g_strdup (_("0 (disabled)"));
+    if (flags == 0)
+        return g_strdup(_("0 (disabled)"));
 
-	flag_str = g_string_new (NULL);
-	g_string_printf (flag_str, "%d (", flags);
+    flag_str = g_string_new(NULL);
+    g_string_printf(flag_str, "%d (", flags);
 
-	if (flags & NM_SETTING_DCB_FLAG_ENABLE)
-		g_string_append (flag_str, _("enabled, "));
-	if (flags & NM_SETTING_DCB_FLAG_ADVERTISE)
-		g_string_append (flag_str, _("advertise, "));
-	if (flags & NM_SETTING_DCB_FLAG_WILLING)
-		g_string_append (flag_str, _("willing, "));
+    if (flags & NM_SETTING_DCB_FLAG_ENABLE)
+        g_string_append(flag_str, _("enabled, "));
+    if (flags & NM_SETTING_DCB_FLAG_ADVERTISE)
+        g_string_append(flag_str, _("advertise, "));
+    if (flags & NM_SETTING_DCB_FLAG_WILLING)
+        g_string_append(flag_str, _("willing, "));
 
-	if (flag_str->str[flag_str->len-1] == '(')
-		g_string_append (flag_str, _("unknown"));
-	else
-		g_string_truncate (flag_str, flag_str->len-2);  /* chop off trailing ', ' */
+    if (flag_str->str[flag_str->len - 1] == '(')
+        g_string_append(flag_str, _("unknown"));
+    else
+        g_string_truncate(flag_str, flag_str->len - 2); /* chop off trailing ', ' */
 
-	g_string_append_c (flag_str, ')');
+    g_string_append_c(flag_str, ')');
 
-	return g_string_free (flag_str, FALSE);
+    return g_string_free(flag_str, FALSE);
 }
 
-static gconstpointer
-_get_fcn_dcb (ARGS_GET_FCN)
+static gconstpointer _get_fcn_dcb(ARGS_GET_FCN)
 {
-	NMSettingDcb *s_dcb = NM_SETTING_DCB (setting);
-	GString *str;
-	guint i;
+    NMSettingDcb *s_dcb = NM_SETTING_DCB(setting);
+    GString *     str;
+    guint         i;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	str = g_string_new (NULL);
-	for (i = 0; i < 8; i++) {
-		guint v;
+    str = g_string_new(NULL);
+    for (i = 0; i < 8; i++) {
+        guint v;
 
-		v = property_info->property_typ_data->subtype.dcb.get_fcn (s_dcb, i);
+        v = property_info->property_typ_data->subtype.dcb.get_fcn(s_dcb, i);
 
-		if (i > 0)
-			g_string_append_c (str, ',');
-		g_string_append_printf (str, "%u", v);
-	}
+        if (i > 0)
+            g_string_append_c(str, ',');
+        g_string_append_printf(str, "%u", v);
+    }
 
-	RETURN_STR_TO_FREE (g_string_free (str, FALSE));
+    RETURN_STR_TO_FREE(g_string_free(str, FALSE));
 }
 
-#define DCB_ALL_FLAGS (NM_SETTING_DCB_FLAG_ENABLE | NM_SETTING_DCB_FLAG_ADVERTISE | NM_SETTING_DCB_FLAG_WILLING)
+#define DCB_ALL_FLAGS \
+    (NM_SETTING_DCB_FLAG_ENABLE | NM_SETTING_DCB_FLAG_ADVERTISE | NM_SETTING_DCB_FLAG_WILLING)
 
-static gconstpointer
-_get_fcn_dcb_flags (ARGS_GET_FCN)
+static gconstpointer _get_fcn_dcb_flags(ARGS_GET_FCN)
 {
-	nm_auto_unset_gvalue GValue val = G_VALUE_INIT;
-	guint v;
+    nm_auto_unset_gvalue GValue val = G_VALUE_INIT;
+    guint                       v;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	g_value_init (&val, G_TYPE_UINT);
-	g_object_get_property (G_OBJECT (setting), property_info->property_name, &val);
-	v = g_value_get_uint (&val);
+    g_value_init(&val, G_TYPE_UINT);
+    g_object_get_property(G_OBJECT(setting), property_info->property_name, &val);
+    v = g_value_get_uint(&val);
 
-	RETURN_STR_TO_FREE (dcb_flags_to_string (v));
+    RETURN_STR_TO_FREE(dcb_flags_to_string(v));
 }
 
-static gboolean
-_set_fcn_dcb_flags (ARGS_SET_FCN)
-{
-	NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
-	long int t;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
-
-	/* Check for overall hex numeric value */
-	t = _nm_utils_ascii_str_to_int64 (value, 0, 0, DCB_ALL_FLAGS, -1);
-	if (t != -1)
-		flags = (guint) t;
-	else {
-		gs_free const char **strv = NULL;
-		const char *const*iter;
-
-		/* Check for individual flag numbers */
-		strv = nm_utils_strsplit_set (value, " \t,");
-		for (iter = strv; iter && *iter; iter++) {
-			t = _nm_utils_ascii_str_to_int64 (*iter, 0, 0, DCB_ALL_FLAGS, -1);
-
-			if (   g_ascii_strcasecmp (*iter, "enable") == 0
-			    || g_ascii_strcasecmp (*iter, "enabled") == 0
-			    || t == NM_SETTING_DCB_FLAG_ENABLE)
-				flags |= NM_SETTING_DCB_FLAG_ENABLE;
-			else if (   g_ascii_strcasecmp (*iter, "advertise") == 0
-				 || t == NM_SETTING_DCB_FLAG_ADVERTISE)
-				flags |= NM_SETTING_DCB_FLAG_ADVERTISE;
-			else if (   g_ascii_strcasecmp (*iter, "willing") == 0
-				 || t == NM_SETTING_DCB_FLAG_WILLING)
-				flags |= NM_SETTING_DCB_FLAG_WILLING;
-			else if (   g_ascii_strcasecmp (*iter, "disable") == 0
-				 || g_ascii_strcasecmp (*iter, "disabled") == 0
-				 || t == 0) {
-				/* pass */
-			} else {
-				g_set_error (error, 1, 0, _("'%s' is not a valid DCB flag"), *iter);
-				return FALSE;
-			}
-		}
-	}
-
-	/* Validate the flags according to the property spec */
-	if (!validate_flags (setting, property_info->property_name, (guint) flags, error))
-		return FALSE;
-
-	g_object_set (setting, property_info->property_name, (guint) flags, NULL);
-	return TRUE;
+static gboolean _set_fcn_dcb_flags(ARGS_SET_FCN)
+{
+    NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
+    long int          t;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    /* Check for overall hex numeric value */
+    t = _nm_utils_ascii_str_to_int64(value, 0, 0, DCB_ALL_FLAGS, -1);
+    if (t != -1)
+        flags = (guint) t;
+    else {
+        gs_free const char **strv = NULL;
+        const char *const *  iter;
+
+        /* Check for individual flag numbers */
+        strv = nm_utils_strsplit_set(value, " \t,");
+        for (iter = strv; iter && *iter; iter++) {
+            t = _nm_utils_ascii_str_to_int64(*iter, 0, 0, DCB_ALL_FLAGS, -1);
+
+            if (g_ascii_strcasecmp(*iter, "enable") == 0
+                || g_ascii_strcasecmp(*iter, "enabled") == 0 || t == NM_SETTING_DCB_FLAG_ENABLE)
+                flags |= NM_SETTING_DCB_FLAG_ENABLE;
+            else if (g_ascii_strcasecmp(*iter, "advertise") == 0
+                     || t == NM_SETTING_DCB_FLAG_ADVERTISE)
+                flags |= NM_SETTING_DCB_FLAG_ADVERTISE;
+            else if (g_ascii_strcasecmp(*iter, "willing") == 0 || t == NM_SETTING_DCB_FLAG_WILLING)
+                flags |= NM_SETTING_DCB_FLAG_WILLING;
+            else if (g_ascii_strcasecmp(*iter, "disable") == 0
+                     || g_ascii_strcasecmp(*iter, "disabled") == 0 || t == 0) {
+                /* pass */
+            } else {
+                g_set_error(error, 1, 0, _("'%s' is not a valid DCB flag"), *iter);
+                return FALSE;
+            }
+        }
+    }
+
+    /* Validate the flags according to the property spec */
+    if (!validate_flags(setting, property_info->property_name, (guint) flags, error))
+        return FALSE;
+
+    g_object_set(setting, property_info->property_name, (guint) flags, NULL);
+    return TRUE;
 }
 
 static gboolean
-dcb_parse_uint_array (const char *val,
-                      guint max,
-                      guint other,
-                      guint out_array[static 8],
-                      GError **error)
-{
-	gs_free const char **items = NULL;
-	const char *const*iter;
-	gsize i;
-
-	items = nm_utils_strsplit_set_with_empty (val, ",");
-	if (NM_PTRARRAY_LEN (items) != 8) {
-		g_set_error_literal (error, 1, 0, _("must contain 8 comma-separated numbers"));
-		return FALSE;
-	}
-
-	i = 0;
-	for (iter = items; *iter; iter++) {
-		gint64 num;
-
-		num = _nm_utils_ascii_str_to_int64 (*iter, 10, 0, other ?: max, -1);
-
-		/* If number is greater than 'max' it must equal 'other' */
-		if (   num == -1
-		    || (other && (num > max) && (num != other))) {
-			if (other) {
-				g_set_error (error, 1, 0, _("'%s' not a number between 0 and %u (inclusive) or %u"),
-				             *iter, max, other);
-			} else {
-				g_set_error (error, 1, 0, _("'%s' not a number between 0 and %u (inclusive)"),
-				             *iter, max);
-			}
-			return FALSE;
-		}
-		nm_assert (i < 8);
-		out_array[i++] = (guint) num;
-	}
-
-	return TRUE;
+dcb_parse_uint_array(const char *val,
+                     guint       max,
+                     guint       other,
+                     guint       out_array[static 8],
+                     GError **   error)
+{
+    gs_free const char **items = NULL;
+    const char *const *  iter;
+    gsize                i;
+
+    items = nm_utils_strsplit_set_with_empty(val, ",");
+    if (NM_PTRARRAY_LEN(items) != 8) {
+        g_set_error_literal(error, 1, 0, _("must contain 8 comma-separated numbers"));
+        return FALSE;
+    }
+
+    i = 0;
+    for (iter = items; *iter; iter++) {
+        gint64 num;
+
+        num = _nm_utils_ascii_str_to_int64(*iter, 10, 0, other ?: max, -1);
+
+        /* If number is greater than 'max' it must equal 'other' */
+        if (num == -1 || (other && (num > max) && (num != other))) {
+            if (other) {
+                g_set_error(error,
+                            1,
+                            0,
+                            _("'%s' not a number between 0 and %u (inclusive) or %u"),
+                            *iter,
+                            max,
+                            other);
+            } else {
+                g_set_error(error,
+                            1,
+                            0,
+                            _("'%s' not a number between 0 and %u (inclusive)"),
+                            *iter,
+                            max);
+            }
+            return FALSE;
+        }
+        nm_assert(i < 8);
+        out_array[i++] = (guint) num;
+    }
+
+    return TRUE;
 }
 
 static void
-dcb_check_feature_enabled (const NMMetaEnvironment *environment, gpointer *environment_user_data, NMSettingDcb *s_dcb, const char *flags_prop)
+dcb_check_feature_enabled(const NMMetaEnvironment *environment,
+                          gpointer *               environment_user_data,
+                          NMSettingDcb *           s_dcb,
+                          const char *             flags_prop)
 {
-	NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
+    NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
 
-	g_object_get (s_dcb, flags_prop, &flags, NULL);
-	if (!(flags & NM_SETTING_DCB_FLAG_ENABLE)) {
-		_env_warn_fcn (environment, environment_user_data,
-		               NM_META_ENV_WARN_LEVEL_WARN,
-		               N_("changes will have no effect until '%s' includes 1 (enabled)"),
-		               flags_prop);
-	}
+    g_object_get(s_dcb, flags_prop, &flags, NULL);
+    if (!(flags & NM_SETTING_DCB_FLAG_ENABLE)) {
+        _env_warn_fcn(environment,
+                      environment_user_data,
+                      NM_META_ENV_WARN_LEVEL_WARN,
+                      N_("changes will have no effect until '%s' includes 1 (enabled)"),
+                      flags_prop);
+    }
 }
 
-static gboolean
-_set_fcn_dcb (ARGS_SET_FCN)
+static gboolean _set_fcn_dcb(ARGS_SET_FCN)
 {
-	guint i = 0;
-	guint nums[8] = { 0, };
+    guint i       = 0;
+    guint nums[8] = {
+        0,
+    };
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!dcb_parse_uint_array (value,
-	                           property_info->property_typ_data->subtype.dcb.max,
-	                           property_info->property_typ_data->subtype.dcb.other,
-	                           nums,
-	                           error))
-		return FALSE;
+    if (!dcb_parse_uint_array(value,
+                              property_info->property_typ_data->subtype.dcb.max,
+                              property_info->property_typ_data->subtype.dcb.other,
+                              nums,
+                              error))
+        return FALSE;
 
-	if (property_info->property_typ_data->subtype.dcb.is_percent) {
-		guint sum = 0;
+    if (property_info->property_typ_data->subtype.dcb.is_percent) {
+        guint sum = 0;
 
-		for (i = 0; i < 8; i++) {
-			sum += nums[i];
-			if (nums[i] > 100 || sum > 100)
-				break;
-		}
-		if (sum != 100) {
-			g_set_error_literal (error, 1, 0, _("bandwidth percentages must total 100%%"));
-			return FALSE;
-		}
-	}
+        for (i = 0; i < 8; i++) {
+            sum += nums[i];
+            if (nums[i] > 100 || sum > 100)
+                break;
+        }
+        if (sum != 100) {
+            g_set_error_literal(error, 1, 0, _("bandwidth percentages must total 100%%"));
+            return FALSE;
+        }
+    }
 
-	for (i = 0; i < 8; i++)
-		property_info->property_typ_data->subtype.dcb.set_fcn (NM_SETTING_DCB (setting), i, nums[i]);
+    for (i = 0; i < 8; i++)
+        property_info->property_typ_data->subtype.dcb.set_fcn(NM_SETTING_DCB(setting), i, nums[i]);
 
-	dcb_check_feature_enabled (environment, environment_user_data, NM_SETTING_DCB (setting), NM_SETTING_DCB_PRIORITY_GROUP_FLAGS);
-	return TRUE;
+    dcb_check_feature_enabled(environment,
+                              environment_user_data,
+                              NM_SETTING_DCB(setting),
+                              NM_SETTING_DCB_PRIORITY_GROUP_FLAGS);
+    return TRUE;
 }
 
-static gconstpointer
-_get_fcn_dcb_bool (ARGS_GET_FCN)
+static gconstpointer _get_fcn_dcb_bool(ARGS_GET_FCN)
 {
-	NMSettingDcb *s_dcb = NM_SETTING_DCB (setting);
-	GString *str;
-	guint i;
+    NMSettingDcb *s_dcb = NM_SETTING_DCB(setting);
+    GString *     str;
+    guint         i;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	str = g_string_new (NULL);
-	for (i = 0; i < 8; i++) {
-		gboolean v;
+    str = g_string_new(NULL);
+    for (i = 0; i < 8; i++) {
+        gboolean v;
 
-		v = property_info->property_typ_data->subtype.dcb_bool.get_fcn (s_dcb, i);
+        v = property_info->property_typ_data->subtype.dcb_bool.get_fcn(s_dcb, i);
 
-		if (i > 0)
-			g_string_append_c (str, ',');
-		g_string_append_c (str, v ? '1': '0');
-	}
+        if (i > 0)
+            g_string_append_c(str, ',');
+        g_string_append_c(str, v ? '1' : '0');
+    }
 
-	RETURN_STR_TO_FREE (g_string_free (str, FALSE));
+    RETURN_STR_TO_FREE(g_string_free(str, FALSE));
 }
 
-static gboolean
-_set_fcn_dcb_bool (ARGS_SET_FCN)
+static gboolean _set_fcn_dcb_bool(ARGS_SET_FCN)
 {
-	guint i = 0;
-	guint nums[8] = { 0, };
+    guint i       = 0;
+    guint nums[8] = {
+        0,
+    };
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!dcb_parse_uint_array (value, 1, 0, nums, error))
-		return FALSE;
+    if (!dcb_parse_uint_array(value, 1, 0, nums, error))
+        return FALSE;
 
-	for (i = 0; i < 8; i++) {
-		property_info->property_typ_data->subtype.dcb_bool.set_fcn (NM_SETTING_DCB (setting),
-		                                                            i,
-		                                                            !!nums[i]);
-	}
+    for (i = 0; i < 8; i++) {
+        property_info->property_typ_data->subtype.dcb_bool.set_fcn(NM_SETTING_DCB(setting),
+                                                                   i,
+                                                                   !!nums[i]);
+    }
 
-	dcb_check_feature_enabled (environment,
-	                           environment_user_data,
-	                           NM_SETTING_DCB (setting),
-	                           (  property_info->property_typ_data->subtype.dcb_bool.with_flow_control_flags
-	                            ? NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS
-	                            : NM_SETTING_DCB_PRIORITY_GROUP_FLAGS));
-	return TRUE;
+    dcb_check_feature_enabled(
+        environment,
+        environment_user_data,
+        NM_SETTING_DCB(setting),
+        (property_info->property_typ_data->subtype.dcb_bool.with_flow_control_flags
+             ? NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS
+             : NM_SETTING_DCB_PRIORITY_GROUP_FLAGS));
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_gsm_sim_operator_id (ARGS_SET_FCN)
+static gboolean _set_fcn_gsm_sim_operator_id(ARGS_SET_FCN)
 {
-	const char *p = value;
+    const char *p = value;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!NM_IN_SET (strlen (value), 5, 6)) {
-		g_set_error_literal (error, 1, 0, _("SIM operator ID must be a 5 or 6 number MCCMNC code"));
-		return FALSE;
-	}
+    if (!NM_IN_SET(strlen(value), 5, 6)) {
+        g_set_error_literal(error, 1, 0, _("SIM operator ID must be a 5 or 6 number MCCMNC code"));
+        return FALSE;
+    }
 
-	while (p && *p) {
-		if (!g_ascii_isdigit (*p++)) {
-			g_set_error_literal (error, 1, 0, _("SIM operator ID must be a 5 or 6 number MCCMNC code"));
-			return FALSE;
-		}
-	}
-	g_object_set (G_OBJECT (setting),
-	              NM_SETTING_GSM_SIM_OPERATOR_ID,
-	              value,
-	              NULL);
-	return TRUE;
+    while (p && *p) {
+        if (!g_ascii_isdigit(*p++)) {
+            g_set_error_literal(error,
+                                1,
+                                0,
+                                _("SIM operator ID must be a 5 or 6 number MCCMNC code"));
+            return FALSE;
+        }
+    }
+    g_object_set(G_OBJECT(setting), NM_SETTING_GSM_SIM_OPERATOR_ID, value, NULL);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_infiniband_p_key (ARGS_SET_FCN)
+static gboolean _set_fcn_infiniband_p_key(ARGS_SET_FCN)
 {
-	gint64 p_key;
+    gint64 p_key;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (nm_streq (value, "default"))
-		p_key = -1;
-	else {
-		p_key = _nm_utils_ascii_str_to_int64 (value, 0, -1, G_MAXUINT16, -2);
-		if (p_key == -2) {
-			g_set_error (error, 1, 0, _("'%s' is not a valid IBoIP P_Key"), value);
-			return FALSE;
-		}
-	}
+    if (nm_streq(value, "default"))
+        p_key = -1;
+    else {
+        p_key = _nm_utils_ascii_str_to_int64(value, 0, -1, G_MAXUINT16, -2);
+        if (p_key == -2) {
+            g_set_error(error, 1, 0, _("'%s' is not a valid IBoIP P_Key"), value);
+            return FALSE;
+        }
+    }
 
-	g_object_set (setting, property_info->property_name, (int) p_key, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, (int) p_key, NULL);
+    return TRUE;
 }
 
-static gconstpointer
-_get_fcn_infiniband_p_key (ARGS_GET_FCN)
+static gconstpointer _get_fcn_infiniband_p_key(ARGS_GET_FCN)
 {
-	NMSettingInfiniband *s_infiniband = NM_SETTING_INFINIBAND (setting);
-	int p_key;
+    NMSettingInfiniband *s_infiniband = NM_SETTING_INFINIBAND(setting);
+    int                  p_key;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	p_key = nm_setting_infiniband_get_p_key (s_infiniband);
-	if (p_key == -1) {
-		NM_SET_OUT (out_is_default, TRUE);
-		if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
-			return "default";
-		else
-			return _("default");
-	}
+    p_key = nm_setting_infiniband_get_p_key(s_infiniband);
+    if (p_key == -1) {
+        NM_SET_OUT(out_is_default, TRUE);
+        if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY)
+            return "default";
+        else
+            return _("default");
+    }
 
-	RETURN_STR_TO_FREE (g_strdup_printf ("0x%04x", p_key));
+    RETURN_STR_TO_FREE(g_strdup_printf("0x%04x", p_key));
 }
 
-static gconstpointer
-_get_fcn_objlist (ARGS_GET_FCN)
-{
-	GString *str = NULL;
-	guint num;
-	guint idx;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	num = property_info->property_typ_data->subtype.objlist.get_num_fcn (setting);
-
-	for (idx = 0; idx < num; idx++) {
-		gsize start_offset;
-
-		if (!str)
-			str = g_string_new (NULL);
-		else if (str->len > 0) {
-			if (   get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
-			    && property_info->property_typ_data->subtype.objlist.delimit_pretty_with_semicolon)
-				g_string_append (str, "; ");
-			else {
-				G_STATIC_ASSERT_EXPR (ESCAPED_TOKENS_DELIMITER == ',');
-				g_string_append (str, ", ");
-			}
-		}
-
-		start_offset = str->len;
-
-		property_info->property_typ_data->subtype.objlist.obj_to_str_fcn (get_type,
-		                                                                  setting,
-		                                                                  idx,
-		                                                                  str);
-
-		if (start_offset == str->len) {
-			/* nothing was appended. Remove the delimiter again. */
-			nm_assert_not_reached ();
-			if (str->len > 0)
-				g_string_truncate (str, str->len - 2);
-			continue;
-		}
-
-		nm_assert (start_offset < str->len);
-		nm_assert (strlen (str->str) == str->len);
-		nm_assert (   property_info->property_typ_data->subtype.objlist.strsplit_plain
-		           || get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
-		           || _value_strsplit_assert_unsplitable (&str->str[start_offset]));
-	}
-
-	NM_SET_OUT (out_is_default, num == 0);
-	if (str)
-		RETURN_STR_TO_FREE (g_string_free (str, FALSE));
-	return NULL;
-}
-
-static void
-_objlist_obj_to_str_fcn_ip_config_addresses (NMMetaAccessorGetType get_type,
-                                             NMSetting *setting,
-                                             guint idx,
-                                             GString *str)
+static gconstpointer _get_fcn_objlist(ARGS_GET_FCN)
 {
-	NMIPAddress *obj;
+    GString *str = NULL;
+    guint    num;
+    guint    idx;
 
-	obj = nm_setting_ip_config_get_address (NM_SETTING_IP_CONFIG (setting),
-	                                        idx);
-	g_string_append_printf (str,
-	                        "%s/%u",
-	                        nm_ip_address_get_address (obj),
-	                        nm_ip_address_get_prefix (obj));
-}
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-static void
-_objlist_obj_to_str_fcn_ip_config_routes (NMMetaAccessorGetType get_type,
-                                          NMSetting *setting,
-                                          guint idx,
-                                          GString *str)
-{
-	NMIPRoute *route;
-	gs_free char *attr_str = NULL;
-	gs_strfreev char **attr_names = NULL;
-	gs_unref_hashtable GHashTable *hash = g_hash_table_new (nm_str_hash, g_str_equal);
-	int j;
-
-	route = nm_setting_ip_config_get_route (NM_SETTING_IP_CONFIG (setting), idx);
-
-	attr_names = nm_ip_route_get_attribute_names (route);
-	for (j = 0; attr_names && attr_names[j]; j++) {
-		g_hash_table_insert (hash, attr_names[j],
-		                     nm_ip_route_get_attribute (route, attr_names[j]));
-	}
-
-	attr_str = nm_utils_format_variant_attributes (hash, ' ', '=');
-
-	if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY) {
-		g_string_append_printf (str, "%s/%u",
-		                        nm_ip_route_get_dest (route),
-		                        nm_ip_route_get_prefix (route));
-
-		if (nm_ip_route_get_next_hop (route))
-			g_string_append_printf (str, " %s", nm_ip_route_get_next_hop (route));
-		if (nm_ip_route_get_metric (route) != -1)
-			g_string_append_printf (str, " %u", (guint32) nm_ip_route_get_metric (route));
-		if (attr_str)
-			g_string_append_printf (str, " %s", attr_str);
-	} else {
-		g_string_append (str, "{ ");
-
-		g_string_append_printf (str, "ip = %s/%u",
-		                        nm_ip_route_get_dest (route),
-		                        nm_ip_route_get_prefix (route));
-
-		if (nm_ip_route_get_next_hop (route)) {
-			g_string_append_printf (str, ", nh = %s",
-			                        nm_ip_route_get_next_hop (route));
-		}
-
-		if (nm_ip_route_get_metric (route) != -1)
-			g_string_append_printf (str, ", mt = %u", (guint32) nm_ip_route_get_metric (route));
-		if (attr_str)
-			g_string_append_printf (str, " %s", attr_str);
-
-		g_string_append (str, " }");
-	}
-}
+    num = property_info->property_typ_data->subtype.objlist.get_num_fcn(setting);
 
-static gboolean
-_set_fcn_ip_config_method (ARGS_SET_FCN)
-{
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    for (idx = 0; idx < num; idx++) {
+        gsize start_offset;
+
+        if (!str)
+            str = g_string_new(NULL);
+        else if (str->len > 0) {
+            if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
+                && property_info->property_typ_data->subtype.objlist.delimit_pretty_with_semicolon)
+                g_string_append(str, "; ");
+            else {
+                G_STATIC_ASSERT_EXPR(ESCAPED_TOKENS_DELIMITER == ',');
+                g_string_append(str, ", ");
+            }
+        }
 
-	/* Silently accept "static" and convert to "manual" */
-	if (   strlen (value) > 1
-	    && matches (value, "static")) {
-		if (nm_setting_ip_config_get_addr_family (NM_SETTING_IP_CONFIG (setting)) == AF_INET)
-			value = NM_SETTING_IP4_CONFIG_METHOD_MANUAL;
-		else
-			value = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
-	}
+        start_offset = str->len;
 
-	value = nmc_string_is_valid (value,
-	                             (const char **) property_info->property_typ_data->values_static,
-	                             error);
-	if (!value)
-		return FALSE;
+        property_info->property_typ_data->subtype.objlist.obj_to_str_fcn(get_type,
+                                                                         setting,
+                                                                         idx,
+                                                                         str);
 
-	g_object_set (setting, property_info->property_name, value, NULL);
-	return TRUE;
+        if (start_offset == str->len) {
+            /* nothing was appended. Remove the delimiter again. */
+            nm_assert_not_reached();
+            if (str->len > 0)
+                g_string_truncate(str, str->len - 2);
+            continue;
+        }
+
+        nm_assert(start_offset < str->len);
+        nm_assert(strlen(str->str) == str->len);
+        nm_assert(property_info->property_typ_data->subtype.objlist.strsplit_plain
+                  || get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY
+                  || _value_strsplit_assert_unsplitable(&str->str[start_offset]));
+    }
+
+    NM_SET_OUT(out_is_default, num == 0);
+    if (str)
+        RETURN_STR_TO_FREE(g_string_free(str, FALSE));
+    return NULL;
 }
 
-static const char *
-_multilist_validate2_fcn_ip_config_dns (NMSetting *setting,
-                                        const char *value,
-                                        GError **error)
+static void
+_objlist_obj_to_str_fcn_ip_config_addresses(NMMetaAccessorGetType get_type,
+                                            NMSetting *           setting,
+                                            guint                 idx,
+                                            GString *             str)
 {
-	int addr_family = nm_setting_ip_config_get_addr_family (NM_SETTING_IP_CONFIG (setting));
+    NMIPAddress *obj;
 
-	if (!nm_utils_parse_inaddr (addr_family, value, NULL)) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    _("invalid IPv%c address '%s'"),
-		                    nm_utils_addr_family_to_char (addr_family),
-		                    value);
-		return NULL;
-	}
+    obj = nm_setting_ip_config_get_address(NM_SETTING_IP_CONFIG(setting), idx);
+    g_string_append_printf(str,
+                           "%s/%u",
+                           nm_ip_address_get_address(obj),
+                           nm_ip_address_get_prefix(obj));
+}
 
-	return value;
+static void
+_objlist_obj_to_str_fcn_ip_config_routes(NMMetaAccessorGetType get_type,
+                                         NMSetting *           setting,
+                                         guint                 idx,
+                                         GString *             str)
+{
+    NMIPRoute *        route;
+    gs_free char *     attr_str         = NULL;
+    gs_strfreev char **attr_names       = NULL;
+    gs_unref_hashtable GHashTable *hash = g_hash_table_new(nm_str_hash, g_str_equal);
+    int                            j;
+
+    route = nm_setting_ip_config_get_route(NM_SETTING_IP_CONFIG(setting), idx);
+
+    attr_names = nm_ip_route_get_attribute_names(route);
+    for (j = 0; attr_names && attr_names[j]; j++) {
+        g_hash_table_insert(hash, attr_names[j], nm_ip_route_get_attribute(route, attr_names[j]));
+    }
+
+    attr_str = nm_utils_format_variant_attributes(hash, ' ', '=');
+
+    if (get_type != NM_META_ACCESSOR_GET_TYPE_PRETTY) {
+        g_string_append_printf(str,
+                               "%s/%u",
+                               nm_ip_route_get_dest(route),
+                               nm_ip_route_get_prefix(route));
+
+        if (nm_ip_route_get_next_hop(route))
+            g_string_append_printf(str, " %s", nm_ip_route_get_next_hop(route));
+        if (nm_ip_route_get_metric(route) != -1)
+            g_string_append_printf(str, " %u", (guint32) nm_ip_route_get_metric(route));
+        if (attr_str)
+            g_string_append_printf(str, " %s", attr_str);
+    } else {
+        g_string_append(str, "{ ");
+
+        g_string_append_printf(str,
+                               "ip = %s/%u",
+                               nm_ip_route_get_dest(route),
+                               nm_ip_route_get_prefix(route));
+
+        if (nm_ip_route_get_next_hop(route)) {
+            g_string_append_printf(str, ", nh = %s", nm_ip_route_get_next_hop(route));
+        }
+
+        if (nm_ip_route_get_metric(route) != -1)
+            g_string_append_printf(str, ", mt = %u", (guint32) nm_ip_route_get_metric(route));
+        if (attr_str)
+            g_string_append_printf(str, " %s", attr_str);
+
+        g_string_append(str, " }");
+    }
+}
+
+static gboolean _set_fcn_ip_config_method(ARGS_SET_FCN)
+{
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
+
+    /* Silently accept "static" and convert to "manual" */
+    if (strlen(value) > 1 && matches(value, "static")) {
+        if (nm_setting_ip_config_get_addr_family(NM_SETTING_IP_CONFIG(setting)) == AF_INET)
+            value = NM_SETTING_IP4_CONFIG_METHOD_MANUAL;
+        else
+            value = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
+    }
+
+    value = nmc_string_is_valid(value,
+                                (const char **) property_info->property_typ_data->values_static,
+                                error);
+    if (!value)
+        return FALSE;
+
+    g_object_set(setting, property_info->property_name, value, NULL);
+    return TRUE;
 }
 
-static gboolean
-_multilist_add_fcn_ip_config_dns_options (NMSetting *setting,
-                                          const char *item)
+static const char *
+_multilist_validate2_fcn_ip_config_dns(NMSetting *setting, const char *value, GError **error)
 {
-	NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting);
+    int addr_family = nm_setting_ip_config_get_addr_family(NM_SETTING_IP_CONFIG(setting));
+
+    if (!nm_utils_parse_inaddr(addr_family, value, NULL)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("invalid IPv%c address '%s'"),
+                           nm_utils_addr_family_to_char(addr_family),
+                           value);
+        return NULL;
+    }
 
-	if (!nm_setting_ip_config_add_dns_option (s_ip, item)) {
-		/* maybe it failed, because the element already existed. *sigh*. */
-		nm_setting_ip_config_remove_dns_option_by_value (s_ip, item);
-		return nm_setting_ip_config_add_dns_option (s_ip, item);
-	}
-	return TRUE;
+    return value;
 }
 
 static gboolean
-_set_fcn_objlist (ARGS_SET_FCN)
-{
-	gs_free const char **strv = NULL;
-	gsize i, nstrv;
-
-	if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (property_info, modifier, value)) {
-		if (property_info->property_typ_data->subtype.objlist.clear_all_fcn) {
-			property_info->property_typ_data->subtype.objlist.clear_all_fcn (setting);
-			return TRUE;
-		}
-		return _gobject_property_reset_default (setting, property_info->property_name);
-	}
-
-	if (   _SET_FCN_DO_REMOVE (modifier, value)
-	    && (   property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u
-	        || property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_s)) {
-		gs_free gint64 *indexes = NULL;
-
-		indexes = _value_str_as_index_list (value, &nstrv);
-		if (indexes) {
-			gint64 num;
-
-			num = property_info->property_typ_data->subtype.objlist.get_num_fcn (setting);
-			for (i = 0; i < nstrv; i++) {
-				gint64 idx = indexes[i];
-
-				if (idx >= num)
-					continue;
-				if (property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u)
-					property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u (setting, idx);
-				else
-					property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_s (setting, idx);
-			}
-			return TRUE;
-		}
-	}
-
-	strv = _value_strsplit (value,
-	                          property_info->property_typ_data->subtype.objlist.strsplit_plain
-	                        ? VALUE_STRSPLIT_MODE_OBJLIST
-	                        : VALUE_STRSPLIT_MODE_ESCAPED_TOKENS,
-	                        &nstrv);
-
-	if (_SET_FCN_DO_SET_ALL (modifier, value)) {
-		if (property_info->property_typ_data->subtype.objlist.clear_all_fcn)
-			property_info->property_typ_data->subtype.objlist.clear_all_fcn (setting);
-		else
-			_gobject_property_reset (setting, property_info->property_name, FALSE);
-	}
-
-	for (i = 0; i < nstrv; i++) {
-		/* FIXME: there is the problem here that set_fcn() might succed on the first item
-		 * (modifying it), and fail to parse the second one.
-		 *
-		 * Optimally, we would first parse all input strings before starting the
-		 * modify the setting. The setting should only be modified if (and only if)
-		 * the entire operation succeeds to set all items.
-		 *
-		 * Currently, in interactive mode this leads to odd behavior.
-		 *
-		 * This does not only affect objlist.set_fcn() or _pt_objlist properties.
-		 * E.g. we also call _gobject_property_reset() before validating the input. */
-		if (!property_info->property_typ_data->subtype.objlist.set_fcn (setting,
-		                                                                !_SET_FCN_DO_REMOVE (modifier, value),
-		                                                                strv[i],
-		                                                                error))
-			return FALSE;
-	}
-	return TRUE;
+_multilist_add_fcn_ip_config_dns_options(NMSetting *setting, const char *item)
+{
+    NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG(setting);
+
+    if (!nm_setting_ip_config_add_dns_option(s_ip, item)) {
+        /* maybe it failed, because the element already existed. *sigh*. */
+        nm_setting_ip_config_remove_dns_option_by_value(s_ip, item);
+        return nm_setting_ip_config_add_dns_option(s_ip, item);
+    }
+    return TRUE;
+}
+
+static gboolean _set_fcn_objlist(ARGS_SET_FCN)
+{
+    gs_free const char **strv = NULL;
+    gsize                i, nstrv;
+
+    if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(property_info, modifier, value)) {
+        if (property_info->property_typ_data->subtype.objlist.clear_all_fcn) {
+            property_info->property_typ_data->subtype.objlist.clear_all_fcn(setting);
+            return TRUE;
+        }
+        return _gobject_property_reset_default(setting, property_info->property_name);
+    }
+
+    if (_SET_FCN_DO_REMOVE(modifier, value)
+        && (property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u
+            || property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_s)) {
+        gs_free gint64 *indexes = NULL;
+
+        indexes = _value_str_as_index_list(value, &nstrv);
+        if (indexes) {
+            gint64 num;
+
+            num = property_info->property_typ_data->subtype.objlist.get_num_fcn(setting);
+            for (i = 0; i < nstrv; i++) {
+                gint64 idx = indexes[i];
+
+                if (idx >= num)
+                    continue;
+                if (property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u)
+                    property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_u(setting,
+                                                                                          idx);
+                else
+                    property_info->property_typ_data->subtype.objlist.remove_by_idx_fcn_s(setting,
+                                                                                          idx);
+            }
+            return TRUE;
+        }
+    }
+
+    strv = _value_strsplit(value,
+                           property_info->property_typ_data->subtype.objlist.strsplit_plain
+                               ? VALUE_STRSPLIT_MODE_OBJLIST
+                               : VALUE_STRSPLIT_MODE_ESCAPED_TOKENS,
+                           &nstrv);
+
+    if (_SET_FCN_DO_SET_ALL(modifier, value)) {
+        if (property_info->property_typ_data->subtype.objlist.clear_all_fcn)
+            property_info->property_typ_data->subtype.objlist.clear_all_fcn(setting);
+        else
+            _gobject_property_reset(setting, property_info->property_name, FALSE);
+    }
+
+    for (i = 0; i < nstrv; i++) {
+        /* FIXME: there is the problem here that set_fcn() might succeed on the first item
+         * (modifying it), and fail to parse the second one.
+         *
+         * Optimally, we would first parse all input strings before starting the
+         * modify the setting. The setting should only be modified if (and only if)
+         * the entire operation succeeds to set all items.
+         *
+         * Currently, in interactive mode this leads to odd behavior.
+         *
+         * This does not only affect objlist.set_fcn() or _pt_objlist properties.
+         * E.g. we also call _gobject_property_reset() before validating the input. */
+        if (!property_info->property_typ_data->subtype.objlist
+                 .set_fcn(setting, !_SET_FCN_DO_REMOVE(modifier, value), strv[i], error))
+            return FALSE;
+    }
+    return TRUE;
 }
 
 static gboolean
-_objlist_set_fcn_ip_config_addresses (NMSetting *setting,
-                                      gboolean do_add,
-                                      const char *value,
-                                      GError **error)
+_objlist_set_fcn_ip_config_addresses(NMSetting * setting,
+                                     gboolean    do_add,
+                                     const char *value,
+                                     GError **   error)
 {
-	int addr_family = nm_setting_ip_config_get_addr_family (NM_SETTING_IP_CONFIG (setting));
-	nm_auto_unref_ip_address NMIPAddress *addr = NULL;
+    int addr_family = nm_setting_ip_config_get_addr_family(NM_SETTING_IP_CONFIG(setting));
+    nm_auto_unref_ip_address NMIPAddress *addr = NULL;
 
-	addr = _parse_ip_address (addr_family, value, error);
-	if (!addr)
-		return FALSE;
-	if (do_add)
-		nm_setting_ip_config_add_address (NM_SETTING_IP_CONFIG (setting), addr);
-	else
-		nm_setting_ip_config_remove_address_by_value (NM_SETTING_IP_CONFIG (setting), addr);
-	return TRUE;
+    addr = _parse_ip_address(addr_family, value, error);
+    if (!addr)
+        return FALSE;
+    if (do_add)
+        nm_setting_ip_config_add_address(NM_SETTING_IP_CONFIG(setting), addr);
+    else
+        nm_setting_ip_config_remove_address_by_value(NM_SETTING_IP_CONFIG(setting), addr);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_ip_config_gateway (ARGS_SET_FCN)
+static gboolean _set_fcn_ip_config_gateway(ARGS_SET_FCN)
 {
-	gs_free char *value_to_free = NULL;
-	int addr_family = nm_setting_ip_config_get_addr_family (NM_SETTING_IP_CONFIG (setting));
+    gs_free char *value_to_free = NULL;
+    int           addr_family = nm_setting_ip_config_get_addr_family(NM_SETTING_IP_CONFIG(setting));
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	value = nm_strstrip_avoid_copy_a (300, value, &value_to_free);
+    value = nm_strstrip_avoid_copy_a(300, value, &value_to_free);
 
-	if (!nm_utils_ipaddr_is_valid (addr_family, value)) {
-		g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		             _("invalid gateway address '%s'"),
-		             value);
-		return FALSE;
-	}
+    if (!nm_utils_ipaddr_is_valid(addr_family, value)) {
+        g_set_error(error,
+                    NM_UTILS_ERROR,
+                    NM_UTILS_ERROR_INVALID_ARGUMENT,
+                    _("invalid gateway address '%s'"),
+                    value);
+        return FALSE;
+    }
 
-	/* Since commit c1907a218a6b6bfe8175eb6ed87a523aaabc69ae, having a gateway and never-default=yes
-	 * will be normalized away. That means, when we set a gateway, we also want to unset never-default,
-	 * otherwise the operation gets silently reverted. */
-	g_object_set (setting,
-	              property_info->property_name, value,
-	              NM_SETTING_IP_CONFIG_NEVER_DEFAULT, FALSE,
-	              NULL);
-	return TRUE;
+    /* Since commit c1907a218a6b6bfe8175eb6ed87a523aaabc69ae, having a gateway and never-default=yes
+     * will be normalized away. That means, when we set a gateway, we also want to unset never-default,
+     * otherwise the operation gets silently reverted. */
+    g_object_set(setting,
+                 property_info->property_name,
+                 value,
+                 NM_SETTING_IP_CONFIG_NEVER_DEFAULT,
+                 FALSE,
+                 NULL);
+    return TRUE;
 }
 
 static gboolean
-_objlist_set_fcn_ip_config_routes (NMSetting *setting,
-                                   gboolean do_add,
-                                   const char *value,
-                                   GError **error)
+_objlist_set_fcn_ip_config_routes(NMSetting * setting,
+                                  gboolean    do_add,
+                                  const char *value,
+                                  GError **   error)
 {
-	int addr_family = nm_setting_ip_config_get_addr_family (NM_SETTING_IP_CONFIG (setting));
-	nm_auto_unref_ip_route NMIPRoute *route = NULL;
+    int addr_family = nm_setting_ip_config_get_addr_family(NM_SETTING_IP_CONFIG(setting));
+    nm_auto_unref_ip_route NMIPRoute *route = NULL;
 
-	route = _parse_ip_route (addr_family, value, error);
-	if (!route)
-		return FALSE;
-	if (do_add)
-		nm_setting_ip_config_add_route (NM_SETTING_IP_CONFIG (setting), route);
-	else
-		nm_setting_ip_config_remove_route_by_value (NM_SETTING_IP_CONFIG (setting), route);
-	return TRUE;
+    route = _parse_ip_route(addr_family, value, error);
+    if (!route)
+        return FALSE;
+    if (do_add)
+        nm_setting_ip_config_add_route(NM_SETTING_IP_CONFIG(setting), route);
+    else
+        nm_setting_ip_config_remove_route_by_value(NM_SETTING_IP_CONFIG(setting), route);
+    return TRUE;
 }
 
 static gboolean
-_is_default_func_ip_config_dns_options (NMSetting *setting)
+_is_default_func_ip_config_dns_options(NMSetting *setting)
 {
-	return !nm_setting_ip_config_has_dns_options (NM_SETTING_IP_CONFIG (setting));
+    return !nm_setting_ip_config_has_dns_options(NM_SETTING_IP_CONFIG(setting));
 }
 
 static void
-_objlist_obj_to_str_fcn_ip_config_routing_rules (NMMetaAccessorGetType get_type,
-                                                 NMSetting *setting,
-                                                 guint idx,
-                                                 GString *str)
+_objlist_obj_to_str_fcn_ip_config_routing_rules(NMMetaAccessorGetType get_type,
+                                                NMSetting *           setting,
+                                                guint                 idx,
+                                                GString *             str)
 {
-	NMIPRoutingRule *rule;
-	gs_free char *s = NULL;
+    NMIPRoutingRule *rule;
+    gs_free char *   s = NULL;
 
-	rule = nm_setting_ip_config_get_routing_rule (NM_SETTING_IP_CONFIG (setting), idx);
-	s = nm_ip_routing_rule_to_string (rule,
-	                                  NM_IP_ROUTING_RULE_AS_STRING_FLAGS_NONE,
-	                                  NULL,
-	                                  NULL);
-	if (s)
-		nm_utils_escaped_tokens_escape_gstr (s, ESCAPED_TOKENS_DELIMITERS, str);
+    rule = nm_setting_ip_config_get_routing_rule(NM_SETTING_IP_CONFIG(setting), idx);
+    s    = nm_ip_routing_rule_to_string(rule, NM_IP_ROUTING_RULE_AS_STRING_FLAGS_NONE, NULL, NULL);
+    if (s)
+        nm_utils_escaped_tokens_escape_gstr(s, ESCAPED_TOKENS_DELIMITERS, str);
 }
 
 static gboolean
-_objlist_set_fcn_ip_config_routing_rules (NMSetting *setting,
-                                          gboolean do_add,
-                                          const char *str,
-                                          GError **error)
-{
-	NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting);
-	nm_auto_unref_ip_routing_rule NMIPRoutingRule *rule = NULL;
-	guint i, n;
-
-	rule = nm_ip_routing_rule_from_string (str,
-	                                       (  NM_IP_ROUTING_RULE_AS_STRING_FLAGS_VALIDATE
-	                                        | (  NM_IS_SETTING_IP4_CONFIG (setting)
-	                                           ? NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET
-	                                           : NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET6)),
-	                                       NULL,
-	                                       error);
-	if (!rule)
-		return FALSE;
-
-	/* also for @do_add, we first always search whether such a rule already exist
-	 * and remove the first occurrence.
-	 *
-	 * The effect is, that we don't add multiple times the same rule,
-	 * and that if the rule already exists, it gets moved to the end (append).
-	 */
-	n = nm_setting_ip_config_get_num_routing_rules (s_ip);
-	for (i = 0; i < n; i++) {
-		NMIPRoutingRule *rr;
-
-		rr = nm_setting_ip_config_get_routing_rule (s_ip, i);
-		if (nm_ip_routing_rule_cmp (rule, rr) == 0) {
-			nm_setting_ip_config_remove_routing_rule (s_ip, i);
-			break;
-		}
-	}
-	if (do_add)
-		nm_setting_ip_config_add_routing_rule (s_ip, rule);
-	return TRUE;
+_objlist_set_fcn_ip_config_routing_rules(NMSetting * setting,
+                                         gboolean    do_add,
+                                         const char *str,
+                                         GError **   error)
+{
+    NMSettingIPConfig *           s_ip                  = NM_SETTING_IP_CONFIG(setting);
+    nm_auto_unref_ip_routing_rule NMIPRoutingRule *rule = NULL;
+    guint                                          i, n;
+
+    rule = nm_ip_routing_rule_from_string(
+        str,
+        (NM_IP_ROUTING_RULE_AS_STRING_FLAGS_VALIDATE
+         | (NM_IS_SETTING_IP4_CONFIG(setting) ? NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET
+                                              : NM_IP_ROUTING_RULE_AS_STRING_FLAGS_AF_INET6)),
+        NULL,
+        error);
+    if (!rule)
+        return FALSE;
+
+    /* also for @do_add, we first always search whether such a rule already exist
+     * and remove the first occurrence.
+     *
+     * The effect is, that we don't add multiple times the same rule,
+     * and that if the rule already exists, it gets moved to the end (append).
+     */
+    n = nm_setting_ip_config_get_num_routing_rules(s_ip);
+    for (i = 0; i < n; i++) {
+        NMIPRoutingRule *rr;
+
+        rr = nm_setting_ip_config_get_routing_rule(s_ip, i);
+        if (nm_ip_routing_rule_cmp(rule, rr) == 0) {
+            nm_setting_ip_config_remove_routing_rule(s_ip, i);
+            break;
+        }
+    }
+    if (do_add)
+        nm_setting_ip_config_add_routing_rule(s_ip, rule);
+    return TRUE;
+}
+
+static guint
+_multilist_get_num_fcn_ip_config_dhcp_reject_servers(NMSettingIPConfig *setting)
+{
+    guint num;
+
+    nm_setting_ip_config_get_dhcp_reject_servers(setting, &num);
+
+    return num;
 }
 
-static gconstpointer
-_get_fcn_olpc_mesh_ssid (ARGS_GET_FCN)
+static gboolean
+_multilist_remove_by_value_fcn_ip_config_dhcp_reject_servers(NMSettingIPConfig *setting,
+                                                             const char *       item)
+{
+    const char *const *strv;
+    guint              num;
+    gssize             idx;
+
+    strv = nm_setting_ip_config_get_dhcp_reject_servers(setting, &num);
+    idx  = nm_utils_strv_find_first((char **) strv, num, item);
+    if (idx >= 0)
+        nm_setting_ip_config_remove_dhcp_reject_server(setting, idx);
+    return TRUE;
+}
+
+static gconstpointer _get_fcn_olpc_mesh_ssid(ARGS_GET_FCN)
 {
-	NMSettingOlpcMesh *s_olpc_mesh = NM_SETTING_OLPC_MESH (setting);
-	GBytes *ssid;
-	char *ssid_str = NULL;
+    NMSettingOlpcMesh *s_olpc_mesh = NM_SETTING_OLPC_MESH(setting);
+    GBytes *           ssid;
+    char *             ssid_str = NULL;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	ssid = nm_setting_olpc_mesh_get_ssid (s_olpc_mesh);
-	if (ssid) {
-		ssid_str = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL),
-		                                  g_bytes_get_size (ssid));
-	}
+    ssid = nm_setting_olpc_mesh_get_ssid(s_olpc_mesh);
+    if (ssid) {
+        ssid_str = nm_utils_ssid_to_utf8(g_bytes_get_data(ssid, NULL), g_bytes_get_size(ssid));
+    }
 
-	NM_SET_OUT (out_is_default, !ssid_str);
-	RETURN_STR_TO_FREE (ssid_str);
+    NM_SET_OUT(out_is_default, !ssid_str);
+    RETURN_STR_TO_FREE(ssid_str);
 }
 
-static gboolean
-_set_fcn_olpc_mesh_channel (ARGS_SET_FCN)
+static gboolean _set_fcn_olpc_mesh_channel(ARGS_SET_FCN)
 {
-	unsigned long chan_int;
+    unsigned long chan_int;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!nmc_string_to_uint (value, TRUE, 1, 13, &chan_int)) {
-		g_set_error (error, 1, 0, _("'%s' is not a valid channel; use <1-13>"), value);
-		return FALSE;
-	}
-	g_object_set (setting, property_info->property_name, chan_int, NULL);
-	return TRUE;
+    if (!nmc_string_to_uint(value, TRUE, 1, 13, &chan_int)) {
+        g_set_error(error, 1, 0, _("'%s' is not a valid channel; use <1-13>"), value);
+        return FALSE;
+    }
+    g_object_set(setting, property_info->property_name, chan_int, NULL);
+    return TRUE;
 }
 
 static const char *
-_validate_fcn_proxy_pac_script (const char *value, char **out_to_free, GError **error)
+_validate_fcn_proxy_pac_script(const char *value, char **out_to_free, GError **error)
 {
-	char *script = NULL;
+    char *script = NULL;
 
-	if (!nmc_proxy_check_script (value, &script, error))
-		return NULL;
-	RETURN_STR_TO_FREE (script);
+    if (!nmc_proxy_check_script(value, &script, error))
+        return NULL;
+    RETURN_STR_TO_FREE(script);
 }
 
 static void
-_objlist_obj_to_str_fcn_sriov_vfs (NMMetaAccessorGetType get_type,
-                                   NMSetting *setting,
-                                   guint idx,
-                                   GString *str)
+_objlist_obj_to_str_fcn_sriov_vfs(NMMetaAccessorGetType get_type,
+                                  NMSetting *           setting,
+                                  guint                 idx,
+                                  GString *             str)
 {
-	gs_free char *s = NULL;
-	NMSriovVF *vf;
+    gs_free char *s = NULL;
+    NMSriovVF *   vf;
 
-	vf = nm_setting_sriov_get_vf (NM_SETTING_SRIOV (setting), idx);
-	s = nm_utils_sriov_vf_to_str (vf, FALSE, NULL);
-	if (s)
-		g_string_append (str, s);
+    vf = nm_setting_sriov_get_vf(NM_SETTING_SRIOV(setting), idx);
+    s  = nm_utils_sriov_vf_to_str(vf, FALSE, NULL);
+    if (s)
+        g_string_append(str, s);
 }
 
 static void
-_objlist_obj_to_str_fcn_tc_config_qdiscs (NMMetaAccessorGetType get_type,
-                                          NMSetting *setting,
-                                          guint idx,
-                                          GString *str)
+_objlist_obj_to_str_fcn_tc_config_qdiscs(NMMetaAccessorGetType get_type,
+                                         NMSetting *           setting,
+                                         guint                 idx,
+                                         GString *             str)
 {
-	gs_free char *s = NULL;
-	NMTCQdisc *qdisc;
+    gs_free char *s = NULL;
+    NMTCQdisc *   qdisc;
 
-	qdisc = nm_setting_tc_config_get_qdisc (NM_SETTING_TC_CONFIG (setting), idx);
-	s = nm_utils_tc_qdisc_to_str (qdisc, NULL);
-	if (s)
-		g_string_append (str, s);
+    qdisc = nm_setting_tc_config_get_qdisc(NM_SETTING_TC_CONFIG(setting), idx);
+    s     = nm_utils_tc_qdisc_to_str(qdisc, NULL);
+    if (s)
+        g_string_append(str, s);
 }
 
 static void
-_objlist_obj_to_str_fcn_bridge_vlans (NMMetaAccessorGetType get_type,
-                                      NMSetting *setting,
-                                      guint idx,
-                                      GString *str)
+_objlist_obj_to_str_fcn_bridge_vlans(NMMetaAccessorGetType get_type,
+                                     NMSetting *           setting,
+                                     guint                 idx,
+                                     GString *             str)
 {
-	gs_free char *s = NULL;
-	NMBridgeVlan *vlan;
+    gs_free char *s = NULL;
+    NMBridgeVlan *vlan;
 
-	if (NM_IS_SETTING_BRIDGE (setting))
-		vlan = nm_setting_bridge_get_vlan (NM_SETTING_BRIDGE (setting), idx);
-	else
-		vlan = nm_setting_bridge_port_get_vlan (NM_SETTING_BRIDGE_PORT (setting), idx);
+    if (NM_IS_SETTING_BRIDGE(setting))
+        vlan = nm_setting_bridge_get_vlan(NM_SETTING_BRIDGE(setting), idx);
+    else
+        vlan = nm_setting_bridge_port_get_vlan(NM_SETTING_BRIDGE_PORT(setting), idx);
 
-	s = nm_bridge_vlan_to_str (vlan, NULL);
-	if (s)
-		nm_utils_escaped_tokens_escape_gstr_assert (s, ESCAPED_TOKENS_DELIMITERS, str);
+    s = nm_bridge_vlan_to_str(vlan, NULL);
+    if (s)
+        nm_utils_escaped_tokens_escape_gstr_assert(s, ESCAPED_TOKENS_DELIMITERS, str);
 }
 
 static gboolean
-_objlist_set_fcn_sriov_vfs (NMSetting *setting,
-                            gboolean do_add,
-                            const char *value,
-                            GError **error)
-{
-	nm_auto_unref_sriov_vf NMSriovVF *vf = NULL;
-	gs_free_error GError *local = NULL;
-
-	vf = nm_utils_sriov_vf_from_str (value, &local);
-	if (!vf) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    "%s. %s",
-		                    local->message,
-		                    _("The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"));
-		return FALSE;
-	}
-	if (do_add)
-		nm_setting_sriov_add_vf (NM_SETTING_SRIOV (setting), vf);
-	else
-		nm_setting_sriov_remove_vf_by_index (NM_SETTING_SRIOV (setting), nm_sriov_vf_get_index (vf));
-	return TRUE;
+_objlist_set_fcn_sriov_vfs(NMSetting *setting, gboolean do_add, const char *value, GError **error)
+{
+    nm_auto_unref_sriov_vf NMSriovVF *vf = NULL;
+    gs_free_error GError *local          = NULL;
+
+    vf = nm_utils_sriov_vf_from_str(value, &local);
+    if (!vf) {
+        nm_utils_error_set(
+            error,
+            NM_UTILS_ERROR_INVALID_ARGUMENT,
+            "%s. %s",
+            local->message,
+            _("The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"));
+        return FALSE;
+    }
+    if (do_add)
+        nm_setting_sriov_add_vf(NM_SETTING_SRIOV(setting), vf);
+    else
+        nm_setting_sriov_remove_vf_by_index(NM_SETTING_SRIOV(setting), nm_sriov_vf_get_index(vf));
+    return TRUE;
 }
 
 static gboolean
-_objlist_set_fcn_tc_config_qdiscs (NMSetting *setting,
-                                   gboolean do_add,
-                                   const char *value,
-                                   GError **error)
-{
-	nm_auto_unref_tc_qdisc NMTCQdisc *tc_qdisc = NULL;
-	gs_free_error GError *local = NULL;
-
-	tc_qdisc = nm_utils_tc_qdisc_from_str (value, &local);
-	if (!tc_qdisc) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    "%s. %s",
-		                    local->message,
-		                    _("The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"));
-		return FALSE;
-	}
-	if (do_add)
-		nm_setting_tc_config_add_qdisc (NM_SETTING_TC_CONFIG (setting), tc_qdisc);
-	else
-		nm_setting_tc_config_remove_qdisc_by_value (NM_SETTING_TC_CONFIG (setting), tc_qdisc);
-	return TRUE;
+_objlist_set_fcn_tc_config_qdiscs(NMSetting * setting,
+                                  gboolean    do_add,
+                                  const char *value,
+                                  GError **   error)
+{
+    nm_auto_unref_tc_qdisc NMTCQdisc *tc_qdisc = NULL;
+    gs_free_error GError *local                = NULL;
+
+    tc_qdisc = nm_utils_tc_qdisc_from_str(value, &local);
+    if (!tc_qdisc) {
+        nm_utils_error_set(
+            error,
+            NM_UTILS_ERROR_INVALID_ARGUMENT,
+            "%s. %s",
+            local->message,
+            _("The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"));
+        return FALSE;
+    }
+    if (do_add)
+        nm_setting_tc_config_add_qdisc(NM_SETTING_TC_CONFIG(setting), tc_qdisc);
+    else
+        nm_setting_tc_config_remove_qdisc_by_value(NM_SETTING_TC_CONFIG(setting), tc_qdisc);
+    return TRUE;
 }
 
 static gboolean
-_objlist_set_fcn_bridge_vlans (NMSetting *setting,
-                               gboolean do_add,
-                               const char *value,
-                               GError **error)
-{
-	nm_auto_unref_bridge_vlan NMBridgeVlan *vlan = NULL;
-	gs_free_error GError *local = NULL;
-	guint16 vid_start, vid_end;
-
-	vlan = nm_bridge_vlan_from_str (value, &local);
-	if (!vlan) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    "%s. %s",
-		                    local->message,
-		                    _("The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"));
-		return FALSE;
-	}
-
-	if (NM_IS_SETTING_BRIDGE (setting)) {
-		if (do_add)
-			nm_setting_bridge_add_vlan (NM_SETTING_BRIDGE (setting), vlan);
-		else {
-			nm_bridge_vlan_get_vid_range (vlan, &vid_start, &vid_end);
-			nm_setting_bridge_remove_vlan_by_vid (NM_SETTING_BRIDGE (setting),
-			                                      vid_start, vid_end);
-		}
-	} else {
-		if (do_add)
-			nm_setting_bridge_port_add_vlan (NM_SETTING_BRIDGE_PORT (setting), vlan);
-		else {
-			nm_bridge_vlan_get_vid_range (vlan, &vid_start, &vid_end);
-			nm_setting_bridge_port_remove_vlan_by_vid (NM_SETTING_BRIDGE_PORT (setting),
-			                                           vid_start,
-			                                           vid_end);
-		}
-	}
-
-	return TRUE;
+_objlist_set_fcn_bridge_vlans(NMSetting * setting,
+                              gboolean    do_add,
+                              const char *value,
+                              GError **   error)
+{
+    nm_auto_unref_bridge_vlan NMBridgeVlan *vlan = NULL;
+    gs_free_error GError *local                  = NULL;
+    guint16               vid_start, vid_end;
+
+    vlan = nm_bridge_vlan_from_str(value, &local);
+    if (!vlan) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           "%s. %s",
+                           local->message,
+                           _("The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"));
+        return FALSE;
+    }
+
+    if (NM_IS_SETTING_BRIDGE(setting)) {
+        if (do_add)
+            nm_setting_bridge_add_vlan(NM_SETTING_BRIDGE(setting), vlan);
+        else {
+            nm_bridge_vlan_get_vid_range(vlan, &vid_start, &vid_end);
+            nm_setting_bridge_remove_vlan_by_vid(NM_SETTING_BRIDGE(setting), vid_start, vid_end);
+        }
+    } else {
+        if (do_add)
+            nm_setting_bridge_port_add_vlan(NM_SETTING_BRIDGE_PORT(setting), vlan);
+        else {
+            nm_bridge_vlan_get_vid_range(vlan, &vid_start, &vid_end);
+            nm_setting_bridge_port_remove_vlan_by_vid(NM_SETTING_BRIDGE_PORT(setting),
+                                                      vid_start,
+                                                      vid_end);
+        }
+    }
+
+    return TRUE;
 }
 
 static void
-_objlist_obj_to_str_fcn_tc_config_tfilters (NMMetaAccessorGetType get_type,
-                                            NMSetting *setting,
-                                            guint idx,
-                                            GString *str)
+_objlist_obj_to_str_fcn_tc_config_tfilters(NMMetaAccessorGetType get_type,
+                                           NMSetting *           setting,
+                                           guint                 idx,
+                                           GString *             str)
 {
-	NMTCTfilter *tfilter;
-	gs_free char *s = NULL;
+    NMTCTfilter * tfilter;
+    gs_free char *s = NULL;
 
-	tfilter = nm_setting_tc_config_get_tfilter (NM_SETTING_TC_CONFIG (setting), idx);
-	s = nm_utils_tc_tfilter_to_str (tfilter, NULL);
-	if (s)
-		g_string_append (str, s);
+    tfilter = nm_setting_tc_config_get_tfilter(NM_SETTING_TC_CONFIG(setting), idx);
+    s       = nm_utils_tc_tfilter_to_str(tfilter, NULL);
+    if (s)
+        g_string_append(str, s);
 }
 
 static gboolean
-_objlist_set_fcn_tc_config_tfilters (NMSetting *setting,
-                                     gboolean do_add,
-                                     const char *value,
-                                     GError **error)
-{
-	gs_free_error GError *local = NULL;
-	nm_auto_unref_tc_tfilter NMTCTfilter *tc_tfilter = NULL;
-
-	tc_tfilter = nm_utils_tc_tfilter_from_str (value, &local);
-	if (!tc_tfilter) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    "%s. %s",
-		                    local->message,
-		                    _("The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"));
-		return FALSE;
-	}
-	if (do_add)
-		nm_setting_tc_config_add_tfilter (NM_SETTING_TC_CONFIG (setting), tc_tfilter);
-	else
-		nm_setting_tc_config_remove_tfilter_by_value (NM_SETTING_TC_CONFIG (setting), tc_tfilter);
-	return TRUE;
+_objlist_set_fcn_tc_config_tfilters(NMSetting * setting,
+                                    gboolean    do_add,
+                                    const char *value,
+                                    GError **   error)
+{
+    gs_free_error GError *   local                   = NULL;
+    nm_auto_unref_tc_tfilter NMTCTfilter *tc_tfilter = NULL;
+
+    tc_tfilter = nm_utils_tc_tfilter_from_str(value, &local);
+    if (!tc_tfilter) {
+        nm_utils_error_set(
+            error,
+            NM_UTILS_ERROR_INVALID_ARGUMENT,
+            "%s. %s",
+            local->message,
+            _("The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"));
+        return FALSE;
+    }
+    if (do_add)
+        nm_setting_tc_config_add_tfilter(NM_SETTING_TC_CONFIG(setting), tc_tfilter);
+    else
+        nm_setting_tc_config_remove_tfilter_by_value(NM_SETTING_TC_CONFIG(setting), tc_tfilter);
+    return TRUE;
 }
 
 static const char *
-_validate_fcn_team_config (const char *value, char **out_to_free, GError **error)
+_validate_fcn_team_config(const char *value, char **out_to_free, GError **error)
 {
-	char *json = NULL;
+    char *json = NULL;
 
-	if (!nmc_team_check_config (value, &json, error))
-		return NULL;
-	RETURN_STR_TO_FREE (json);
+    if (!nmc_team_check_config(value, &json, error))
+        return NULL;
+    RETURN_STR_TO_FREE(json);
 }
 
 static void
-_objlist_obj_to_str_fcn_team_link_watchers (NMMetaAccessorGetType get_type,
-                                            NMSetting *setting,
-                                            guint idx,
-                                            GString *str)
+_objlist_obj_to_str_fcn_team_link_watchers(NMMetaAccessorGetType get_type,
+                                           NMSetting *           setting,
+                                           guint                 idx,
+                                           GString *             str)
 {
-	NMTeamLinkWatcher *watcher;
-	gs_free char *s = NULL;
+    NMTeamLinkWatcher *watcher;
+    gs_free char *     s = NULL;
 
-	if (NM_IS_SETTING_TEAM (setting))
-		watcher = nm_setting_team_get_link_watcher (NM_SETTING_TEAM (setting), idx);
-	else
-		watcher = nm_setting_team_port_get_link_watcher (NM_SETTING_TEAM_PORT (setting), idx);
+    if (NM_IS_SETTING_TEAM(setting))
+        watcher = nm_setting_team_get_link_watcher(NM_SETTING_TEAM(setting), idx);
+    else
+        watcher = nm_setting_team_port_get_link_watcher(NM_SETTING_TEAM_PORT(setting), idx);
 
-	s = nm_utils_team_link_watcher_to_string (watcher);
-	if (s)
-		nm_utils_escaped_tokens_escape_gstr (s, ESCAPED_TOKENS_DELIMITERS, str);
+    s = nm_utils_team_link_watcher_to_string(watcher);
+    if (s)
+        nm_utils_escaped_tokens_escape_gstr(s, ESCAPED_TOKENS_DELIMITERS, str);
 }
 
 static gboolean
-_objlist_set_fcn_team_link_watchers (NMSetting *setting,
-                                     gboolean do_add,
-                                     const char *value,
-                                     GError **error)
-{
-	nm_auto_unref_team_link_watcher NMTeamLinkWatcher *watcher = NULL;
-
-	watcher = nm_utils_team_link_watcher_from_string (value, error);
-	if (!watcher)
-		return FALSE;
-	if (NM_IS_SETTING_TEAM (setting)) {
-		if (do_add)
-			nm_setting_team_add_link_watcher (NM_SETTING_TEAM (setting), watcher);
-		else
-			nm_setting_team_remove_link_watcher_by_value (NM_SETTING_TEAM (setting), watcher);
-	} else {
-		if (do_add)
-			nm_setting_team_port_add_link_watcher (NM_SETTING_TEAM_PORT (setting), watcher);
-		else
-			nm_setting_team_port_remove_link_watcher_by_value (NM_SETTING_TEAM_PORT (setting), watcher);
-	}
-	return TRUE;
+_objlist_set_fcn_team_link_watchers(NMSetting * setting,
+                                    gboolean    do_add,
+                                    const char *value,
+                                    GError **   error)
+{
+    nm_auto_unref_team_link_watcher NMTeamLinkWatcher *watcher = NULL;
+
+    watcher = nm_utils_team_link_watcher_from_string(value, error);
+    if (!watcher)
+        return FALSE;
+    if (NM_IS_SETTING_TEAM(setting)) {
+        if (do_add)
+            nm_setting_team_add_link_watcher(NM_SETTING_TEAM(setting), watcher);
+        else
+            nm_setting_team_remove_link_watcher_by_value(NM_SETTING_TEAM(setting), watcher);
+    } else {
+        if (do_add)
+            nm_setting_team_port_add_link_watcher(NM_SETTING_TEAM_PORT(setting), watcher);
+        else
+            nm_setting_team_port_remove_link_watcher_by_value(NM_SETTING_TEAM_PORT(setting),
+                                                              watcher);
+    }
+    return TRUE;
 }
 
-static gconstpointer
-_get_fcn_vlan_flags (ARGS_GET_FCN)
+static gconstpointer _get_fcn_vlan_flags(ARGS_GET_FCN)
 {
-	NMSettingVlan *s_vlan = NM_SETTING_VLAN (setting);
-	guint32 flags;
+    NMSettingVlan *s_vlan = NM_SETTING_VLAN(setting);
+    guint32        flags;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	flags = nm_setting_vlan_get_flags (s_vlan);
-	NM_SET_OUT (out_is_default, flags == 0);
-	RETURN_STR_TO_FREE (vlan_flags_to_string (flags, get_type));
+    flags = nm_setting_vlan_get_flags(s_vlan);
+    NM_SET_OUT(out_is_default, flags == 0);
+    RETURN_STR_TO_FREE(vlan_flags_to_string(flags, get_type));
 }
 
 static NMVlanPriorityMap
-_vlan_priority_map_type_from_property_info (const NMMetaPropertyInfo *property_info)
+_vlan_priority_map_type_from_property_info(const NMMetaPropertyInfo *property_info)
 {
-	nm_assert (property_info);
-	nm_assert (property_info->setting_info == &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_VLAN]);
-	nm_assert (NM_IN_STRSET (property_info->property_name, NM_SETTING_VLAN_INGRESS_PRIORITY_MAP,
-	                                                       NM_SETTING_VLAN_EGRESS_PRIORITY_MAP));
+    nm_assert(property_info);
+    nm_assert(property_info->setting_info
+              == &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_VLAN]);
+    nm_assert(NM_IN_STRSET(property_info->property_name,
+                           NM_SETTING_VLAN_INGRESS_PRIORITY_MAP,
+                           NM_SETTING_VLAN_EGRESS_PRIORITY_MAP));
 
-	return   nm_streq (property_info->property_name, NM_SETTING_VLAN_INGRESS_PRIORITY_MAP)
-	       ? NM_VLAN_INGRESS_MAP
-	       : NM_VLAN_EGRESS_MAP;
+    return nm_streq(property_info->property_name, NM_SETTING_VLAN_INGRESS_PRIORITY_MAP)
+               ? NM_VLAN_INGRESS_MAP
+               : NM_VLAN_EGRESS_MAP;
 }
 
-static gconstpointer
-_get_fcn_vlan_xgress_priority_map (ARGS_GET_FCN)
+static gconstpointer _get_fcn_vlan_xgress_priority_map(ARGS_GET_FCN)
 {
-	NMVlanPriorityMap map_type = _vlan_priority_map_type_from_property_info (property_info);
-	NMSettingVlan *s_vlan = NM_SETTING_VLAN (setting);
-	GString *str = NULL;
-	gint32 i, num;
+    NMVlanPriorityMap map_type = _vlan_priority_map_type_from_property_info(property_info);
+    NMSettingVlan *   s_vlan   = NM_SETTING_VLAN(setting);
+    GString *         str      = NULL;
+    gint32            i, num;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	num = nm_setting_vlan_get_num_priorities (s_vlan, map_type);
-	for (i = 0; i < num; i++) {
-		guint32 from, to;
+    num = nm_setting_vlan_get_num_priorities(s_vlan, map_type);
+    for (i = 0; i < num; i++) {
+        guint32 from, to;
 
-		if (!nm_setting_vlan_get_priority (s_vlan, map_type, i, &from, &to))
-			continue;
+        if (!nm_setting_vlan_get_priority(s_vlan, map_type, i, &from, &to))
+            continue;
 
-		if (!str)
-			str = g_string_new (NULL);
-		else
-			g_string_append_c (str, ESCAPED_TOKENS_WITH_SPACES_DELIMTER);
-		g_string_append_printf (str, "%d:%d", from, to);
-	}
+        if (!str)
+            str = g_string_new(NULL);
+        else
+            g_string_append_c(str, ESCAPED_TOKENS_WITH_SPACES_DELIMTER);
+        g_string_append_printf(str, "%d:%d", from, to);
+    }
 
-	NM_SET_OUT (out_is_default, num == 0);
-	if (!str)
-		return NULL;
-	RETURN_STR_TO_FREE (g_string_free (str, FALSE));
+    NM_SET_OUT(out_is_default, num == 0);
+    if (!str)
+        return NULL;
+    RETURN_STR_TO_FREE(g_string_free(str, FALSE));
 }
 
-static gboolean
-_set_fcn_vlan_xgress_priority_map (ARGS_SET_FCN)
-{
-	NMVlanPriorityMap map_type = _vlan_priority_map_type_from_property_info (property_info);
-	gs_free const char **prio_map = NULL;
-	gsize i, len;
-
-	if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (property_info, modifier, value)) {
-		nm_setting_vlan_clear_priorities (NM_SETTING_VLAN (setting), map_type);
-		return TRUE;
-	}
-
-	prio_map = _value_strsplit (value, VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES, &len);
-
-	for (i = 0; i < len; i++) {
-		if (!nm_utils_vlan_priority_map_parse_str (map_type,
-		                                           prio_map[i],
-		                                           _SET_FCN_DO_REMOVE (modifier, value),
-		                                           NULL,
-		                                           NULL,
-		                                           NULL)) {
-			g_set_error (error, 1, 0, _("invalid priority map '%s'"), prio_map[i]);
-			return FALSE;
-		}
-	}
-
-	if (_SET_FCN_DO_SET_ALL (modifier, value))
-		nm_setting_vlan_clear_priorities (NM_SETTING_VLAN (setting), map_type);
-
-	for (i = 0; i < len; i++) {
-		if (_SET_FCN_DO_REMOVE (modifier, value)) {
-			nm_setting_vlan_remove_priority_str_by_value (NM_SETTING_VLAN (setting),
-			                                              map_type,
-			                                              prio_map[i]);
-		} else {
-			nm_setting_vlan_add_priority_str (NM_SETTING_VLAN (setting),
-			                                  map_type,
-			                                  prio_map[i]);
-		}
-	}
-	return TRUE;
+static gboolean _set_fcn_vlan_xgress_priority_map(ARGS_SET_FCN)
+{
+    NMVlanPriorityMap    map_type = _vlan_priority_map_type_from_property_info(property_info);
+    gs_free const char **prio_map = NULL;
+    gsize                i, len;
+
+    if (_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE(property_info, modifier, value)) {
+        nm_setting_vlan_clear_priorities(NM_SETTING_VLAN(setting), map_type);
+        return TRUE;
+    }
+
+    prio_map = _value_strsplit(value, VALUE_STRSPLIT_MODE_ESCAPED_TOKENS_WITH_SPACES, &len);
+
+    for (i = 0; i < len; i++) {
+        if (!nm_utils_vlan_priority_map_parse_str(map_type,
+                                                  prio_map[i],
+                                                  _SET_FCN_DO_REMOVE(modifier, value),
+                                                  NULL,
+                                                  NULL,
+                                                  NULL)) {
+            g_set_error(error, 1, 0, _("invalid priority map '%s'"), prio_map[i]);
+            return FALSE;
+        }
+    }
+
+    if (_SET_FCN_DO_SET_ALL(modifier, value))
+        nm_setting_vlan_clear_priorities(NM_SETTING_VLAN(setting), map_type);
+
+    for (i = 0; i < len; i++) {
+        if (_SET_FCN_DO_REMOVE(modifier, value)) {
+            nm_setting_vlan_remove_priority_str_by_value(NM_SETTING_VLAN(setting),
+                                                         map_type,
+                                                         prio_map[i]);
+        } else {
+            nm_setting_vlan_add_priority_str(NM_SETTING_VLAN(setting), map_type, prio_map[i]);
+        }
+    }
+    return TRUE;
 }
 
 static void
-_vpn_options_callback (const char *key, const char *val, gpointer user_data)
+_vpn_options_callback(const char *key, const char *val, gpointer user_data)
 {
-	GString *str = user_data;
-	gs_free char *escaped_key = NULL;
-	gs_free char *escaped_val = NULL;
+    GString *     str         = user_data;
+    gs_free char *escaped_key = NULL;
+    gs_free char *escaped_val = NULL;
 
-	if (str->len > 0u)
-		g_string_append (str, ", ");
+    if (str->len > 0u)
+        g_string_append(str, ", ");
 
-	g_string_append (str, nm_utils_escaped_tokens_options_escape_key (key, &escaped_key));
-	g_string_append (str, " = ");
-	g_string_append (str, nm_utils_escaped_tokens_options_escape_val (val, &escaped_val));
+    g_string_append(str, nm_utils_escaped_tokens_options_escape_key(key, &escaped_key));
+    g_string_append(str, " = ");
+    g_string_append(str, nm_utils_escaped_tokens_options_escape_val(val, &escaped_val));
 }
 
-static gconstpointer
-_get_fcn_vpn_options (ARGS_GET_FCN)
+static gconstpointer _get_fcn_vpn_options(ARGS_GET_FCN)
 {
-	NMSettingVpn *s_vpn = NM_SETTING_VPN (setting);
-	GString *str;
+    NMSettingVpn *s_vpn = NM_SETTING_VPN(setting);
+    GString *     str;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	str = g_string_new (NULL);
-	if (nm_streq (property_info->property_name, NM_SETTING_VPN_SECRETS))
-		nm_setting_vpn_foreach_secret (s_vpn, _vpn_options_callback, str);
-	else
-		nm_setting_vpn_foreach_data_item (s_vpn, _vpn_options_callback, str);
-	NM_SET_OUT (out_is_default, str->len == 0);
-	RETURN_STR_TO_FREE (g_string_free (str, FALSE));
+    str = g_string_new(NULL);
+    if (nm_streq(property_info->property_name, NM_SETTING_VPN_SECRETS))
+        nm_setting_vpn_foreach_secret(s_vpn, _vpn_options_callback, str);
+    else
+        nm_setting_vpn_foreach_data_item(s_vpn, _vpn_options_callback, str);
+    NM_SET_OUT(out_is_default, str->len == 0);
+    RETURN_STR_TO_FREE(g_string_free(str, FALSE));
 }
 
 static gboolean
-_optionlist_set_fcn_vpn_data (NMSetting *setting,
-                              const char *option,
-                              const char *value,
-                              GError **error)
+_optionlist_set_fcn_vpn_data(NMSetting * setting,
+                             const char *option,
+                             const char *value,
+                             GError **   error)
 {
-	if (value)
-		nm_setting_vpn_add_data_item (NM_SETTING_VPN (setting), option, value);
-	else
-		nm_setting_vpn_remove_data_item (NM_SETTING_VPN (setting), option);
-	return TRUE;
+    if (value)
+        nm_setting_vpn_add_data_item(NM_SETTING_VPN(setting), option, value);
+    else
+        nm_setting_vpn_remove_data_item(NM_SETTING_VPN(setting), option);
+    return TRUE;
 }
 
 static gboolean
-_optionlist_set_fcn_vpn_secrets (NMSetting *setting,
-                                 const char *option,
-                                 const char *value,
-                                 GError **error)
+_optionlist_set_fcn_vpn_secrets(NMSetting * setting,
+                                const char *option,
+                                const char *value,
+                                GError **   error)
 {
-	if (value)
-		nm_setting_vpn_add_secret (NM_SETTING_VPN (setting), option, value);
-	else
-		nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), option);
-	return TRUE;
+    if (value)
+        nm_setting_vpn_add_secret(NM_SETTING_VPN(setting), option, value);
+    else
+        nm_setting_vpn_remove_secret(NM_SETTING_VPN(setting), option);
+    return TRUE;
 }
 
-static gboolean
-_set_fcn_wired_s390_subchannels (ARGS_SET_FCN)
+static gboolean _set_fcn_wired_s390_subchannels(ARGS_SET_FCN)
 {
-	gs_free const char **strv = NULL;
-	gsize len;
+    gs_free const char **strv = NULL;
+    gsize                len;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	strv = nm_utils_strsplit_set (value, " ,\t");
-	len = NM_PTRARRAY_LEN (strv);
-	if (len != 2 && len != 3) {
-		g_set_error (error, 1, 0, _("'%s' is not valid; 2 or 3 strings should be provided"),
-		             value);
-		return FALSE;
-	}
+    strv = nm_utils_strsplit_set(value, " ,\t");
+    len  = NM_PTRARRAY_LEN(strv);
+    if (len != 2 && len != 3) {
+        g_set_error(error, 1, 0, _("'%s' is not valid; 2 or 3 strings should be provided"), value);
+        return FALSE;
+    }
 
-	g_object_set (setting, property_info->property_name, strv, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, strv, NULL);
+    return TRUE;
 }
 
 static gboolean
-_optionlist_set_fcn_wired_s390_options (NMSetting *setting,
-                                        const char *name,
-                                        const char *value,
-                                        GError **error)
+_optionlist_set_fcn_wired_s390_options(NMSetting * setting,
+                                       const char *name,
+                                       const char *value,
+                                       GError **   error)
 {
-	if (value)
-		nm_setting_wired_add_s390_option (NM_SETTING_WIRED (setting), name, value);
-	else
-		nm_setting_wired_remove_s390_option (NM_SETTING_WIRED (setting), name);
-	return TRUE;
+    if (value)
+        nm_setting_wired_add_s390_option(NM_SETTING_WIRED(setting), name, value);
+    else
+        nm_setting_wired_remove_s390_option(NM_SETTING_WIRED(setting), name);
+    return TRUE;
 }
 
-static const char *const*
-_values_fcn_wired_s390_options (ARGS_VALUES_FCN)
+static const char *const *_values_fcn_wired_s390_options(ARGS_VALUES_FCN)
 {
-	return nm_setting_wired_get_valid_s390_options (NULL);
+    return nm_setting_wired_get_valid_s390_options(NULL);
 }
 
-static const char *
-_describe_fcn_wired_s390_options (ARGS_DESCRIBE_FCN)
+static const char *_describe_fcn_wired_s390_options(ARGS_DESCRIBE_FCN)
 {
-	gs_free char *options_str = NULL;
-	const char **valid_options;
-	char *s;
+    gs_free char *options_str = NULL;
+    const char ** valid_options;
+    char *        s;
 
-	valid_options = nm_setting_wired_get_valid_s390_options (NULL);
+    valid_options = nm_setting_wired_get_valid_s390_options(NULL);
 
-	options_str = g_strjoinv (", ", (char **) valid_options);
+    options_str = g_strjoinv(", ", (char **) valid_options);
 
-	s = g_strdup_printf (_("Enter a list of S/390 options formatted as:\n"
-	                       "  option = <value>, option = <value>,...\n"
-	                       "Valid options are: %s\n"),
-	                       options_str);
-	return (*out_to_free = s);
+    s = g_strdup_printf(_("Enter a list of S/390 options formatted as:\n"
+                          "  option = <value>, option = <value>,...\n"
+                          "Valid options are: %s\n"),
+                        options_str);
+    return (*out_to_free = s);
 }
 
-static gconstpointer
-_get_fcn_wireless_ssid (ARGS_GET_FCN)
+static gconstpointer _get_fcn_wireless_ssid(ARGS_GET_FCN)
 {
-	NMSettingWireless *s_wireless = NM_SETTING_WIRELESS (setting);
-	GBytes *ssid;
-	char *ssid_str = NULL;
+    NMSettingWireless *s_wireless = NM_SETTING_WIRELESS(setting);
+    GBytes *           ssid;
+    char *             ssid_str = NULL;
 
-	RETURN_UNSUPPORTED_GET_TYPE ();
+    RETURN_UNSUPPORTED_GET_TYPE();
 
-	ssid = nm_setting_wireless_get_ssid (s_wireless);
-	if (ssid) {
-		ssid_str = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL),
-		                                  g_bytes_get_size (ssid));
-	}
+    ssid = nm_setting_wireless_get_ssid(s_wireless);
+    if (ssid) {
+        ssid_str = nm_utils_ssid_to_utf8(g_bytes_get_data(ssid, NULL), g_bytes_get_size(ssid));
+    }
 
-	NM_SET_OUT (out_is_default, !ssid_str || !ssid_str[0]);
-	RETURN_STR_TO_FREE (ssid_str);
+    NM_SET_OUT(out_is_default, !ssid_str || !ssid_str[0]);
+    RETURN_STR_TO_FREE(ssid_str);
 }
 
-static gboolean
-_set_fcn_wireless_channel (ARGS_SET_FCN)
+static gboolean _set_fcn_wireless_channel(ARGS_SET_FCN)
 {
-	unsigned long chan_int;
+    unsigned long chan_int;
 
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		return _gobject_property_reset_default (setting, property_info->property_name);
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        return _gobject_property_reset_default(setting, property_info->property_name);
 
-	if (!nmc_string_to_uint (value, FALSE, 0, 0, &chan_int)) {
-		g_set_error (error, 1, 0, _("'%s' is not a valid channel"), value);
-		return FALSE;
-	}
+    if (!nmc_string_to_uint(value, FALSE, 0, 0, &chan_int)) {
+        g_set_error(error, 1, 0, _("'%s' is not a valid channel"), value);
+        return FALSE;
+    }
 
-	if (   !nm_utils_wifi_is_channel_valid (chan_int, "a")
-	    && !nm_utils_wifi_is_channel_valid (chan_int, "bg")) {
-		g_set_error (error, 1, 0, _("'%ld' is not a valid channel"), chan_int);
-		return FALSE;
-	}
+    if (!nm_utils_wifi_is_channel_valid(chan_int, "a")
+        && !nm_utils_wifi_is_channel_valid(chan_int, "bg")) {
+        g_set_error(error, 1, 0, _("'%ld' is not a valid channel"), chan_int);
+        return FALSE;
+    }
 
-	g_object_set (setting, property_info->property_name, chan_int, NULL);
-	return TRUE;
+    g_object_set(setting, property_info->property_name, chan_int, NULL);
+    return TRUE;
 }
 
 static const char *
-_multilist_validate2_fcn_mac_addr (NMSetting *setting,
-                                   const char *item,
-                                   GError **error)
-{
-	guint8 buf[ETH_ALEN];
-
-	if (!nm_utils_hwaddr_aton (item, buf, ETH_ALEN)) {
-		nm_utils_error_set (error, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		                    _("'%s' is not a valid MAC address"), item);
-		return NULL;
-	}
-
-	return item;
-}
-
-static gconstpointer
-_get_fcn_wireless_security_wep_key (ARGS_GET_FCN)
-{
-	NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting);
-	char *key;
-	guint index;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	nm_assert (g_str_has_prefix (property_info->property_name, "wep-key"));
-	nm_assert (NM_IN_SET (property_info->property_name[7], '0', '1', '2', '3'));
-	nm_assert (property_info->property_name[8] == '\0');
-
-	index = property_info->property_name[7] - '0';
-
-	key = g_strdup (nm_setting_wireless_security_get_wep_key (s_wireless_sec, index));
-	NM_SET_OUT (out_is_default, !key);
-	RETURN_STR_TO_FREE (key);
-}
-
-static gboolean
-_set_fcn_wireless_wep_key (ARGS_SET_FCN)
-{
-	NMWepKeyType guessed_type = NM_WEP_KEY_TYPE_UNKNOWN;
-	NMWepKeyType type;
-	guint32 prev_idx, idx;
-
-	nm_assert (!error || !*error);
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value)) {
-		g_object_set (setting, property_info->property_name, NULL, NULL);
-		return TRUE;
-	}
-
-	/* Get currently set type */
-	type = nm_setting_wireless_security_get_wep_key_type (NM_SETTING_WIRELESS_SECURITY (setting));
-
-	/* Guess key type */
-	if (nm_utils_wep_key_valid (value, NM_WEP_KEY_TYPE_KEY))
-		guessed_type = NM_WEP_KEY_TYPE_KEY;
-	else if (nm_utils_wep_key_valid (value, NM_WEP_KEY_TYPE_PASSPHRASE))
-		guessed_type = NM_WEP_KEY_TYPE_PASSPHRASE;
-
-	if (guessed_type == NM_WEP_KEY_TYPE_UNKNOWN) {
-		g_set_error (error, 1, 0, _("'%s' is not valid"), value);
-		return FALSE;
-	}
-
-	if (type != NM_WEP_KEY_TYPE_UNKNOWN && type != guessed_type) {
-		if (nm_utils_wep_key_valid (value, type))
-			guessed_type = type;
-		else {
-			g_set_error (error, 1, 0,
-			             _("'%s' not compatible with %s '%s', please change the key or set the right %s first."),
-			             value, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, wep_key_type_to_string (type),
-			             NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE);
-			return FALSE;
-		}
-	}
-	prev_idx = nm_setting_wireless_security_get_wep_tx_keyidx (NM_SETTING_WIRELESS_SECURITY (setting));
-	idx = property_info->property_name[strlen (property_info->property_name) - 1] - '0';
-	_env_warn_fcn (environment, environment_user_data,
-	               NM_META_ENV_WARN_LEVEL_INFO,
-	               N_("WEP key is guessed to be of '%s'"),
-	               wep_key_type_to_string (guessed_type));
-	if (idx != prev_idx) {
-		_env_warn_fcn (environment, environment_user_data,
-		               NM_META_ENV_WARN_LEVEL_INFO,
-		               N_("WEP key index set to '%d'"),
-		               idx);
-	}
-
-	g_object_set (setting, property_info->property_name, value, NULL);
-	g_object_set (setting, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, guessed_type, NULL);
-	if (idx != prev_idx)
-		g_object_set (setting, NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, idx, NULL);
-	return TRUE;
+_multilist_validate2_fcn_mac_addr(NMSetting *setting, const char *item, GError **error)
+{
+    guint8 buf[ETH_ALEN];
+
+    if (!nm_utils_hwaddr_aton(item, buf, ETH_ALEN)) {
+        nm_utils_error_set(error,
+                           NM_UTILS_ERROR_INVALID_ARGUMENT,
+                           _("'%s' is not a valid MAC address"),
+                           item);
+        return NULL;
+    }
+
+    return item;
+}
+
+static gconstpointer _get_fcn_wireless_security_wep_key(ARGS_GET_FCN)
+{
+    NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY(setting);
+    char *                     key;
+    guint                      index;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    nm_assert(g_str_has_prefix(property_info->property_name, "wep-key"));
+    nm_assert(NM_IN_SET(property_info->property_name[7], '0', '1', '2', '3'));
+    nm_assert(property_info->property_name[8] == '\0');
+
+    index = property_info->property_name[7] - '0';
+
+    key = g_strdup(nm_setting_wireless_security_get_wep_key(s_wireless_sec, index));
+    NM_SET_OUT(out_is_default, !key);
+    RETURN_STR_TO_FREE(key);
+}
+
+static gboolean _set_fcn_wireless_wep_key(ARGS_SET_FCN)
+{
+    NMWepKeyType guessed_type = NM_WEP_KEY_TYPE_UNKNOWN;
+    NMWepKeyType type;
+    guint32      prev_idx, idx;
+
+    nm_assert(!error || !*error);
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value)) {
+        g_object_set(setting, property_info->property_name, NULL, NULL);
+        return TRUE;
+    }
+
+    /* Get currently set type */
+    type = nm_setting_wireless_security_get_wep_key_type(NM_SETTING_WIRELESS_SECURITY(setting));
+
+    /* Guess key type */
+    if (nm_utils_wep_key_valid(value, NM_WEP_KEY_TYPE_KEY))
+        guessed_type = NM_WEP_KEY_TYPE_KEY;
+    else if (nm_utils_wep_key_valid(value, NM_WEP_KEY_TYPE_PASSPHRASE))
+        guessed_type = NM_WEP_KEY_TYPE_PASSPHRASE;
+
+    if (guessed_type == NM_WEP_KEY_TYPE_UNKNOWN) {
+        g_set_error(error, 1, 0, _("'%s' is not valid"), value);
+        return FALSE;
+    }
+
+    if (type != NM_WEP_KEY_TYPE_UNKNOWN && type != guessed_type) {
+        if (nm_utils_wep_key_valid(value, type))
+            guessed_type = type;
+        else {
+            g_set_error(error,
+                        1,
+                        0,
+                        _("'%s' not compatible with %s '%s', please change the key or set the "
+                          "right %s first."),
+                        value,
+                        NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
+                        wep_key_type_to_string(type),
+                        NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE);
+            return FALSE;
+        }
+    }
+    prev_idx =
+        nm_setting_wireless_security_get_wep_tx_keyidx(NM_SETTING_WIRELESS_SECURITY(setting));
+    idx = property_info->property_name[strlen(property_info->property_name) - 1] - '0';
+    _env_warn_fcn(environment,
+                  environment_user_data,
+                  NM_META_ENV_WARN_LEVEL_INFO,
+                  N_("WEP key is guessed to be of '%s'"),
+                  wep_key_type_to_string(guessed_type));
+    if (idx != prev_idx) {
+        _env_warn_fcn(environment,
+                      environment_user_data,
+                      NM_META_ENV_WARN_LEVEL_INFO,
+                      N_("WEP key index set to '%d'"),
+                      idx);
+    }
+
+    g_object_set(setting, property_info->property_name, value, NULL);
+    g_object_set(setting, NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, guessed_type, NULL);
+    if (idx != prev_idx)
+        g_object_set(setting, NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, idx, NULL);
+    return TRUE;
 }
 
 static void
-_gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type (const NMMetaPropertyInfo *property_info,
-                                                                 const NMMetaEnvironment *environment,
-                                                                 gpointer environment_user_data,
-                                                                 NMSetting *setting,
-                                                                 int value)
-{
-	guint i;
-	const char *key;
-	const char *keynames[] = {
-		NM_SETTING_WIRELESS_SECURITY_WEP_KEY0,
-		NM_SETTING_WIRELESS_SECURITY_WEP_KEY1,
-		NM_SETTING_WIRELESS_SECURITY_WEP_KEY2,
-		NM_SETTING_WIRELESS_SECURITY_WEP_KEY3,
-	};
-
-	/* Check type compatibility with set keys */
-	if (!NM_IN_SET (value,
-	                NM_WEP_KEY_TYPE_UNKNOWN,
-	                NM_WEP_KEY_TYPE_KEY,
-	                NM_WEP_KEY_TYPE_PASSPHRASE))
-		return;
-
-	for (i = 0; i < 4; i++) {
-		key = nm_setting_wireless_security_get_wep_key (NM_SETTING_WIRELESS_SECURITY (setting), i);
-		if (key && !nm_utils_wep_key_valid (key, value)) {
-			_env_warn_fcn (environment, environment_user_data,
-			               NM_META_ENV_WARN_LEVEL_WARN,
-			               N_("'%s' is not compatible with '%s' type, please change or delete the key."),
-			               keynames[i], wep_key_type_to_string (value));
-		}
-	}
+_gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type(
+    const NMMetaPropertyInfo *property_info,
+    const NMMetaEnvironment * environment,
+    gpointer                  environment_user_data,
+    NMSetting *               setting,
+    int                       value)
+{
+    guint       i;
+    const char *key;
+    const char *keynames[] = {
+        NM_SETTING_WIRELESS_SECURITY_WEP_KEY0,
+        NM_SETTING_WIRELESS_SECURITY_WEP_KEY1,
+        NM_SETTING_WIRELESS_SECURITY_WEP_KEY2,
+        NM_SETTING_WIRELESS_SECURITY_WEP_KEY3,
+    };
+
+    /* Check type compatibility with set keys */
+    if (!NM_IN_SET(value, NM_WEP_KEY_TYPE_UNKNOWN, NM_WEP_KEY_TYPE_KEY, NM_WEP_KEY_TYPE_PASSPHRASE))
+        return;
+
+    for (i = 0; i < 4; i++) {
+        key = nm_setting_wireless_security_get_wep_key(NM_SETTING_WIRELESS_SECURITY(setting), i);
+        if (key && !nm_utils_wep_key_valid(key, value)) {
+            _env_warn_fcn(
+                environment,
+                environment_user_data,
+                NM_META_ENV_WARN_LEVEL_WARN,
+                N_("'%s' is not compatible with '%s' type, please change or delete the key."),
+                keynames[i],
+                wep_key_type_to_string(value));
+        }
+    }
 }
 
 /*****************************************************************************/
 
-static gconstpointer
-_get_fcn_ethtool (ARGS_GET_FCN)
-{
-	NMEthtoolID ethtool_id = property_info->property_typ_data->subtype.ethtool.ethtool_id;
-	const char *s;
-	guint32 u32;
-	gboolean b;
-
-	RETURN_UNSUPPORTED_GET_TYPE ();
-
-	if (   nm_ethtool_id_is_coalesce (ethtool_id)
-	    || nm_ethtool_id_is_ring (ethtool_id)) {
-		if (!nm_setting_option_get_uint32 (setting,
-		                                   nm_ethtool_data[ethtool_id]->optname,
-		                                   &u32)) {
-			NM_SET_OUT (out_is_default, TRUE);
-			return NULL;
-		}
-
-		RETURN_STR_TO_FREE (nm_strdup_int (u32));
-	}
-
-	nm_assert (nm_ethtool_id_is_feature (ethtool_id));
-
-	if (!nm_setting_option_get_boolean (setting,
-	                                    nm_ethtool_data[ethtool_id]->optname,
-	                                    &b)) {
-		NM_SET_OUT (out_is_default, TRUE);
-		return NULL;
-	}
-
-	s =   b
-	    ? N_("on")
-	    : N_("off");
-	if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
-		s = gettext (s);
-	return s;
-}
-
-static gboolean
-_set_fcn_ethtool (ARGS_SET_FCN)
-{
-	NMEthtoolID ethtool_id = property_info->property_typ_data->subtype.ethtool.ethtool_id;
-	gs_free char *value_to_free = NULL;
-	gint64 i64;
-	gboolean b;
-
-	if (_SET_FCN_DO_RESET_DEFAULT (property_info, modifier, value))
-		goto do_unset;
-
-	if (   nm_ethtool_id_is_coalesce (ethtool_id)
-	    || nm_ethtool_id_is_ring (ethtool_id)) {
-
-		i64 = _nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXUINT32, -1);
-		if (i64 == -1) {
-			g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-			             _("'%s' is out of range [%"G_GUINT32_FORMAT", %"G_GUINT32_FORMAT"]"),
-			             value, 0, G_MAXUINT32);
-			return FALSE;
-		}
-
-		nm_setting_option_set_uint32 (setting,
-		                              nm_ethtool_data[ethtool_id]->optname,
-		                              i64);
-		return TRUE;
-	}
-
-	nm_assert (nm_ethtool_id_is_feature (ethtool_id));
-
-	value = nm_strstrip_avoid_copy_a (300, value, &value_to_free);
-	if (NM_IN_STRSET (value, "1", "yes", "true", "on"))
-		b = TRUE;
-	else if (NM_IN_STRSET (value, "0", "no", "false", "off"))
-		b = FALSE;
-	else if (NM_IN_STRSET (value, "", "ignore", "default"))
-		goto do_unset;
-	else {
-		g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_INVALID_ARGUMENT,
-		             _("'%s' is not valid; use 'on', 'off', or 'ignore'"),
-		             value);
-		return FALSE;
-	}
-
-	nm_setting_option_set_boolean (setting,
-	                               nm_ethtool_data[ethtool_id]->optname,
-	                               b);
-	return TRUE;
+static gconstpointer _get_fcn_ethtool(ARGS_GET_FCN)
+{
+    NMEthtoolID ethtool_id = property_info->property_typ_data->subtype.ethtool.ethtool_id;
+    const char *s;
+    guint32     u32;
+    gboolean    b;
+
+    RETURN_UNSUPPORTED_GET_TYPE();
+
+    if (nm_ethtool_id_is_coalesce(ethtool_id) || nm_ethtool_id_is_ring(ethtool_id)) {
+        if (!nm_setting_option_get_uint32(setting, nm_ethtool_data[ethtool_id]->optname, &u32)) {
+            NM_SET_OUT(out_is_default, TRUE);
+            return NULL;
+        }
+
+        RETURN_STR_TO_FREE(nm_strdup_int(u32));
+    }
+
+    nm_assert(nm_ethtool_id_is_feature(ethtool_id));
+
+    if (!nm_setting_option_get_boolean(setting, nm_ethtool_data[ethtool_id]->optname, &b)) {
+        NM_SET_OUT(out_is_default, TRUE);
+        return NULL;
+    }
+
+    s = b ? N_("on") : N_("off");
+    if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
+        s = gettext(s);
+    return s;
+}
+
+static gboolean _set_fcn_ethtool(ARGS_SET_FCN)
+{
+    NMEthtoolID   ethtool_id    = property_info->property_typ_data->subtype.ethtool.ethtool_id;
+    gs_free char *value_to_free = NULL;
+    gint64        i64;
+    gboolean      b;
+
+    if (_SET_FCN_DO_RESET_DEFAULT(property_info, modifier, value))
+        goto do_unset;
+
+    if (nm_ethtool_id_is_coalesce(ethtool_id) || nm_ethtool_id_is_ring(ethtool_id)) {
+        i64 = _nm_utils_ascii_str_to_int64(value, 10, 0, G_MAXUINT32, -1);
+        if (i64 == -1) {
+            g_set_error(error,
+                        NM_UTILS_ERROR,
+                        NM_UTILS_ERROR_INVALID_ARGUMENT,
+                        _("'%s' is out of range [%" G_GUINT32_FORMAT ", %" G_GUINT32_FORMAT "]"),
+                        value,
+                        0,
+                        G_MAXUINT32);
+            return FALSE;
+        }
+
+        nm_setting_option_set_uint32(setting, nm_ethtool_data[ethtool_id]->optname, i64);
+        return TRUE;
+    }
+
+    nm_assert(nm_ethtool_id_is_feature(ethtool_id));
+
+    value = nm_strstrip_avoid_copy_a(300, value, &value_to_free);
+    if (NM_IN_STRSET(value, "1", "yes", "true", "on"))
+        b = TRUE;
+    else if (NM_IN_STRSET(value, "0", "no", "false", "off"))
+        b = FALSE;
+    else if (NM_IN_STRSET(value, "", "ignore", "default"))
+        goto do_unset;
+    else {
+        g_set_error(error,
+                    NM_UTILS_ERROR,
+                    NM_UTILS_ERROR_INVALID_ARGUMENT,
+                    _("'%s' is not valid; use 'on', 'off', or 'ignore'"),
+                    value);
+        return FALSE;
+    }
+
+    nm_setting_option_set_boolean(setting, nm_ethtool_data[ethtool_id]->optname, b);
+    return TRUE;
 
 do_unset:
-	nm_setting_option_set (setting,
-	                       nm_ethtool_data[ethtool_id]->optname,
-	                       NULL);
-	return TRUE;
-}
-
-static const char *const*
-_complete_fcn_ethtool (ARGS_COMPLETE_FCN)
-{
-	static const char *const v[] = {
-		"true",
-		"false",
-		"1",
-		"0",
-		"yes",
-		"no",
-		"default",
-		"on",
-		"off",
-		"ignore",
-		NULL,
-	};
-	NMEthtoolID ethtool_id = property_info->property_typ_data->subtype.ethtool.ethtool_id;
-
-	if (nm_ethtool_id_is_feature (ethtool_id)) {
-		if (!text || !text[0])
-			return &v[7];
-		return v;
-	}
-	return NULL;
+    nm_setting_option_set(setting, nm_ethtool_data[ethtool_id]->optname, NULL);
+    return TRUE;
+}
+
+static const char *const *_complete_fcn_ethtool(ARGS_COMPLETE_FCN)
+{
+    static const char *const v[] = {
+        "true",
+        "false",
+        "1",
+        "0",
+        "yes",
+        "no",
+        "default",
+        "on",
+        "off",
+        "ignore",
+        NULL,
+    };
+    NMEthtoolID ethtool_id = property_info->property_typ_data->subtype.ethtool.ethtool_id;
+
+    if (nm_ethtool_id_is_feature(ethtool_id)) {
+        if (!text || !text[0])
+            return &v[7];
+        return v;
+    }
+    return NULL;
 }
 
 /*****************************************************************************/
 
+/* clang-format off */
+
 static const NMMetaPropertyInfo property_info_BOND_OPTIONS;
 
 #define NESTED_PROPERTY_INFO_BOND(...) \
-	.parent_info =                  &property_info_BOND_OPTIONS, \
-	.base = { \
-		.meta_type =                &nm_meta_type_nested_property_info, \
-		.setting_info =             &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_BOND], \
-		__VA_ARGS__ \
-	}
+    .parent_info =                  &property_info_BOND_OPTIONS, \
+    .base = { \
+        .meta_type =                &nm_meta_type_nested_property_info, \
+        .setting_info =             &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_BOND], \
+        __VA_ARGS__ \
+    }
 
 static const NMMetaNestedPropertyInfo meta_nested_property_infos_bond[] = {
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "mode",
-			.prompt =                   NM_META_TEXT_PROMPT_BOND_MODE,
-			.def_hint =                 "[balance-rr]",
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "primary",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding primary interface [none]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			/* this is a virtual property, only needed during "ask" mode. */
-			.prompt =                   N_("Bonding monitoring mode"),
-			.def_hint =                 NM_META_TEXT_PROMPT_BOND_MON_MODE_CHOICES,
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "miimon",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding miimon [100]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "downdelay",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding downdelay [0]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "updelay",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding updelay [0]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "arp-interval",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding arp-interval [0]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "arp-ip-target",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("Bonding arp-ip-target [none]"),
-		)
-	},
-	{
-		NESTED_PROPERTY_INFO_BOND (
-			.property_name =            NM_SETTING_BOND_OPTIONS,
-			.property_alias =           "lacp-rate",
-			.inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-			.prompt =                   N_("LACP rate ('slow' or 'fast') [slow]"),
-		)
-	},
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "mode",
+            .prompt =                   NM_META_TEXT_PROMPT_BOND_MODE,
+            .def_hint =                 "[balance-rr]",
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "primary",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding primary interface [none]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            /* this is a virtual property, only needed during "ask" mode. */
+            .prompt =                   N_("Bonding monitoring mode"),
+            .def_hint =                 NM_META_TEXT_PROMPT_BOND_MON_MODE_CHOICES,
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "miimon",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding miimon [100]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "downdelay",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding downdelay [0]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "updelay",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding updelay [0]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "arp-interval",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding arp-interval [0]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "arp-ip-target",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("Bonding arp-ip-target [none]"),
+        )
+    },
+    {
+        NESTED_PROPERTY_INFO_BOND (
+            .property_name =            NM_SETTING_BOND_OPTIONS,
+            .property_alias =           "lacp-rate",
+            .inf_flags =                NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+            .prompt =                   N_("LACP rate ('slow' or 'fast') [slow]"),
+        )
+    },
 };
 
 const NMMetaPropertyTypDataNested nm_meta_property_typ_data_bond = {
-	.nested =               meta_nested_property_infos_bond,
-	.nested_len =           G_N_ELEMENTS (meta_nested_property_infos_bond),
+    .nested =               meta_nested_property_infos_bond,
+    .nested_len =           G_N_ELEMENTS (meta_nested_property_infos_bond),
 };
 
 /*****************************************************************************/
 
 #define DEFINE_PROPERTY_TYPE(...) \
-	(&((NMMetaPropertyType) { __VA_ARGS__ } ))
+    (&((NMMetaPropertyType) { __VA_ARGS__ } ))
 
 #define DEFINE_PROPERTY_TYP_DATA(...) \
-	(&((NMMetaPropertyTypData) { __VA_ARGS__ } ))
+    (&((NMMetaPropertyTypData) { __VA_ARGS__ } ))
 
 #define PROPERTY_TYP_DATA_SUBTYPE(stype, ...) \
-	.subtype = { \
-		.stype = { __VA_ARGS__ }, \
-	}
+    .subtype = { \
+        .stype = { __VA_ARGS__ }, \
+    }
 
 #define DEFINE_PROPERTY_TYP_DATA_SUBTYPE(stype, ...) \
-	DEFINE_PROPERTY_TYP_DATA ( \
-		PROPERTY_TYP_DATA_SUBTYPE (stype, __VA_ARGS__), \
-	)
+    DEFINE_PROPERTY_TYP_DATA ( \
+        PROPERTY_TYP_DATA_SUBTYPE (stype, __VA_ARGS__), \
+    )
 
 static const NMMetaPropertyType _pt_gobject_readonly = {
-	.get_fcn =                      _get_fcn_gobject,
+    .get_fcn =                      _get_fcn_gobject,
 };
 
 static const NMMetaPropertyType _pt_gobject_string = {
-	.get_fcn =                      _get_fcn_gobject,
-	.set_fcn =                      _set_fcn_gobject_string,
+    .get_fcn =                      _get_fcn_gobject,
+    .set_fcn =                      _set_fcn_gobject_string,
 };
 
 static const NMMetaPropertyType _pt_gobject_bool = {
-	.get_fcn =                      _get_fcn_gobject,
-	.set_fcn =                      _set_fcn_gobject_bool,
-	.complete_fcn =                 _complete_fcn_gobject_bool,
+    .get_fcn =                      _get_fcn_gobject,
+    .set_fcn =                      _set_fcn_gobject_bool,
+    .complete_fcn =                 _complete_fcn_gobject_bool,
 };
 
 static const NMMetaPropertyType _pt_gobject_int = {
-	.get_fcn =                      _get_fcn_gobject_int,
-	.set_fcn =                      _set_fcn_gobject_int,
+    .get_fcn =                      _get_fcn_gobject_int,
+    .set_fcn =                      _set_fcn_gobject_int,
 };
 
 static const NMMetaPropertyType _pt_gobject_mtu = {
-	.get_fcn =                      _get_fcn_gobject_mtu,
-	.set_fcn =                      _set_fcn_gobject_mtu,
+    .get_fcn =                      _get_fcn_gobject_mtu,
+    .set_fcn =                      _set_fcn_gobject_mtu,
 };
 
 static const NMMetaPropertyType _pt_gobject_bytes = {
-	.get_fcn =                     _get_fcn_gobject,
-	.set_fcn =                     _set_fcn_gobject_bytes,
+    .get_fcn =                     _get_fcn_gobject,
+    .set_fcn =                     _set_fcn_gobject_bytes,
 };
 
 static const NMMetaPropertyType _pt_gobject_mac = {
-	.get_fcn =                      _get_fcn_gobject,
-	.set_fcn =                      _set_fcn_gobject_mac,
+    .get_fcn =                      _get_fcn_gobject,
+    .set_fcn =                      _set_fcn_gobject_mac,
 };
 
 static const NMMetaPropertyType _pt_gobject_secret_flags = {
-	.get_fcn =                      _get_fcn_gobject_secret_flags,
-	.set_fcn =                      _set_fcn_gobject_enum,
-	.values_fcn =                   _values_fcn_gobject_enum,
-	.set_supports_remove =          TRUE,
+    .get_fcn =                      _get_fcn_gobject_secret_flags,
+    .set_fcn =                      _set_fcn_gobject_enum,
+    .values_fcn =                   _values_fcn_gobject_enum,
+    .set_supports_remove =          TRUE,
 };
 
 static const NMMetaPropertyType _pt_gobject_enum = {
-	.get_fcn =                      _get_fcn_gobject_enum,
-	.set_fcn =                      _set_fcn_gobject_enum,
-	.values_fcn =                   _values_fcn_gobject_enum,
-	.set_supports_remove =          TRUE,
+    .get_fcn =                      _get_fcn_gobject_enum,
+    .set_fcn =                      _set_fcn_gobject_enum,
+    .values_fcn =                   _values_fcn_gobject_enum,
+    .set_supports_remove =          TRUE,
 };
 
 static const NMMetaPropertyType _pt_gobject_devices = {
-	.get_fcn =                      _get_fcn_gobject,
-	.set_fcn =                      _set_fcn_gobject_string,
-	.complete_fcn =                 _complete_fcn_gobject_devices,
+    .get_fcn =                      _get_fcn_gobject,
+    .set_fcn =                      _set_fcn_gobject_string,
+    .complete_fcn =                 _complete_fcn_gobject_devices,
 };
 
 static const NMMetaPropertyType _pt_dcb_flags = {
-	.get_fcn =                      _get_fcn_dcb_flags,
-	.set_fcn =                      _set_fcn_dcb_flags,
+    .get_fcn =                      _get_fcn_dcb_flags,
+    .set_fcn =                      _set_fcn_dcb_flags,
 };
 
 static const NMMetaPropertyType _pt_dcb_bool = {
-	.get_fcn =                      _get_fcn_dcb_bool,
-	.set_fcn =                      _set_fcn_dcb_bool,
+    .get_fcn =                      _get_fcn_dcb_bool,
+    .set_fcn =                      _set_fcn_dcb_bool,
 };
 
 static const NMMetaPropertyType _pt_dcb = {
-	.get_fcn =                      _get_fcn_dcb,
-	.set_fcn =                      _set_fcn_dcb,
+    .get_fcn =                      _get_fcn_dcb,
+    .set_fcn =                      _set_fcn_dcb,
 };
 
 static const NMMetaPropertyType _pt_cert_8021x = {
-	.get_fcn =                      _get_fcn_cert_8021x,
-	.set_fcn =                      _set_fcn_cert_8021x,
-	.complete_fcn =                 _complete_fcn_cert_8021x,
+    .get_fcn =                      _get_fcn_cert_8021x,
+    .set_fcn =                      _set_fcn_cert_8021x,
+    .complete_fcn =                 _complete_fcn_cert_8021x,
 };
 
 static const NMMetaPropertyType _pt_ethtool = {
-	.get_fcn =                      _get_fcn_ethtool,
-	.set_fcn =                      _set_fcn_ethtool,
-	.complete_fcn =                 _complete_fcn_ethtool,
+    .get_fcn =                      _get_fcn_ethtool,
+    .set_fcn =                      _set_fcn_ethtool,
+    .complete_fcn =                 _complete_fcn_ethtool,
 };
 
 static const NMMetaPropertyType _pt_multilist = {
-	.get_fcn =                      _get_fcn_multilist,
-	.set_fcn =                      _set_fcn_multilist,
-	.set_supports_remove =          TRUE,
+    .get_fcn =                      _get_fcn_multilist,
+    .set_fcn =                      _set_fcn_multilist,
+    .set_supports_remove =          TRUE,
 };
 
 static const NMMetaPropertyType _pt_objlist = {
-	.get_fcn =                  _get_fcn_objlist,
-	.set_fcn =                  _set_fcn_objlist,
-	.set_supports_remove =      TRUE,
+    .get_fcn =                  _get_fcn_objlist,
+    .set_fcn =                  _set_fcn_objlist,
+    .set_supports_remove =      TRUE,
 };
 
 #define MULTILIST_GET_NUM_FCN_U32(type, func)       (((func) == ((guint32  (*) (type *              )) (func))) ? ((guint32  (*) (NMSetting *              )) (func)) : NULL)
@@ -4456,52 +4512,52 @@ static const NMMetaPropertyType _pt_objlist = {
 /*****************************************************************************/
 
 #define PROPERTY_INFO_INIT(name, doc, ...) \
-	{ \
-		.meta_type =                    &nm_meta_type_property_info, \
-		.setting_info =                 &nm_meta_setting_infos_editor[_CURRENT_NM_META_SETTING_TYPE], \
-		.property_name =                name, \
-		.describe_doc =                 doc, \
-		__VA_ARGS__ \
-	}
+    { \
+        .meta_type =                    &nm_meta_type_property_info, \
+        .setting_info =                 &nm_meta_setting_infos_editor[_CURRENT_NM_META_SETTING_TYPE], \
+        .property_name =                name, \
+        .describe_doc =                 doc, \
+        __VA_ARGS__ \
+    }
 
 #define PROPERTY_INFO(name, doc, ...) \
-	(&((const NMMetaPropertyInfo) PROPERTY_INFO_INIT (name, doc, __VA_ARGS__)))
+    (&((const NMMetaPropertyInfo) PROPERTY_INFO_INIT (name, doc, __VA_ARGS__)))
 
 #define PROPERTY_INFO_WITH_DESC(name, ...) \
-	PROPERTY_INFO (name, DESCRIBE_DOC_##name, ##__VA_ARGS__)
+    PROPERTY_INFO (name, DESCRIBE_DOC_##name, ##__VA_ARGS__)
 
 #define ENUM_VALUE_INFOS(...)  (((const NMUtilsEnumValueInfo    []) { __VA_ARGS__ { .nick = NULL, }, }))
 #define INT_VALUE_INFOS(...)   (((const NMMetaUtilsIntValueInfo []) { __VA_ARGS__ { .nick = NULL, }, }))
 
 #define MTU_GET_FCN(type, func) \
-	/* macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
-	 * that the actual type is (guint32(*)(type *)). */ \
-	((guint32 (*) (NMSetting *)) ((sizeof (func == ((guint32 (*) (type *)) func))) ? func : func) )
+    /* macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
+     * that the actual type is (guint32(*)(type *)). */ \
+    ((guint32 (*) (NMSetting *)) ((sizeof (func == ((guint32 (*) (type *)) func))) ? func : func) )
 
 #define TEAM_DESCRIBE_MESSAGE \
-	N_("nmcli can accepts both direct JSON configuration data and a file name containing " \
-	   "the configuration. In the latter case the file is read and the contents is put " \
-	   "into this property.\n\n" \
-	   "Examples: set team.config " \
-	   "{ \"device\": \"team0\", \"runner\": {\"name\": \"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n" \
-	   "          set team.config /etc/my-team.conf\n")
+    N_("nmcli can accepts both direct JSON configuration data and a file name containing " \
+       "the configuration. In the latter case the file is read and the contents is put " \
+       "into this property.\n\n" \
+       "Examples: set team.config " \
+       "{ \"device\": \"team0\", \"runner\": {\"name\": \"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n" \
+       "          set team.config /etc/my-team.conf\n")
 
 #define TEAM_LINK_WATCHERS_DESCRIBE_MESSAGE \
-	N_("Enter a list of link watchers formatted as dictionaries where the keys " \
-	   "are teamd properties. Dictionary pairs are in the form: key=value and pairs " \
-	   "are separated by ' '. Dictionaries are separated with ','.\n" \
-	   "The keys allowed/required in the dictionary change on the basis of the link " \
-	   "watcher type, while the only property common to all the link watchers is " \
-	   " 'name'*, which defines the link watcher to be specified.\n\n" \
-	   "Properties available for the 'ethtool' link watcher:\n" \
-	   "  'delay-up', 'delay-down'\n\n" \
-	   "Properties available for the 'nsna_ping' link watcher:\n" \
-	   "  'init-wait', 'interval', 'missed-max', 'target-host'*\n\n" \
-	   "Properties available for the 'arp_ping' include all the ones for 'nsna_ping' and:\n" \
-	   "  'source-host'*, 'validate-active', 'validate-inactive', 'send-always'.\n\n" \
-	   "Properties flagged with a '*' are mandatory.\n\n" \
-	   "Example:\n" \
-	   "   name=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, name=ethtool delay-up=3\n")
+    N_("Enter a list of link watchers formatted as dictionaries where the keys " \
+       "are teamd properties. Dictionary pairs are in the form: key=value and pairs " \
+       "are separated by ' '. Dictionaries are separated with ','.\n" \
+       "The keys allowed/required in the dictionary change on the basis of the link " \
+       "watcher type, while the only property common to all the link watchers is " \
+       " 'name'*, which defines the link watcher to be specified.\n\n" \
+       "Properties available for the 'ethtool' link watcher:\n" \
+       "  'delay-up', 'delay-down'\n\n" \
+       "Properties available for the 'nsna_ping' link watcher:\n" \
+       "  'init-wait', 'interval', 'missed-max', 'target-host'*\n\n" \
+       "Properties available for the 'arp_ping' include all the ones for 'nsna_ping' and:\n" \
+       "  'source-host'*, 'validate-active', 'validate-inactive', 'send-always'.\n\n" \
+       "Properties flagged with a '*' are mandatory.\n\n" \
+       "Example:\n" \
+       "   name=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, name=ethtool delay-up=3\n")
 
 #define DEFINE_DCB_PROPRITY_PROPERTY_TYPE \
     .property_type =                &_pt_gobject_int, \
@@ -4532,3201 +4588,3220 @@ static const NMMetaPropertyTypData _ptd_gobject_int_timeout = {
 
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_6LOWPAN
 static const NMMetaPropertyInfo *const property_infos_6LOWPAN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_6LOWPAN_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("IEEE 802.15.4 (WPAN) parent device or connection UUID"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_6LOWPAN_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("IEEE 802.15.4 (WPAN) parent device or connection UUID"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_802_1X
 static const NMMetaPropertyInfo *const property_infos_802_1X[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_OPTIONAL,
-		.property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_EAP,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_eap_methods),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_eap_method),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_eap_method),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_eap_method_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .values_static =            NM_MAKE_STRV ("leap", "md5", "tls", "peap", "ttls", "sim", "fast", "pwd"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_IDENTITY,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ANONYMOUS_IDENTITY,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PAC_FILE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT,
-	    .describe_message =
-	        N_("Enter file path to CA certificate (optionally prefixed with file://).\n"
-	           "  [file://]<file path>\n"
-	           "Note that nmcli does not support specifying certificates as raw blob data.\n"
-	           "Example: /home/cimrman/cacert.crt\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_PATH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SUBJECT_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ALTSUBJECT_MATCHES,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_altsubject_matches),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_altsubject_match),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_altsubject_match),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_altsubject_match_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT,
-	    .describe_message =
-	        N_("Enter file path to client certificate (optionally prefixed with file://).\n"
-	           "  [file://]<file path>\n"
-	           "Note that nmcli does not support specifying certificates as raw blob data.\n"
-	           "Example: /home/cimrman/jara.crt\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPVER,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("0", "1"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPLABEL,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("0", "1"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("0", "1", "2", "3"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_AUTH_FLAGS,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_802_1x_auth_flags_get_type,
-	        ),
-	        .typ_flags =                NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTH,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("pap", "chap", "mschap", "mschapv2", "gtc", "otp", "md5", "tls"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTHEAP,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("md5", "mschapv2", "otp", "gtc", "tls"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT,
-	    .describe_message =
-	        N_("Enter file path to CA certificate for inner authentication (optionally prefixed\n"
-	           "with file://).\n"
-	           "  [file://]<file path>\n"
-	           "Note that nmcli does not support specifying certificates as raw blob data.\n"
-	           "Example: /home/cimrman/ca-zweite-phase.crt\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_PATH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_phase2_altsubject_matches),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_phase2_altsubject_match),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_phase2_altsubject_match),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_phase2_altsubject_match_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_MATCH,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
-	    .describe_message =
-	        N_("Enter file path to client certificate for inner authentication (optionally prefixed\n"
-	           "with file://).\n"
-	           "  [file://]<file path>\n"
-	           "Note that nmcli does not support specifying certificates as raw blob data.\n"
-	           "Example: /home/cimrman/jara-zweite-phase.crt\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW,
-	    .is_secret =                    TRUE,
-	    .describe_message =
-	        N_("Enter bytes as a list of hexadecimal values.\n"
-	           "Two formats are accepted:\n"
-	           "(a) a string of hexadecimal digits, where each two digits represent one byte\n"
-	           "(b) space-separated list of bytes written as hexadecimal digits "
-	           "(with optional 0x/0X prefix, and optional leading 0).\n\n"
-	           "Examples: ab0455a6ea3a74C2\n"
-	           "          ab 4 55 0xa6 ea 3a 74 C2\n"),
-	    .property_type =                 &_pt_gobject_bytes,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_bytes,
-	        .legacy_format =            TRUE,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY,
-	    .describe_message =
-	        N_("Enter path to a private key and the key password (if not set yet):\n"
-	           "  [file://]<file path> [<password>]\n"
-	           "Note that nmcli does not support specifying private key as raw blob data.\n"
-	           "Example: /home/cimrman/jara-priv-key Dardanely\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
-	    .describe_message =
-	        N_("Enter path to a private key and the key password (if not set yet):\n"
-	           "  [file://]<file path> [<password>]\n"
-	           "Note that nmcli does not support specifying private key as raw blob data.\n"
-	           "Example: /home/cimrman/jara-priv-key Dardanely\n"),
-	    .property_type =                &_pt_cert_8021x,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
-	        .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SYSTEM_CA_CERTS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_AUTH_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_OPTIONAL,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_EAP,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_eap_methods),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_eap_method),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_eap_method),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_eap_method_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+            .values_static =            NM_MAKE_STRV ("leap", "md5", "tls", "peap", "ttls", "sim", "fast", "pwd"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_IDENTITY,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ANONYMOUS_IDENTITY,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PAC_FILE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT,
+        .describe_message =
+            N_("Enter file path to CA certificate (optionally prefixed with file://).\n"
+               "  [file://]<file path>\n"
+               "Note that nmcli does not support specifying certificates as raw blob data.\n"
+               "Example: /home/cimrman/cacert.crt\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_CA_CERT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_PATH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SUBJECT_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ALTSUBJECT_MATCHES,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_altsubject_matches),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_altsubject_match),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_altsubject_match),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_altsubject_match_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT,
+        .describe_message =
+            N_("Enter file path to client certificate (optionally prefixed with file://).\n"
+               "  [file://]<file path>\n"
+               "Note that nmcli does not support specifying certificates as raw blob data.\n"
+               "Example: /home/cimrman/jara.crt\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_CLIENT_CERT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPVER,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("0", "1"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPLABEL,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("0", "1"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("0", "1", "2", "3"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_AUTH_FLAGS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_802_1x_auth_flags_get_type,
+            ),
+            .typ_flags =                NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTH,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("pap", "chap", "mschap", "mschapv2", "gtc", "otp", "md5", "tls"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTHEAP,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("md5", "mschapv2", "otp", "gtc", "tls"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT,
+        .describe_message =
+            N_("Enter file path to CA certificate for inner authentication (optionally prefixed\n"
+               "with file://).\n"
+               "  [file://]<file path>\n"
+               "Note that nmcli does not support specifying certificates as raw blob data.\n"
+               "Example: /home/cimrman/ca-zweite-phase.crt\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CA_CERT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_PATH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSetting8021x, nm_setting_802_1x_get_num_phase2_altsubject_matches),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSetting8021x, nm_setting_802_1x_add_phase2_altsubject_match),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSetting8021x, nm_setting_802_1x_remove_phase2_altsubject_match),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSetting8021x, nm_setting_802_1x_remove_phase2_altsubject_match_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_MATCH,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
+        .describe_message =
+            N_("Enter file path to client certificate for inner authentication (optionally prefixed\n"
+               "with file://).\n"
+               "  [file://]<file path>\n"
+               "Note that nmcli does not support specifying certificates as raw blob data.\n"
+               "Example: /home/cimrman/jara-zweite-phase.crt\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_CLIENT_CERT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW,
+        .is_secret =                    TRUE,
+        .describe_message =
+            N_("Enter bytes as a list of hexadecimal values.\n"
+               "Two formats are accepted:\n"
+               "(a) a string of hexadecimal digits, where each two digits represent one byte\n"
+               "(b) space-separated list of bytes written as hexadecimal digits "
+               "(with optional 0x/0X prefix, and optional leading 0).\n\n"
+               "Examples: ab0455a6ea3a74C2\n"
+               "          ab 4 55 0xa6 ea 3a 74 C2\n"),
+        .property_type =                 &_pt_gobject_bytes,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_bytes,
+            .legacy_format =            TRUE,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY,
+        .describe_message =
+            N_("Enter path to a private key and the key password (if not set yet):\n"
+               "  [file://]<file path> [<password>]\n"
+               "Note that nmcli does not support specifying private key as raw blob data.\n"
+               "Example: /home/cimrman/jara-priv-key Dardanely\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PRIVATE_KEY,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
+        .describe_message =
+            N_("Enter path to a private key and the key password (if not set yet):\n"
+               "  [file://]<file path> [<password>]\n"
+               "Note that nmcli does not support specifying private key as raw blob data.\n"
+               "Example: /home/cimrman/jara-priv-key Dardanely\n"),
+        .property_type =                &_pt_cert_8021x,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (cert_8021x,
+            .scheme_type =              NM_SETTING_802_1X_SCHEME_TYPE_PHASE2_PRIVATE_KEY,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SYSTEM_CA_CERTS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_AUTH_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_ADSL
 static const NMMetaPropertyInfo *const property_infos_ADSL[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_USERNAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "username",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("Username"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "password",
-	    .prompt =                       N_("Password [none]"),
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PROTOCOL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "protocol",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       NM_META_TEXT_PROMPT_ADSL_PROTO,
-	    .def_hint =                     NM_META_TEXT_PROMPT_ADSL_PROTO_CHOICES,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_ADSL_PROTOCOL_PPPOA,
-	                                                  NM_SETTING_ADSL_PROTOCOL_PPPOE,
-	                                                  NM_SETTING_ADSL_PROTOCOL_IPOATM),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_ENCAPSULATION,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "encapsulation",
-	    .prompt =                       NM_META_TEXT_PROMPT_ADSL_ENCAP,
-	    .def_hint =                     NM_META_TEXT_PROMPT_ADSL_ENCAP_CHOICES,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_ADSL_ENCAPSULATION_VCMUX,
-	                                                  NM_SETTING_ADSL_ENCAPSULATION_LLC),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VPI,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VCI,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_USERNAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "username",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("Username"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD,
+        .is_cli_option =                TRUE,
+        .property_alias =               "password",
+        .prompt =                       N_("Password [none]"),
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PROTOCOL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "protocol",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       NM_META_TEXT_PROMPT_ADSL_PROTO,
+        .def_hint =                     NM_META_TEXT_PROMPT_ADSL_PROTO_CHOICES,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_ADSL_PROTOCOL_PPPOA,
+                                                      NM_SETTING_ADSL_PROTOCOL_PPPOE,
+                                                      NM_SETTING_ADSL_PROTOCOL_IPOATM),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_ENCAPSULATION,
+        .is_cli_option =                TRUE,
+        .property_alias =               "encapsulation",
+        .prompt =                       NM_META_TEXT_PROMPT_ADSL_ENCAP,
+        .def_hint =                     NM_META_TEXT_PROMPT_ADSL_ENCAP_CHOICES,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_ADSL_ENCAPSULATION_VCMUX,
+                                                      NM_SETTING_ADSL_ENCAPSULATION_LLC),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VPI,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VCI,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BLUETOOTH
 static const NMMetaPropertyInfo *const property_infos_BLUETOOTH[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_BDADDR,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "addr",
-	    .prompt =                       N_("Bluetooth device address"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_TYPE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "bt-type",
-	    .prompt =                       NM_META_TEXT_PROMPT_BT_TYPE,
-	    .def_hint =                     NM_META_TEXT_PROMPT_BT_TYPE_CHOICES,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_BLUETOOTH_TYPE_DUN,
-	                                                  NM_SETTING_BLUETOOTH_TYPE_PANU,
-	                                                  NM_SETTING_BLUETOOTH_TYPE_NAP),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_BDADDR,
+        .is_cli_option =                TRUE,
+        .property_alias =               "addr",
+        .prompt =                       N_("Bluetooth device address"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_TYPE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "bt-type",
+        .prompt =                       NM_META_TEXT_PROMPT_BT_TYPE,
+        .def_hint =                     NM_META_TEXT_PROMPT_BT_TYPE_CHOICES,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_BLUETOOTH_TYPE_DUN,
+                                                      NM_SETTING_BLUETOOTH_TYPE_PANU,
+                                                      NM_SETTING_BLUETOOTH_TYPE_NAP),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BOND
 static const NMMetaPropertyInfo property_info_BOND_OPTIONS =
-	PROPERTY_INFO_INIT (NM_SETTING_BOND_OPTIONS, DESCRIBE_DOC_NM_SETTING_BOND_OPTIONS,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .describe_fcn =             _describe_fcn_bond_options,
-	        .get_fcn =                  _get_fcn_bond_options,
-	        .set_fcn =                  _set_fcn_optionlist,
-	        .set_supports_remove =      TRUE,
-	        .values_fcn =               _values_fcn_bond_options,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (optionlist,
-	            .set_fcn =              _nm_meta_setting_bond_add_option,
-	        ),
-	        .nested =                   &nm_meta_property_typ_data_bond,
-	    ),
-	);
+    PROPERTY_INFO_INIT (NM_SETTING_BOND_OPTIONS, DESCRIBE_DOC_NM_SETTING_BOND_OPTIONS,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .describe_fcn =             _describe_fcn_bond_options,
+            .get_fcn =                  _get_fcn_bond_options,
+            .set_fcn =                  _set_fcn_optionlist,
+            .set_supports_remove =      TRUE,
+            .values_fcn =               _values_fcn_bond_options,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (optionlist,
+                .set_fcn =              _nm_meta_setting_bond_add_option,
+            ),
+            .nested =                   &nm_meta_property_typ_data_bond,
+        ),
+    );
 
 static const NMMetaPropertyInfo *const property_infos_BOND[] = {
-	&property_info_BOND_OPTIONS,
-	NULL
+    &property_info_BOND_OPTIONS,
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BRIDGE
 static const NMMetaPropertyInfo *const property_infos_BRIDGE[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_STP,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "stp",
-	    .prompt =                       N_("Enable STP [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PRIORITY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "priority",
-	    .prompt =                       N_("STP priority [32768]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_FORWARD_DELAY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "forward-delay",
-	    .prompt =                       N_("Forward delay [15]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_HELLO_TIME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "hello-time",
-	    .prompt =                       N_("Hello time [2]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAX_AGE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "max-age",
-	    .prompt =                       N_("Max age [20]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_AGEING_TIME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ageing-time",
-	    .prompt =                       N_("MAC address ageing time [300]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_GROUP_ADDRESS,
-	    .property_type =                &_pt_gobject_mac,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_GROUP_FORWARD_MASK,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "group-forward-mask",
-	    .prompt =                       N_("Group forward mask [0]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_HASH_MAX,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERIER,
-	    .property_type =                &_pt_gobject_bool,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR,
-	    .property_type =                &_pt_gobject_bool,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_SNOOPING,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "multicast-snooping",
-	    .prompt =                       N_("Enable IGMP snooping [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_ROUTER,
-	    .property_type =                &_pt_gobject_string,
-	    .hide_if_default =              TRUE,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("auto",
-	                                                  "disabled",
-	                                                  "enabled"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_FILTERING,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_STATS_ENABLED,
-	    .property_type =                &_pt_gobject_bool,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_PROTOCOL,
-	    .property_type =                &_pt_gobject_string,
-	    .hide_if_default =              TRUE,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("802.1Q",
-	                                                  "802.1ad"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLANS,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingBridge, nm_setting_bridge_get_num_vlans),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingBridge, nm_setting_bridge_clear_vlans),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_bridge_vlans,
-	            .set_fcn =              _objlist_set_fcn_bridge_vlans,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_STP,
+        .is_cli_option =                TRUE,
+        .property_alias =               "stp",
+        .prompt =                       N_("Enable STP [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PRIORITY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "priority",
+        .prompt =                       N_("STP priority [32768]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_FORWARD_DELAY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "forward-delay",
+        .prompt =                       N_("Forward delay [15]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_HELLO_TIME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "hello-time",
+        .prompt =                       N_("Hello time [2]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAX_AGE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "max-age",
+        .prompt =                       N_("Max age [20]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_AGEING_TIME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ageing-time",
+        .prompt =                       N_("MAC address ageing time [300]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_GROUP_ADDRESS,
+        .property_type =                &_pt_gobject_mac,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_GROUP_FORWARD_MASK,
+        .is_cli_option =                TRUE,
+        .property_alias =               "group-forward-mask",
+        .prompt =                       N_("Group forward mask [0]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_HASH_MAX,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERIER,
+        .property_type =                &_pt_gobject_bool,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR,
+        .property_type =                &_pt_gobject_bool,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_SNOOPING,
+        .is_cli_option =                TRUE,
+        .property_alias =               "multicast-snooping",
+        .prompt =                       N_("Enable IGMP snooping [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_ROUTER,
+        .property_type =                &_pt_gobject_string,
+        .hide_if_default =              TRUE,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("auto",
+                                                      "disabled",
+                                                      "enabled"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_FILTERING,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_STATS_ENABLED,
+        .property_type =                &_pt_gobject_bool,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLAN_PROTOCOL,
+        .property_type =                &_pt_gobject_string,
+        .hide_if_default =              TRUE,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("802.1Q",
+                                                      "802.1ad"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_VLANS,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingBridge, nm_setting_bridge_get_num_vlans),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingBridge, nm_setting_bridge_clear_vlans),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_bridge_vlans,
+                .set_fcn =              _objlist_set_fcn_bridge_vlans,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BRIDGE_PORT
 static const NMMetaPropertyInfo *const property_infos_BRIDGE_PORT[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PRIORITY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "priority",
-	    .prompt =                       N_("Bridge port priority [32]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PATH_COST,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "path-cost",
-	    .prompt =                       N_("Bridge port STP path cost [100]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "hairpin",
-	    .prompt =                       N_("Hairpin [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_VLANS,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingBridgePort, nm_setting_bridge_port_get_num_vlans),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingBridgePort, nm_setting_bridge_port_clear_vlans),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_bridge_vlans,
-	            .set_fcn =              _objlist_set_fcn_bridge_vlans,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PRIORITY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "priority",
+        .prompt =                       N_("Bridge port priority [32]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PATH_COST,
+        .is_cli_option =                TRUE,
+        .property_alias =               "path-cost",
+        .prompt =                       N_("Bridge port STP path cost [100]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "hairpin",
+        .prompt =                       N_("Hairpin [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_VLANS,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingBridgePort, nm_setting_bridge_port_get_num_vlans),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingBridgePort, nm_setting_bridge_port_clear_vlans),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_bridge_vlans,
+                .set_fcn =              _objlist_set_fcn_bridge_vlans,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_CDMA
 static const NMMetaPropertyInfo *const property_infos_CDMA[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_NUMBER,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_USERNAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "user",
-	    .prompt =                       N_("Username [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "password",
-	    .prompt =                       N_("Password [none]"),
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_MTU,
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingCdma, nm_setting_cdma_get_mtu),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_NUMBER,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_USERNAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "user",
+        .prompt =                       N_("Username [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD,
+        .is_cli_option =                TRUE,
+        .property_alias =               "password",
+        .prompt =                       N_("Password [none]"),
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_MTU,
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingCdma, nm_setting_cdma_get_mtu),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_CONNECTION
 static const NMMetaPropertyInfo *const property_infos_CONNECTION[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ID,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "con-name",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_UUID,
-	    .property_type =                DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_STABLE_ID,
-	    .property_type =                &_pt_gobject_string,
-	),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ID,
+        .is_cli_option =                TRUE,
+        .property_alias =               "con-name",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_UUID,
+        .property_type =                DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_STABLE_ID,
+        .property_type =                &_pt_gobject_string,
+    ),
 [_NM_META_PROPERTY_TYPE_CONNECTION_TYPE] =
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TYPE,
-	        .is_cli_option =                TRUE,
-	        .property_alias =               "type",
-	        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	        .prompt =                       NM_META_TEXT_PROMPT_CON_TYPE,
-	        .property_type = DEFINE_PROPERTY_TYPE (
-	            .get_fcn =                  _get_fcn_gobject,
-	            .set_fcn =                  _set_fcn_connection_type,
-	            .complete_fcn =             _complete_fcn_connection_type,
-	        ),
-	    ),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_INTERFACE_NAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ifname",
-	    .prompt =                       NM_META_TEXT_PROMPT_IFNAME,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_gobject_ifname,
-	        .complete_fcn =             _complete_fcn_gobject_devices,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "autoconnect",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "default",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "forever",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MULTI_CONNECT,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_connection_multi_connect_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTH_RETRIES,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TIMESTAMP,
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_READ_ONLY,
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_PERMISSIONS,
-	    .describe_message =
-	         N_("Enter a list of user permissions. This is a list of user names formatted as:\n"
-	            "  [user:]<user name 1>, [user:]<user name 2>,...\n"
-	            "The items can be separated by commas or spaces.\n\n"
-	            "Example: alice bob charlie\n"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_connection_permissions,
-	        .set_fcn =                  _set_fcn_multilist,
-	        .set_supports_remove =      TRUE,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingConnection, nm_setting_connection_get_num_permissions),
-	            .add_fcn =              _multilist_set_fcn_connection_permissions,
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingConnection, nm_setting_connection_remove_permission),
-	            .remove_by_value_fcn =  _multilist_remove_by_value_fcn_connection_permissions,
-	            .validate2_fcn =        _multilist_validate2_fcn_connection_permissions,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ZONE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MASTER,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "master",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-	    .prompt =                       NM_META_TEXT_PROMPT_MASTER,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_gobject_string,
-	        .complete_fcn =             _complete_fcn_connection_master,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SLAVE_TYPE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "slave-type",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_BOND_SETTING_NAME,
-	                                                  NM_SETTING_BRIDGE_SETTING_NAME,
-	                                                  NM_SETTING_OVS_BRIDGE_SETTING_NAME,
-	                                                  NM_SETTING_OVS_PORT_SETTING_NAME,
-	                                                  NM_SETTING_TEAM_SETTING_NAME,
-	                                                  NM_SETTING_VRF_SETTING_NAME),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
-	    .property_type =                &_pt_gobject_enum,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SECONDARIES,
-	    .describe_message =
-	        N_("Enter secondary connections that should be activated when this connection is\n"
-	           "activated. Connections can be specified either by UUID or ID (name). nmcli\n"
-	           "transparently translates names to UUIDs. Note that NetworkManager only supports\n"
-	           "VPNs as secondary connections at the moment.\n"
-	           "The items can be separated by commas or spaces.\n\n"
-	           "Example: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"),
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingConnection, nm_setting_connection_get_num_secondaries),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingConnection, nm_setting_connection_add_secondary),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingConnection, nm_setting_connection_remove_secondary),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingConnection, nm_setting_connection_remove_secondary_by_value),
-	            .validate2_fcn =        _multilist_validate2_fcn_uuid,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_METERED,
-	    .describe_message =
-	        N_("Enter a value which indicates whether the connection is subject to a data\n"
-	           "quota, usage costs or other limitations. Accepted options are:\n"
-	           "'true','yes','on' to set the connection as metered\n"
-	           "'false','no','off' to set the connection as not metered\n"
-	           "'unknown' to let NetworkManager choose a value using some heuristics\n"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_connection_metered,
-	        .set_fcn =                  _set_fcn_connection_metered,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("yes", "no", "unknown"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLDP,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_connection_lldp_get_type,
-	            .value_infos =          ENUM_VALUE_INFOS (
-	                {
-	                    .value = NM_SETTING_CONNECTION_LLDP_ENABLE_RX,
-	                    .nick = "enable",
-	                },
-	            ),
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MDNS,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_connection_mdns_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLMNR,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_connection_llmnr_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MUD_URL,
-	    .property_type =                &_pt_gobject_string,
-	    .hide_if_default =              TRUE,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_WAIT_DEVICE_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TYPE,
+            .is_cli_option =                TRUE,
+            .property_alias =               "type",
+            .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+            .prompt =                       NM_META_TEXT_PROMPT_CON_TYPE,
+            .property_type = DEFINE_PROPERTY_TYPE (
+                .get_fcn =                  _get_fcn_gobject,
+                .set_fcn =                  _set_fcn_connection_type,
+                .complete_fcn =             _complete_fcn_connection_type,
+            ),
+        ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_INTERFACE_NAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ifname",
+        .prompt =                       NM_META_TEXT_PROMPT_IFNAME,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_gobject_ifname,
+            .complete_fcn =             _complete_fcn_gobject_devices,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "autoconnect",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "default",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "forever",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MULTI_CONNECT,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_connection_multi_connect_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTH_RETRIES,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TIMESTAMP,
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_READ_ONLY,
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_PERMISSIONS,
+        .describe_message =
+             N_("Enter a list of user permissions. This is a list of user names formatted as:\n"
+                "  [user:]<user name 1>, [user:]<user name 2>,...\n"
+                "The items can be separated by commas or spaces.\n\n"
+                "Example: alice bob charlie\n"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_connection_permissions,
+            .set_fcn =                  _set_fcn_multilist,
+            .set_supports_remove =      TRUE,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingConnection, nm_setting_connection_get_num_permissions),
+                .add_fcn =              _multilist_set_fcn_connection_permissions,
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingConnection, nm_setting_connection_remove_permission),
+                .remove_by_value_fcn =  _multilist_remove_by_value_fcn_connection_permissions,
+                .validate2_fcn =        _multilist_validate2_fcn_connection_permissions,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ZONE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MASTER,
+        .is_cli_option =                TRUE,
+        .property_alias =               "master",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+        .prompt =                       NM_META_TEXT_PROMPT_MASTER,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_gobject_string,
+            .complete_fcn =             _complete_fcn_connection_master,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SLAVE_TYPE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "slave-type",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_DONT_ASK,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_BOND_SETTING_NAME,
+                                                      NM_SETTING_BRIDGE_SETTING_NAME,
+                                                      NM_SETTING_OVS_BRIDGE_SETTING_NAME,
+                                                      NM_SETTING_OVS_PORT_SETTING_NAME,
+                                                      NM_SETTING_TEAM_SETTING_NAME,
+                                                      NM_SETTING_VRF_SETTING_NAME),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
+        .property_type =                &_pt_gobject_enum,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SECONDARIES,
+        .describe_message =
+            N_("Enter secondary connections that should be activated when this connection is\n"
+               "activated. Connections can be specified either by UUID or ID (name). nmcli\n"
+               "transparently translates names to UUIDs. Note that NetworkManager only supports\n"
+               "VPNs as secondary connections at the moment.\n"
+               "The items can be separated by commas or spaces.\n\n"
+               "Example: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"),
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingConnection, nm_setting_connection_get_num_secondaries),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingConnection, nm_setting_connection_add_secondary),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingConnection, nm_setting_connection_remove_secondary),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingConnection, nm_setting_connection_remove_secondary_by_value),
+                .validate2_fcn =        _multilist_validate2_fcn_uuid,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_METERED,
+        .describe_message =
+            N_("Enter a value which indicates whether the connection is subject to a data\n"
+               "quota, usage costs or other limitations. Accepted options are:\n"
+               "'true','yes','on' to set the connection as metered\n"
+               "'false','no','off' to set the connection as not metered\n"
+               "'unknown' to let NetworkManager choose a value using some heuristics\n"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_connection_metered,
+            .set_fcn =                  _set_fcn_connection_metered,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("yes", "no", "unknown"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLDP,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_connection_lldp_get_type,
+                .value_infos =          ENUM_VALUE_INFOS (
+                    {
+                        .value = NM_SETTING_CONNECTION_LLDP_ENABLE_RX,
+                        .nick = "enable",
+                    },
+                ),
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MDNS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_connection_mdns_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLMNR,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_connection_llmnr_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MUD_URL,
+        .property_type =                &_pt_gobject_string,
+        .hide_if_default =              TRUE,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_WAIT_DEVICE_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_DCB
 static const NMMetaPropertyInfo *const property_infos_DCB[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_FLAGS,
-	    .property_type =                &_pt_dcb_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_PRIORITY,
-	    DEFINE_DCB_PROPRITY_PROPERTY_TYPE
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_MODE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_DCB_FCOE_MODE_FABRIC,
-	                                                   NM_SETTING_DCB_FCOE_MODE_VN2VN),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_FLAGS,
-	    .property_type =                &_pt_dcb_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_PRIORITY,
-	    DEFINE_DCB_PROPRITY_PROPERTY_TYPE
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_FLAGS,
-	    .property_type =                &_pt_dcb_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_PRIORITY,
-	    DEFINE_DCB_PROPRITY_PROPERTY_TYPE
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS,
-	    .property_type =                &_pt_dcb_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL,
-	    .property_type =                &_pt_dcb_bool,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb_bool,
-	        .get_fcn                    = nm_setting_dcb_get_priority_flow_control,
-	        .set_fcn                    = nm_setting_dcb_set_priority_flow_control,
-	        .with_flow_control_flags    = TRUE,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_FLAGS,
-	    .property_type =                &_pt_dcb_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_ID,
-	    .property_type =                &_pt_dcb,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
-	        .get_fcn =                  nm_setting_dcb_get_priority_group_id,
-	        .set_fcn =                  nm_setting_dcb_set_priority_group_id,
-	        .max =                      7,
-	        .other =                    15,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH,
-	    .property_type =                &_pt_dcb,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
-	        .get_fcn =                  nm_setting_dcb_get_priority_group_bandwidth,
-	        .set_fcn =                  nm_setting_dcb_set_priority_group_bandwidth,
-	        .max =                      100,
-	        .other =                    0,
-	        .is_percent =               TRUE,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_BANDWIDTH,
-	    .property_type =                &_pt_dcb,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
-	        .get_fcn =                  nm_setting_dcb_get_priority_bandwidth,
-	        .set_fcn =                  nm_setting_dcb_set_priority_bandwidth,
-	        .max =                      100,
-	        .other =                    0,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH,
-	    .property_type =                &_pt_dcb_bool,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb_bool,
-	        .get_fcn                    = nm_setting_dcb_get_priority_strict_bandwidth,
-	        .set_fcn                    = nm_setting_dcb_set_priority_strict_bandwidth,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS,
-	    .property_type =                &_pt_dcb,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
-	        .get_fcn =                  nm_setting_dcb_get_priority_traffic_class,
-	        .set_fcn =                  nm_setting_dcb_set_priority_traffic_class,
-	        .max =                      7,
-	        .other =                    0,
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_FLAGS,
+        .property_type =                &_pt_dcb_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_PRIORITY,
+        DEFINE_DCB_PROPRITY_PROPERTY_TYPE
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_MODE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_DCB_FCOE_MODE_FABRIC,
+                                                       NM_SETTING_DCB_FCOE_MODE_VN2VN),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_FLAGS,
+        .property_type =                &_pt_dcb_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_PRIORITY,
+        DEFINE_DCB_PROPRITY_PROPERTY_TYPE
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_FLAGS,
+        .property_type =                &_pt_dcb_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_PRIORITY,
+        DEFINE_DCB_PROPRITY_PROPERTY_TYPE
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS,
+        .property_type =                &_pt_dcb_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL,
+        .property_type =                &_pt_dcb_bool,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb_bool,
+            .get_fcn                    = nm_setting_dcb_get_priority_flow_control,
+            .set_fcn                    = nm_setting_dcb_set_priority_flow_control,
+            .with_flow_control_flags    = TRUE,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_FLAGS,
+        .property_type =                &_pt_dcb_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_ID,
+        .property_type =                &_pt_dcb,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
+            .get_fcn =                  nm_setting_dcb_get_priority_group_id,
+            .set_fcn =                  nm_setting_dcb_set_priority_group_id,
+            .max =                      7,
+            .other =                    15,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH,
+        .property_type =                &_pt_dcb,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
+            .get_fcn =                  nm_setting_dcb_get_priority_group_bandwidth,
+            .set_fcn =                  nm_setting_dcb_set_priority_group_bandwidth,
+            .max =                      100,
+            .other =                    0,
+            .is_percent =               TRUE,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_BANDWIDTH,
+        .property_type =                &_pt_dcb,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
+            .get_fcn =                  nm_setting_dcb_get_priority_bandwidth,
+            .set_fcn =                  nm_setting_dcb_set_priority_bandwidth,
+            .max =                      100,
+            .other =                    0,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH,
+        .property_type =                &_pt_dcb_bool,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb_bool,
+            .get_fcn                    = nm_setting_dcb_get_priority_strict_bandwidth,
+            .set_fcn                    = nm_setting_dcb_set_priority_strict_bandwidth,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS,
+        .property_type =                &_pt_dcb,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (dcb,
+            .get_fcn =                  nm_setting_dcb_get_priority_traffic_class,
+            .set_fcn =                  nm_setting_dcb_set_priority_traffic_class,
+            .max =                      7,
+            .other =                    0,
+        ),
+    ),
+    NULL
 };
 
 #define PROPERTY_INFO_ETHTOOL(xname) \
-	PROPERTY_INFO (NM_ETHTOOL_OPTNAME_##xname, NULL, \
-	    .property_type = &_pt_ethtool, \
-	    .hide_if_default = TRUE, \
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (ethtool, \
-	        .ethtool_id = NM_ETHTOOL_ID_##xname, \
-	    ), \
-	)
+    PROPERTY_INFO (NM_ETHTOOL_OPTNAME_##xname, NULL, \
+        .property_type = &_pt_ethtool, \
+        .hide_if_default = TRUE, \
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (ethtool, \
+            .ethtool_id = NM_ETHTOOL_ID_##xname, \
+        ), \
+    )
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_ETHTOOL
 static const NMMetaPropertyInfo *const property_infos_ETHTOOL[] = {
-	PROPERTY_INFO_ETHTOOL (FEATURE_ESP_HW_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_ESP_TX_CSUM_HW_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_FCOE_MTU),
-	PROPERTY_INFO_ETHTOOL (FEATURE_GRO),
-	PROPERTY_INFO_ETHTOOL (FEATURE_GSO),
-	PROPERTY_INFO_ETHTOOL (FEATURE_HIGHDMA),
-	PROPERTY_INFO_ETHTOOL (FEATURE_HW_TC_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_L2_FWD_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_LOOPBACK),
-	PROPERTY_INFO_ETHTOOL (FEATURE_LRO),
-	PROPERTY_INFO_ETHTOOL (FEATURE_NTUPLE),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RXHASH),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RXVLAN),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_ALL),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_FCS),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_GRO_HW),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_FILTER),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_STAG_FILTER),
-	PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_STAG_HW_PARSE),
-	PROPERTY_INFO_ETHTOOL (FEATURE_SG),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TLS_HW_RECORD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TLS_HW_TX_OFFLOAD),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TSO),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TXVLAN),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_FCOE_CRC),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IPV4),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IPV6),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IP_GENERIC),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_SCTP),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_ESP_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_FCOE_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_GRE_CSUM_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_GRE_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_GSO_PARTIAL),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_GSO_ROBUST),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_IPXIP4_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_IPXIP6_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_NOCACHE_COPY),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCATTER_GATHER),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCATTER_GATHER_FRAGLIST),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCTP_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP6_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_ECN_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_MANGLEID_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_TNL_SEGMENTATION),
-	PROPERTY_INFO_ETHTOOL (FEATURE_TX_VLAN_STAG_HW_INSERT),
-	PROPERTY_INFO_ETHTOOL (COALESCE_ADAPTIVE_RX),
-	PROPERTY_INFO_ETHTOOL (COALESCE_ADAPTIVE_TX),
-	PROPERTY_INFO_ETHTOOL (COALESCE_PKT_RATE_HIGH),
-	PROPERTY_INFO_ETHTOOL (COALESCE_PKT_RATE_LOW),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_IRQ),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_HIGH),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_LOW),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_IRQ),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_HIGH),
-	PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_LOW),
-	PROPERTY_INFO_ETHTOOL (COALESCE_SAMPLE_INTERVAL),
-	PROPERTY_INFO_ETHTOOL (COALESCE_STATS_BLOCK_USECS),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_IRQ),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_HIGH),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_LOW),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_IRQ),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_HIGH),
-	PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_LOW),
-	PROPERTY_INFO_ETHTOOL (RING_RX),
-	PROPERTY_INFO_ETHTOOL (RING_RX_JUMBO),
-	PROPERTY_INFO_ETHTOOL (RING_RX_MINI),
-	PROPERTY_INFO_ETHTOOL (RING_TX),
-	NULL,
+    PROPERTY_INFO_ETHTOOL (FEATURE_ESP_HW_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_ESP_TX_CSUM_HW_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_FCOE_MTU),
+    PROPERTY_INFO_ETHTOOL (FEATURE_GRO),
+    PROPERTY_INFO_ETHTOOL (FEATURE_GSO),
+    PROPERTY_INFO_ETHTOOL (FEATURE_HIGHDMA),
+    PROPERTY_INFO_ETHTOOL (FEATURE_HW_TC_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_L2_FWD_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_LOOPBACK),
+    PROPERTY_INFO_ETHTOOL (FEATURE_LRO),
+    PROPERTY_INFO_ETHTOOL (FEATURE_NTUPLE),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RXHASH),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RXVLAN),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_ALL),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_FCS),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_GRO_HW),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_FILTER),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_STAG_FILTER),
+    PROPERTY_INFO_ETHTOOL (FEATURE_RX_VLAN_STAG_HW_PARSE),
+    PROPERTY_INFO_ETHTOOL (FEATURE_SG),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TLS_HW_RECORD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TLS_HW_TX_OFFLOAD),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TSO),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TXVLAN),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_FCOE_CRC),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IPV4),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IPV6),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_IP_GENERIC),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_CHECKSUM_SCTP),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_ESP_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_FCOE_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_GRE_CSUM_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_GRE_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_GSO_PARTIAL),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_GSO_ROBUST),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_IPXIP4_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_IPXIP6_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_NOCACHE_COPY),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCATTER_GATHER),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCATTER_GATHER_FRAGLIST),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_SCTP_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP6_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_ECN_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_MANGLEID_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_TCP_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_UDP_TNL_SEGMENTATION),
+    PROPERTY_INFO_ETHTOOL (FEATURE_TX_VLAN_STAG_HW_INSERT),
+    PROPERTY_INFO_ETHTOOL (COALESCE_ADAPTIVE_RX),
+    PROPERTY_INFO_ETHTOOL (COALESCE_ADAPTIVE_TX),
+    PROPERTY_INFO_ETHTOOL (COALESCE_PKT_RATE_HIGH),
+    PROPERTY_INFO_ETHTOOL (COALESCE_PKT_RATE_LOW),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_IRQ),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_HIGH),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_FRAMES_LOW),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_IRQ),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_HIGH),
+    PROPERTY_INFO_ETHTOOL (COALESCE_RX_USECS_LOW),
+    PROPERTY_INFO_ETHTOOL (COALESCE_SAMPLE_INTERVAL),
+    PROPERTY_INFO_ETHTOOL (COALESCE_STATS_BLOCK_USECS),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_IRQ),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_HIGH),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_FRAMES_LOW),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_IRQ),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_HIGH),
+    PROPERTY_INFO_ETHTOOL (COALESCE_TX_USECS_LOW),
+    PROPERTY_INFO_ETHTOOL (RING_RX),
+    PROPERTY_INFO_ETHTOOL (RING_RX_JUMBO),
+    PROPERTY_INFO_ETHTOOL (RING_RX_MINI),
+    PROPERTY_INFO_ETHTOOL (RING_TX),
+    NULL,
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_GSM
 static const NMMetaPropertyInfo *const property_infos_GSM[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_AUTO_CONFIG,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NUMBER,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_USERNAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "user",
-	    .prompt =                       N_("Username [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "password",
-	    .prompt =                       N_("Password [none]"),
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_APN,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "apn",
-	    .prompt =                       N_("APN"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NETWORK_ID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_HOME_ONLY,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_DEVICE_ID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_ID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_OPERATOR_ID,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_gsm_sim_operator_id,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_MTU,
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingGsm, nm_setting_gsm_get_mtu),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_AUTO_CONFIG,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NUMBER,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_USERNAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "user",
+        .prompt =                       N_("Username [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD,
+        .is_cli_option =                TRUE,
+        .property_alias =               "password",
+        .prompt =                       N_("Password [none]"),
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_APN,
+        .is_cli_option =                TRUE,
+        .property_alias =               "apn",
+        .prompt =                       N_("APN"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NETWORK_ID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_HOME_ONLY,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_DEVICE_ID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_ID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_OPERATOR_ID,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_gsm_sim_operator_id,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_MTU,
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingGsm, nm_setting_gsm_get_mtu),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_INFINIBAND
 static const NMMetaPropertyInfo *const property_infos_INFINIBAND[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
-	        .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MTU,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mtu",
-	    .prompt =                       N_("MTU [auto]"),
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingInfiniband, nm_setting_infiniband_get_mtu),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_TRANSPORT_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "transport-mode",
-	    .prompt =                       NM_META_TEXT_PROMPT_IB_MODE,
-	    .def_hint =                     NM_META_TEXT_PROMPT_IB_MODE_CHOICES,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("datagram", "connected"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_P_KEY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "p-key",
-	    .prompt =                       N_("P_KEY [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_infiniband_p_key,
-	        .set_fcn =                  _set_fcn_infiniband_p_key,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "parent",
-	    .prompt =                       N_("Parent interface [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_gobject_ifname,
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+        .property_type =                &_pt_gobject_mac,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
+            .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MTU,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mtu",
+        .prompt =                       N_("MTU [auto]"),
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingInfiniband, nm_setting_infiniband_get_mtu),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_TRANSPORT_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "transport-mode",
+        .prompt =                       NM_META_TEXT_PROMPT_IB_MODE,
+        .def_hint =                     NM_META_TEXT_PROMPT_IB_MODE_CHOICES,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("datagram", "connected"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_P_KEY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "p-key",
+        .prompt =                       N_("P_KEY [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_infiniband_p_key,
+            .set_fcn =                  _set_fcn_infiniband_p_key,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "parent",
+        .prompt =                       N_("Parent interface [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_gobject_ifname,
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP4_CONFIG
 static const NMMetaPropertyInfo *const property_infos_IP4_CONFIG[] = {
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_METHOD,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_ip_config_method,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_IP4_CONFIG_METHOD_AUTO,
-	                                                  NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL,
-	                                                  NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
-	                                                  NM_SETTING_IP4_CONFIG_METHOD_SHARED,
-	                                                  NM_SETTING_IP4_CONFIG_METHOD_DISABLED),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS,
-	    .describe_message =
-	        N_("Enter a list of IPv4 addresses of DNS servers.\n\n"
-	           "Example: 8.8.8.8, 8.8.4.4\n"),
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns),
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_by_value),
-	            .validate2_fcn =        _multilist_validate2_fcn_ip_config_dns,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_SEARCH,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_searches),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns_search),
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search_by_value),
-	            .validate_fcn =         _multilist_validate_fcn_is_domain,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_OPTIONS,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_options),
-	            .add_fcn =              _multilist_add_fcn_ip_config_dns_options,
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option_by_value),
-	            .clear_emptyunset_fcn = MULTILIST_CLEAR_EMPTYUNSET_FCN (NMSettingIPConfig, nm_setting_ip_config_clear_dns_options),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .is_default_fcn =           _is_default_func_ip_config_dns_options,
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_PRIORITY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ip4",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_MULTI,
-	    .prompt =                       N_("IPv4 address (IP[/plen]) [none]"),
-	    .describe_message =
-	        N_("Enter a list of IPv4 addresses formatted as:\n"
-	           "  ip[/prefix], ip[/prefix],...\n"
-	           "Missing prefix is regarded as prefix of 32.\n\n"
-	           "Example: 192.168.1.5/24, 10.0.0.11/24\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_addresses),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_addresses),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_addresses,
-	            .set_fcn =              _objlist_set_fcn_ip_config_addresses,
-	            .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_address),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_GATEWAY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "gw4",
-	    .prompt =                       N_("IPv4 gateway [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_ip_config_gateway,
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTES,
-	    .describe_message =
-	        N_("Enter a list of IPv4 routes formatted as:\n"
-	           "  ip[/prefix] [next-hop] [metric],...\n\n"
-	           "Missing prefix is regarded as a prefix of 32.\n"
-	           "Missing next-hop is regarded as 0.0.0.0.\n"
-	           "Missing metric means default (NM/kernel will set a default value).\n\n"
-	           "Examples: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n"
-	           "          10.1.2.0/24\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routes),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routes),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routes,
-	            .set_fcn =              _objlist_set_fcn_ip_config_routes,
-	            .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_route),
-	            .delimit_pretty_with_semicolon = TRUE,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_METRIC,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_TABLE, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_TABLE,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = 0,
-	                .nick = "unspec",
-	            },
-	            {
-	                .value.i64 = 254,
-	                .nick = "main",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTING_RULES, NULL,
-	    .describe_message =
-	        N_("Enter a list of IPv4 routing rules formatted as:\n"
-	           "  priority [prio] [from [src]] [to [dst]], ,...\n"
-	           "\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routing_rules),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routing_rules),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routing_rules,
-	            .set_fcn =              _objlist_set_fcn_ip_config_routing_rules,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingIPConfig, nm_setting_ip_config_remove_routing_rule),
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_IAID, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_IAID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data =            &_ptd_gobject_int_timeout,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_FQDN,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME_FLAGS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME_FLAGS,
-		.property_type =                &_pt_gobject_enum,
-		.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-			PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-				.get_gtype =            nm_dhcp_hostname_flags_get_type,
-			),
-		)
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_NEVER_DEFAULT,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_MAY_FAIL,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DAD_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DAD_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "default",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "off",
-	            },
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_METHOD,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_ip_config_method,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_IP4_CONFIG_METHOD_AUTO,
+                                                      NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL,
+                                                      NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
+                                                      NM_SETTING_IP4_CONFIG_METHOD_SHARED,
+                                                      NM_SETTING_IP4_CONFIG_METHOD_DISABLED),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS,
+        .describe_message =
+            N_("Enter a list of IPv4 addresses of DNS servers.\n\n"
+               "Example: 8.8.8.8, 8.8.4.4\n"),
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns),
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_by_value),
+                .validate2_fcn =        _multilist_validate2_fcn_ip_config_dns,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_SEARCH,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_searches),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns_search),
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search_by_value),
+                .validate_fcn =         _multilist_validate_fcn_is_domain,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_OPTIONS,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_options),
+                .add_fcn =              _multilist_add_fcn_ip_config_dns_options,
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option_by_value),
+                .clear_emptyunset_fcn = MULTILIST_CLEAR_EMPTYUNSET_FCN (NMSettingIPConfig, nm_setting_ip_config_clear_dns_options),
+                .strsplit_plain =       TRUE,
+            ),
+            .is_default_fcn =           _is_default_func_ip_config_dns_options,
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_PRIORITY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ip4",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_MULTI,
+        .prompt =                       N_("IPv4 address (IP[/plen]) [none]"),
+        .describe_message =
+            N_("Enter a list of IPv4 addresses formatted as:\n"
+               "  ip[/prefix], ip[/prefix],...\n"
+               "Missing prefix is regarded as prefix of 32.\n\n"
+               "Example: 192.168.1.5/24, 10.0.0.11/24\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_addresses),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_addresses),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_addresses,
+                .set_fcn =              _objlist_set_fcn_ip_config_addresses,
+                .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_address),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_GATEWAY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "gw4",
+        .prompt =                       N_("IPv4 gateway [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_ip_config_gateway,
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTES,
+        .describe_message =
+            N_("Enter a list of IPv4 routes formatted as:\n"
+               "  ip[/prefix] [next-hop] [metric],...\n\n"
+               "Missing prefix is regarded as a prefix of 32.\n"
+               "Missing next-hop is regarded as 0.0.0.0.\n"
+               "Missing metric means default (NM/kernel will set a default value).\n\n"
+               "Examples: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n"
+               "          10.1.2.0/24\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routes),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routes),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routes,
+                .set_fcn =              _objlist_set_fcn_ip_config_routes,
+                .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_route),
+                .delimit_pretty_with_semicolon = TRUE,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_METRIC,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_TABLE, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_TABLE,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = 0,
+                    .nick = "unspec",
+                },
+                {
+                    .value.i64 = 254,
+                    .nick = "main",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTING_RULES, NULL,
+        .describe_message =
+            N_("Enter a list of IPv4 routing rules formatted as:\n"
+               "  priority [prio] [from [src]] [to [dst]], ,...\n"
+               "\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routing_rules),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routing_rules),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routing_rules,
+                .set_fcn =              _objlist_set_fcn_ip_config_routing_rules,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingIPConfig, nm_setting_ip_config_remove_routing_rule),
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_IAID, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_IAID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data =            &_ptd_gobject_int_timeout,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_FQDN,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME_FLAGS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME_FLAGS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_dhcp_hostname_flags_get_type,
+            ),
+        )
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_NEVER_DEFAULT,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_MAY_FAIL,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DAD_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DAD_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "default",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "off",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_VENDOR_CLASS_IDENTIFIER,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_REJECT_SERVERS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_REJECT_SERVERS,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, _multilist_get_num_fcn_ip_config_dhcp_reject_servers),
+                .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingIPConfig, nm_setting_ip_config_add_dhcp_reject_server),
+                .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingIPConfig, nm_setting_ip_config_remove_dhcp_reject_server),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, _multilist_remove_by_value_fcn_ip_config_dhcp_reject_servers),
+                .validate_fcn =         _multilist_validate_fcn_is_ipv4_addr_or_subnet,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP6_CONFIG
 static const NMMetaPropertyInfo *const property_infos_IP6_CONFIG[] = {
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_METHOD,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_ip_config_method,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_IP6_CONFIG_METHOD_IGNORE,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_AUTO,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_DHCP,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_SHARED,
-	                                                  NM_SETTING_IP6_CONFIG_METHOD_DISABLED),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS,
-	    .describe_message =
-	        N_("Enter a list of IPv6 addresses of DNS servers.  If the IPv6 "
-	           "configuration method is 'auto' these DNS servers are appended "
-	           "to those (if any) returned by automatic configuration.  DNS "
-	           "servers cannot be used with the 'shared' or 'link-local' IPv6 "
-	           "configuration methods, as there is no upstream network. In "
-	           "all other IPv6 configuration methods, these DNS "
-	           "servers are used as the only DNS servers for this connection.\n\n"
-	           "Example: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"),
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns),
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_by_value),
-	            .validate2_fcn =        _multilist_validate2_fcn_ip_config_dns,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_SEARCH,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_searches),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns_search),
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search_by_value),
-	            .validate_fcn =         _multilist_validate_fcn_is_domain,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_OPTIONS,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_options),
-	            .add_fcn =              _multilist_add_fcn_ip_config_dns_options,
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option_by_value),
-	            .clear_emptyunset_fcn = MULTILIST_CLEAR_EMPTYUNSET_FCN (NMSettingIPConfig, nm_setting_ip_config_clear_dns_options),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .is_default_fcn =           _is_default_func_ip_config_dns_options,
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_PRIORITY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ip6",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_MULTI,
-	    .prompt =                       N_("IPv6 address (IP[/plen]) [none]"),
-	    .describe_message =
-	        N_("Enter a list of IPv6 addresses formatted as:\n"
-	           "  ip[/prefix], ip[/prefix],...\n"
-	           "Missing prefix is regarded as prefix of 128.\n\n"
-	           "Example: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_addresses),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_addresses),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_addresses,
-	            .set_fcn =              _objlist_set_fcn_ip_config_addresses,
-	            .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_address),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_GATEWAY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "gw6",
-	    .prompt =                       N_("IPv6 gateway [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_ip_config_gateway,
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTES,
-	    .describe_message =
-	        N_("Enter a list of IPv6 routes formatted as:\n"
-	           "  ip[/prefix] [next-hop] [metric],...\n\n"
-	           "Missing prefix is regarded as a prefix of 128.\n"
-	           "Missing next-hop is regarded as \"::\".\n"
-	           "Missing metric means default (NM/kernel will set a default value).\n\n"
-	           "Examples: 2001:db8:beef:2::/64 2001:db8:beef::2, 2001:db8:beef:3::/64 2001:db8:beef::3 2\n"
-	           "          abbe::/64 55\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routes),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routes),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routes,
-	            .set_fcn =              _objlist_set_fcn_ip_config_routes,
-	            .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_route),
-	            .delimit_pretty_with_semicolon = TRUE,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_METRIC,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_TABLE, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_TABLE,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = 0,
-	                .nick = "unspec",
-	            },
-	            {
-	                .value.i64 = 254,
-	                .nick = "main",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTING_RULES, NULL,
-	    .describe_message =
-	        N_("Enter a list of IPv6 routing rules formatted as:\n"
-	           "  priority [prio] [from [src]] [to [dst]], ,...\n"
-	           "\n"),
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routing_rules),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routing_rules),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routing_rules,
-	            .set_fcn =              _objlist_set_fcn_ip_config_routing_rules,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingIPConfig, nm_setting_ip_config_remove_routing_rule),
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_NEVER_DEFAULT,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MAY_FAIL,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_IP6_PRIVACY,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	        .value_infos_get =          ENUM_VALUE_INFOS (
-	            {
-	                .value = NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR,
-	                .nick = "enabled, prefer public IP",
-	            },
-	            {
-	                .value = NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR,
-	                .nick = "enabled, prefer temporary IP",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_ip6_config_addr_gen_mode_get_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_IP6_CONFIG_RA_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_RA_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data =            &_ptd_gobject_int_timeout,
-	),
-	PROPERTY_INFO (NM_SETTING_IP6_CONFIG_DHCP_DUID, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_DUID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_IAID, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_IAID,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data =            &_ptd_gobject_int_timeout,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME_FLAGS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME_FLAGS,
-		.property_type =                &_pt_gobject_enum,
-		.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-			PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-				.get_gtype =            nm_dhcp_hostname_flags_get_type,
-			),
-		)
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TOKEN,
-	    .property_type =                &_pt_gobject_string,
-	),
-	NULL
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_METHOD,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_ip_config_method,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_IP6_CONFIG_METHOD_IGNORE,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_AUTO,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_DHCP,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_SHARED,
+                                                      NM_SETTING_IP6_CONFIG_METHOD_DISABLED),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS,
+        .describe_message =
+            N_("Enter a list of IPv6 addresses of DNS servers.  If the IPv6 "
+               "configuration method is 'auto' these DNS servers are appended "
+               "to those (if any) returned by automatic configuration.  DNS "
+               "servers cannot be used with the 'shared' or 'link-local' IPv6 "
+               "configuration methods, as there is no upstream network. In "
+               "all other IPv6 configuration methods, these DNS "
+               "servers are used as the only DNS servers for this connection.\n\n"
+               "Example: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"),
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns),
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_by_value),
+                .validate2_fcn =        _multilist_validate2_fcn_ip_config_dns,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_SEARCH,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_searches),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingIPConfig, nm_setting_ip_config_add_dns_search),
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_search_by_value),
+                .validate_fcn =         _multilist_validate_fcn_is_domain,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_OPTIONS,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingIPConfig, nm_setting_ip_config_get_num_dns_options),
+                .add_fcn =              _multilist_add_fcn_ip_config_dns_options,
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingIPConfig, nm_setting_ip_config_remove_dns_option_by_value),
+                .clear_emptyunset_fcn = MULTILIST_CLEAR_EMPTYUNSET_FCN (NMSettingIPConfig, nm_setting_ip_config_clear_dns_options),
+                .strsplit_plain =       TRUE,
+            ),
+            .is_default_fcn =           _is_default_func_ip_config_dns_options,
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_PRIORITY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ip6",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_MULTI,
+        .prompt =                       N_("IPv6 address (IP[/plen]) [none]"),
+        .describe_message =
+            N_("Enter a list of IPv6 addresses formatted as:\n"
+               "  ip[/prefix], ip[/prefix],...\n"
+               "Missing prefix is regarded as prefix of 128.\n\n"
+               "Example: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_addresses),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_addresses),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_addresses,
+                .set_fcn =              _objlist_set_fcn_ip_config_addresses,
+                .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_address),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_GATEWAY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "gw6",
+        .prompt =                       N_("IPv6 gateway [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_ip_config_gateway,
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTES,
+        .describe_message =
+            N_("Enter a list of IPv6 routes formatted as:\n"
+               "  ip[/prefix] [next-hop] [metric],...\n\n"
+               "Missing prefix is regarded as a prefix of 128.\n"
+               "Missing next-hop is regarded as \"::\".\n"
+               "Missing metric means default (NM/kernel will set a default value).\n\n"
+               "Examples: 2001:db8:beef:2::/64 2001:db8:beef::2, 2001:db8:beef:3::/64 2001:db8:beef::3 2\n"
+               "          abbe::/64 55\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routes),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routes),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routes,
+                .set_fcn =              _objlist_set_fcn_ip_config_routes,
+                .remove_by_idx_fcn_s =  OBJLIST_REMOVE_BY_IDX_FCN_S (NMSettingIPConfig, nm_setting_ip_config_remove_route),
+                .delimit_pretty_with_semicolon = TRUE,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_METRIC,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_TABLE, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_TABLE,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = 0,
+                    .nick = "unspec",
+                },
+                {
+                    .value.i64 = 254,
+                    .nick = "main",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTING_RULES, NULL,
+        .describe_message =
+            N_("Enter a list of IPv6 routing rules formatted as:\n"
+               "  priority [prio] [from [src]] [to [dst]], ,...\n"
+               "\n"),
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingIPConfig, nm_setting_ip_config_get_num_routing_rules),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingIPConfig, nm_setting_ip_config_clear_routing_rules),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_ip_config_routing_rules,
+                .set_fcn =              _objlist_set_fcn_ip_config_routing_rules,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingIPConfig, nm_setting_ip_config_remove_routing_rule),
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_NEVER_DEFAULT,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MAY_FAIL,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_IP6_PRIVACY,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+            .value_infos_get =          ENUM_VALUE_INFOS (
+                {
+                    .value = NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR,
+                    .nick = "enabled, prefer public IP",
+                },
+                {
+                    .value = NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR,
+                    .nick = "enabled, prefer temporary IP",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_ip6_config_addr_gen_mode_get_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_IP6_CONFIG_RA_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_RA_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data =            &_ptd_gobject_int_timeout,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP6_CONFIG_DHCP_DUID, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_DUID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_IAID, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_IAID,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data =            &_ptd_gobject_int_timeout,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME_FLAGS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME_FLAGS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_dhcp_hostname_flags_get_type,
+            ),
+        )
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TOKEN,
+        .property_type =                &_pt_gobject_string,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP_TUNNEL
 static const NMMetaPropertyInfo *const property_infos_IP_TUNNEL[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mode",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       NM_META_TEXT_PROMPT_IP_TUNNEL_MODE,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_ip_tunnel_mode_get_type,
-	            .min =                  NM_IP_TUNNEL_MODE_UNKNOWN + 1,
-	            .max =                  G_MAXINT,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .prompt =                       N_("Parent device [none]"),
-	    .property_type =                &_pt_gobject_devices,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_LOCAL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "local",
-	    .prompt =                       N_("Local endpoint [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_REMOTE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "remote",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("Remote"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TTL,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TOS,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_INPUT_KEY,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_OUTPUT_KEY,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLOW_LABEL,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MTU,
-	    .property_type =                &_pt_gobject_mtu,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLAGS,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_ip_tunnel_flags_get_type,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mode",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       NM_META_TEXT_PROMPT_IP_TUNNEL_MODE,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_ip_tunnel_mode_get_type,
+                .min =                  NM_IP_TUNNEL_MODE_UNKNOWN + 1,
+                .max =                  G_MAXINT,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .prompt =                       N_("Parent device [none]"),
+        .property_type =                &_pt_gobject_devices,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_LOCAL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "local",
+        .prompt =                       N_("Local endpoint [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_REMOTE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "remote",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("Remote"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TTL,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TOS,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_INPUT_KEY,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_OUTPUT_KEY,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLOW_LABEL,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MTU,
+        .property_type =                &_pt_gobject_mtu,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLAGS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_ip_tunnel_flags_get_type,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_MACSEC
 static const NMMetaPropertyInfo *const property_infos_MACSEC[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("MACsec parent device or connection UUID"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mode",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       NM_META_TEXT_PROMPT_MACSEC_MODE,
-	    .def_hint =                     NM_META_TEXT_PROMPT_MACSEC_MODE_CHOICES,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_macsec_mode_get_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_ENCRYPT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "encrypt",
-	    .prompt =                       N_("Enable encryption [yes]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "cak",
-	    .prompt =                       N_("MKA CAK"),
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CKN,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ckn",
-	    .prompt =                       N_("MKA_CKN"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PORT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "port",
-	    .prompt =                       N_("SCI port [1]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_VALIDATION,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_macsec_validation_get_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_SEND_SCI,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("MACsec parent device or connection UUID"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mode",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       NM_META_TEXT_PROMPT_MACSEC_MODE,
+        .def_hint =                     NM_META_TEXT_PROMPT_MACSEC_MODE_CHOICES,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_macsec_mode_get_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_ENCRYPT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "encrypt",
+        .prompt =                       N_("Enable encryption [yes]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK,
+        .is_cli_option =                TRUE,
+        .property_alias =               "cak",
+        .prompt =                       N_("MKA CAK"),
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CKN,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ckn",
+        .prompt =                       N_("MKA_CKN"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PORT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "port",
+        .prompt =                       N_("SCI port [1]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_VALIDATION,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_macsec_validation_get_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_SEND_SCI,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_MACVLAN
 static const NMMetaPropertyInfo *const property_infos_MACVLAN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("MACVLAN parent device or connection UUID"),
-	    .property_type =                &_pt_gobject_devices,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mode",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       NM_META_TEXT_PROMPT_MACVLAN_MODE,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	        .get_gtype =                nm_setting_macvlan_mode_get_type,
-	        .min =                      NM_SETTING_MACVLAN_MODE_UNKNOWN + 1,
-	        .max =                      G_MAXINT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PROMISCUOUS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_TAP,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "tap",
-	    .prompt =                       N_("Tap [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("MACVLAN parent device or connection UUID"),
+        .property_type =                &_pt_gobject_devices,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mode",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       NM_META_TEXT_PROMPT_MACVLAN_MODE,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+            .get_gtype =                nm_setting_macvlan_mode_get_type,
+            .min =                      NM_SETTING_MACVLAN_MODE_UNKNOWN + 1,
+            .max =                      G_MAXINT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PROMISCUOUS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_TAP,
+        .is_cli_option =                TRUE,
+        .property_alias =               "tap",
+        .prompt =                       N_("Tap [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_MATCH
 static const NMMetaPropertyInfo *const property_infos_MATCH[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_INTERFACE_NAME,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_interface_names),
-	            .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_interface_name),
-	            .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingMatch, nm_setting_match_remove_interface_name),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_interface_name_by_value),
-	            .strsplit_with_spaces = TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_kernel_command_lines),
-	            .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_kernel_command_line),
-	            .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_kernel_command_line),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_kernel_command_line_by_value),
-	            .strsplit_with_spaces = TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_DRIVER,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_drivers),
-	            .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_driver),
-	            .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_driver),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_driver_by_value),
-	            .strsplit_with_spaces = TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_PATH,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_paths),
-	            .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_path),
-	            .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_path),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_path_by_value),
-	            .strsplit_with_spaces = TRUE,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_INTERFACE_NAME,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_interface_names),
+                .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_interface_name),
+                .remove_by_idx_fcn_s =  MULTILIST_REMOVE_BY_IDX_FCN_S (NMSettingMatch, nm_setting_match_remove_interface_name),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_interface_name_by_value),
+                .strsplit_with_spaces = TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_kernel_command_lines),
+                .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_kernel_command_line),
+                .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_kernel_command_line),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_kernel_command_line_by_value),
+                .strsplit_with_spaces = TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_DRIVER,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_drivers),
+                .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_driver),
+                .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_driver),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_driver_by_value),
+                .strsplit_with_spaces = TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_MATCH_PATH,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u   =      MULTILIST_GET_NUM_FCN_U       (NMSettingMatch, nm_setting_match_get_num_paths),
+                .add2_fcn =             MULTILIST_ADD2_FCN            (NMSettingMatch, nm_setting_match_add_path),
+                .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingMatch, nm_setting_match_remove_path),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingMatch, nm_setting_match_remove_path_by_value),
+                .strsplit_with_spaces = TRUE,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OLPC_MESH
 static const NMMetaPropertyInfo *const property_infos_OLPC_MESH[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_SSID,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ssid",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("SSID"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_olpc_mesh_ssid,
-	        .set_fcn =                  _set_fcn_gobject_ssid,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_CHANNEL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "channel",
-	    .prompt =                       N_("OLPC Mesh channel [1]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_olpc_mesh_channel,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dhcp-anycast",
-	    .prompt =                       N_("DHCP anycast MAC address [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_SSID,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ssid",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("SSID"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_olpc_mesh_ssid,
+            .set_fcn =                  _set_fcn_gobject_ssid,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_CHANNEL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "channel",
+        .prompt =                       N_("OLPC Mesh channel [1]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_olpc_mesh_channel,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dhcp-anycast",
+        .prompt =                       N_("DHCP anycast MAC address [none]"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OVS_BRIDGE
 static const NMMetaPropertyInfo *const property_infos_OVS_BRIDGE[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_FAIL_MODE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("secure", "standalone"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_RSTP_ENABLE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_STP_ENABLE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_DATAPATH_TYPE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("system", "netdev"),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_FAIL_MODE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("secure", "standalone"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_RSTP_ENABLE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_STP_ENABLE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_BRIDGE_DATAPATH_TYPE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("system", "netdev"),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OVS_DPDK
 static const NMMetaPropertyInfo *const property_infos_OVS_DPDK[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_DPDK_DEVARGS,
-	    .property_type =                &_pt_gobject_string,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_DPDK_DEVARGS,
+        .property_type =                &_pt_gobject_string,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OVS_INTERFACE
 static const NMMetaPropertyInfo *const property_infos_OVS_INTERFACE[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_INTERFACE_TYPE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("internal", "system", "patch", "dpdk"),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_INTERFACE_TYPE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("internal", "system", "patch", "dpdk"),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OVS_PATCH
 static const NMMetaPropertyInfo *const property_infos_OVS_PATCH[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PATCH_PEER,
-	    .property_type =                &_pt_gobject_string,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PATCH_PEER,
+        .property_type =                &_pt_gobject_string,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OVS_PORT
 static const NMMetaPropertyInfo *const property_infos_OVS_PORT[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_VLAN_MODE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("access", "native-tagged", "native-untagged", "trunk"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_TAG,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_LACP,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("active", "off", "passive"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_MODE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("active-backup", "balance-slb", "balance-tcp"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_UPDELAY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_DOWNDELAY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_VLAN_MODE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("access", "native-tagged", "native-untagged", "trunk"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_TAG,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_LACP,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("active", "off", "passive"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_MODE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("active-backup", "balance-slb", "balance-tcp"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_UPDELAY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_OVS_PORT_BOND_DOWNDELAY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PPP
 static const NMMetaPropertyInfo *const property_infos_PPP[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOAUTH,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_EAP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_PAP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_CHAP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAPV2,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOBSDCOMP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NODEFLATE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NO_VJ_COMP,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE_128,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MPPE_STATEFUL,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_CRTSCTS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_BAUD,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MRU,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MTU,
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingPpp, nm_setting_ppp_get_mtu),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_FAILURE,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOAUTH,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_EAP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_PAP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_CHAP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAPV2,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOBSDCOMP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NODEFLATE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NO_VJ_COMP,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE_128,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MPPE_STATEFUL,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_CRTSCTS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_BAUD,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MRU,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MTU,
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingPpp, nm_setting_ppp_get_mtu),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_FAILURE,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PPPOE
 static const NMMetaPropertyInfo *const property_infos_PPPOE[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "parent",
-	    .prompt =                       N_("PPPoE parent device"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_SERVICE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "service",
-	    .prompt =                       N_("Service [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_USERNAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "username",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("PPPoE username"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "password",
-	    .prompt =                       N_("Password [none]"),
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "parent",
+        .prompt =                       N_("PPPoE parent device"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_SERVICE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "service",
+        .prompt =                       N_("Service [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_USERNAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "username",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("PPPoE username"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD,
+        .is_cli_option =                TRUE,
+        .property_alias =               "password",
+        .prompt =                       N_("Password [none]"),
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PROXY
 static const NMMetaPropertyInfo *const property_infos_PROXY[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_METHOD,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "method",
-	    .prompt =                       NM_META_TEXT_PROMPT_PROXY_METHOD,
-	    .def_hint =                     NM_META_TEXT_PROMPT_PROXY_METHOD_CHOICES,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_proxy_method_get_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_BROWSER_ONLY,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "browser-only",
-	    .prompt =                       N_("Browser only [no]"),
-	    .property_type =                &_pt_gobject_bool
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_URL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "pac-url",
-	    .prompt =                       N_("PAC URL"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_SCRIPT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "pac-script",
-	    .prompt =                       N_("PAC script"),
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
-	        .validate_fcn =             _validate_fcn_proxy_pac_script,
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_METHOD,
+        .is_cli_option =                TRUE,
+        .property_alias =               "method",
+        .prompt =                       NM_META_TEXT_PROMPT_PROXY_METHOD,
+        .def_hint =                     NM_META_TEXT_PROMPT_PROXY_METHOD_CHOICES,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_proxy_method_get_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_BROWSER_ONLY,
+        .is_cli_option =                TRUE,
+        .property_alias =               "browser-only",
+        .prompt =                       N_("Browser only [no]"),
+        .property_type =                &_pt_gobject_bool
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_URL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "pac-url",
+        .prompt =                       N_("PAC URL"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_SCRIPT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "pac-script",
+        .prompt =                       N_("PAC script"),
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
+            .validate_fcn =             _validate_fcn_proxy_pac_script,
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_SERIAL
 static const NMMetaPropertyInfo *const property_infos_SERIAL[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BAUD,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BITS,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_PARITY,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .value_infos =          ENUM_VALUE_INFOS (
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_EVEN,
-	                    .nick = "E",
-	                },
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_EVEN,
-	                    .nick = "e",
-	                },
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_ODD,
-	                    .nick = "O",
-	                },
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_ODD,
-	                    .nick = "o",
-	                },
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_NONE,
-	                    .nick = "N",
-	                },
-	                {
-	                    .value = NM_SETTING_SERIAL_PARITY_NONE,
-	                    .nick = "n",
-	                },
-	            ),
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_STOPBITS,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_SEND_DELAY,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BAUD,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BITS,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_PARITY,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .value_infos =          ENUM_VALUE_INFOS (
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_EVEN,
+                        .nick = "E",
+                    },
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_EVEN,
+                        .nick = "e",
+                    },
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_ODD,
+                        .nick = "O",
+                    },
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_ODD,
+                        .nick = "o",
+                    },
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_NONE,
+                        .nick = "N",
+                    },
+                    {
+                        .value = NM_SETTING_SERIAL_PARITY_NONE,
+                        .nick = "n",
+                    },
+                ),
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_STOPBITS,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_SEND_DELAY,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_SRIOV
 static const NMMetaPropertyInfo *const property_infos_SRIOV[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_TOTAL_VFS,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_VFS,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingSriov, nm_setting_sriov_get_num_vfs),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingSriov, nm_setting_sriov_clear_vfs),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_sriov_vfs,
-	            .set_fcn =              _objlist_set_fcn_sriov_vfs,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_AUTOPROBE_DRIVERS,
-	    .property_type =                &_pt_gobject_enum,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_TOTAL_VFS,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_VFS,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingSriov, nm_setting_sriov_get_num_vfs),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingSriov, nm_setting_sriov_clear_vfs),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_sriov_vfs,
+                .set_fcn =              _objlist_set_fcn_sriov_vfs,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_SRIOV_AUTOPROBE_DRIVERS,
+        .property_type =                &_pt_gobject_enum,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TC_CONFIG
 static const NMMetaPropertyInfo *const property_infos_TC_CONFIG[] = {
-	PROPERTY_INFO (NM_SETTING_TC_CONFIG_QDISCS, DESCRIBE_DOC_NM_SETTING_TC_CONFIG_QDISCS,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTCConfig, nm_setting_tc_config_get_num_qdiscs),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingTCConfig, nm_setting_tc_config_clear_qdiscs),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_tc_config_qdiscs,
-	            .set_fcn =              _objlist_set_fcn_tc_config_qdiscs,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTCConfig, nm_setting_tc_config_remove_qdisc),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO (NM_SETTING_TC_CONFIG_TFILTERS, DESCRIBE_DOC_NM_SETTING_TC_CONFIG_TFILTERS,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTCConfig, nm_setting_tc_config_get_num_tfilters),
-	            .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingTCConfig, nm_setting_tc_config_clear_tfilters),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_tc_config_tfilters,
-	            .set_fcn =              _objlist_set_fcn_tc_config_tfilters,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTCConfig, nm_setting_tc_config_remove_tfilter),
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO (NM_SETTING_TC_CONFIG_QDISCS, DESCRIBE_DOC_NM_SETTING_TC_CONFIG_QDISCS,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTCConfig, nm_setting_tc_config_get_num_qdiscs),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingTCConfig, nm_setting_tc_config_clear_qdiscs),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_tc_config_qdiscs,
+                .set_fcn =              _objlist_set_fcn_tc_config_qdiscs,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTCConfig, nm_setting_tc_config_remove_qdisc),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO (NM_SETTING_TC_CONFIG_TFILTERS, DESCRIBE_DOC_NM_SETTING_TC_CONFIG_TFILTERS,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTCConfig, nm_setting_tc_config_get_num_tfilters),
+                .clear_all_fcn =        OBJLIST_CLEAR_ALL_FCN       (NMSettingTCConfig, nm_setting_tc_config_clear_tfilters),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_tc_config_tfilters,
+                .set_fcn =              _objlist_set_fcn_tc_config_tfilters,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTCConfig, nm_setting_tc_config_remove_tfilter),
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TEAM
 static const NMMetaPropertyInfo *const property_infos_TEAM[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_CONFIG,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "config",
-	    .prompt =                       N_("Team JSON configuration [none]"),
-	    .describe_message =             TEAM_DESCRIBE_MESSAGE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
-	        .validate_fcn =             _validate_fcn_team_config,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_COUNT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "disabled",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_COUNT,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "disabled",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_BROADCAST,
-	                                                  NM_SETTING_TEAM_RUNNER_ROUNDROBIN,
-	                                                  NM_SETTING_TEAM_RUNNER_RANDOM,
-	                                                  NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP,
-	                                                  NM_SETTING_TEAM_RUNNER_LOADBALANCE,
-	                                                  NM_SETTING_TEAM_RUNNER_LACP),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_SAME_ALL,
-	                                                  NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_BY_ACTIVE,
-	                                                  NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_ONLY_ACTIVE),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_HASH,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingTeam, nm_setting_team_get_num_runner_tx_hash),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingTeam, nm_setting_team_add_runner_tx_hash),
-	            .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingTeam, nm_setting_team_remove_runner_tx_hash),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingTeam, nm_setting_team_remove_runner_tx_hash_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .values_static =            NM_MAKE_STRV ("eth", "vlan", "ipv4", "ipv6", "ip",
-	                                                  "l3", "tcp", "udp", "sctp", "l4"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("basic"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL_DEFAULT,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_ACTIVE,
-	    .property_type =                & _pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_FAST_RATE,
-	    .property_type =                & _pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_SYS_PRIO,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_MIN_PORTS,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 1,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO,
-	                                                  NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO_STABLE,
-	                                                  NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_BANDWIDTH,
-	                                                  NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_COUNT,
-	                                                  NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_PORT_CONFIG),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_LINK_WATCHERS,
-	    .describe_message =             TEAM_LINK_WATCHERS_DESCRIBE_MESSAGE,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTeam, nm_setting_team_get_num_link_watchers),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_team_link_watchers,
-	            .set_fcn =              _objlist_set_fcn_team_link_watchers,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTeam, nm_setting_team_remove_link_watcher),
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_CONFIG,
+        .is_cli_option =                TRUE,
+        .property_alias =               "config",
+        .prompt =                       N_("Team JSON configuration [none]"),
+        .describe_message =             TEAM_DESCRIBE_MESSAGE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
+            .validate_fcn =             _validate_fcn_team_config,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_COUNT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "disabled",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_COUNT,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "disabled",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_BROADCAST,
+                                                      NM_SETTING_TEAM_RUNNER_ROUNDROBIN,
+                                                      NM_SETTING_TEAM_RUNNER_RANDOM,
+                                                      NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP,
+                                                      NM_SETTING_TEAM_RUNNER_LOADBALANCE,
+                                                      NM_SETTING_TEAM_RUNNER_LACP),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_SAME_ALL,
+                                                      NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_BY_ACTIVE,
+                                                      NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_ONLY_ACTIVE),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_HASH,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u =        MULTILIST_GET_NUM_FCN_U       (NMSettingTeam, nm_setting_team_get_num_runner_tx_hash),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingTeam, nm_setting_team_add_runner_tx_hash),
+                .remove_by_idx_fcn_u =  MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingTeam, nm_setting_team_remove_runner_tx_hash),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingTeam, nm_setting_team_remove_runner_tx_hash_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+            .values_static =            NM_MAKE_STRV ("eth", "vlan", "ipv4", "ipv6", "ip",
+                                                      "l3", "tcp", "udp", "sctp", "l4"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("basic"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL_DEFAULT,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_ACTIVE,
+        .property_type =                & _pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_FAST_RATE,
+        .property_type =                & _pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_SYS_PRIO,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_MIN_PORTS,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 1,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO,
+                                                      NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO_STABLE,
+                                                      NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_BANDWIDTH,
+                                                      NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_COUNT,
+                                                      NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_PORT_CONFIG),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_LINK_WATCHERS,
+        .describe_message =             TEAM_LINK_WATCHERS_DESCRIBE_MESSAGE,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTeam, nm_setting_team_get_num_link_watchers),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_team_link_watchers,
+                .set_fcn =              _objlist_set_fcn_team_link_watchers,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTeam, nm_setting_team_remove_link_watcher),
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TEAM_PORT
 static const NMMetaPropertyInfo *const property_infos_TEAM_PORT[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_CONFIG,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "config",
-	    .prompt =                       N_("Team JSON configuration [none]"),
-	    .describe_message =             TEAM_DESCRIBE_MESSAGE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
-	        .validate_fcn =             _validate_fcn_team_config,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_QUEUE_ID,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_PRIO,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = 0,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_STICKY,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LACP_PRIO,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = NM_SETTING_TEAM_PORT_LACP_PRIO_DEFAULT,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LACP_KEY,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = -1,
-	                .nick = "unset",
-	            },
-	            {
-	                .value.i64 = 0,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LINK_WATCHERS,
-	    .describe_message =             TEAM_LINK_WATCHERS_DESCRIBE_MESSAGE,
-	    .property_type =                &_pt_objlist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (objlist,
-	            .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTeamPort, nm_setting_team_port_get_num_link_watchers),
-	            .obj_to_str_fcn =       _objlist_obj_to_str_fcn_team_link_watchers,
-	            .set_fcn =              _objlist_set_fcn_team_link_watchers,
-	            .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTeamPort, nm_setting_team_port_remove_link_watcher),
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_CONFIG,
+        .is_cli_option =                TRUE,
+        .property_alias =               "config",
+        .prompt =                       N_("Team JSON configuration [none]"),
+        .describe_message =             TEAM_DESCRIBE_MESSAGE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_string,
+            .validate_fcn =             _validate_fcn_team_config,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_QUEUE_ID,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_PRIO,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = 0,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_STICKY,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LACP_PRIO,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = NM_SETTING_TEAM_PORT_LACP_PRIO_DEFAULT,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LACP_KEY,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = -1,
+                    .nick = "unset",
+                },
+                {
+                    .value.i64 = 0,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_LINK_WATCHERS,
+        .describe_message =             TEAM_LINK_WATCHERS_DESCRIBE_MESSAGE,
+        .property_type =                &_pt_objlist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (objlist,
+                .get_num_fcn =          OBJLIST_GET_NUM_FCN         (NMSettingTeamPort, nm_setting_team_port_get_num_link_watchers),
+                .obj_to_str_fcn =       _objlist_obj_to_str_fcn_team_link_watchers,
+                .set_fcn =              _objlist_set_fcn_team_link_watchers,
+                .remove_by_idx_fcn_u =  OBJLIST_REMOVE_BY_IDX_FCN_U (NMSettingTeamPort, nm_setting_team_port_remove_link_watcher),
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TUN
 static const NMMetaPropertyInfo *const property_infos_TUN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mode",
-	    .prompt =                       NM_META_TEXT_PROMPT_TUN_MODE,
-	    .def_hint =                     NM_META_TEXT_PROMPT_TUN_MODE_CHOICES,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	        .get_gtype =                nm_setting_tun_mode_get_type,
-	        .min =                      NM_SETTING_TUN_MODE_UNKNOWN + 1,
-	        .max =                      G_MAXINT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_OWNER,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "owner",
-	    .prompt =                       N_("User ID [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_GROUP,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "group",
-	    .prompt =                       N_("Group ID [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_PI,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "pi",
-	    .prompt =                       N_("Enable PI [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_VNET_HDR,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "vnet-hdr",
-	    .prompt =                       N_("Enable VNET header [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MULTI_QUEUE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "multi-queue",
-	    .prompt =                       N_("Enable multi queue [no]"),
-	    .property_type =                &_pt_gobject_bool,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mode",
+        .prompt =                       NM_META_TEXT_PROMPT_TUN_MODE,
+        .def_hint =                     NM_META_TEXT_PROMPT_TUN_MODE_CHOICES,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+            .get_gtype =                nm_setting_tun_mode_get_type,
+            .min =                      NM_SETTING_TUN_MODE_UNKNOWN + 1,
+            .max =                      G_MAXINT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_OWNER,
+        .is_cli_option =                TRUE,
+        .property_alias =               "owner",
+        .prompt =                       N_("User ID [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_GROUP,
+        .is_cli_option =                TRUE,
+        .property_alias =               "group",
+        .prompt =                       N_("Group ID [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_PI,
+        .is_cli_option =                TRUE,
+        .property_alias =               "pi",
+        .prompt =                       N_("Enable PI [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_VNET_HDR,
+        .is_cli_option =                TRUE,
+        .property_alias =               "vnet-hdr",
+        .prompt =                       N_("Enable VNET header [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MULTI_QUEUE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "multi-queue",
+        .prompt =                       N_("Enable multi queue [no]"),
+        .property_type =                &_pt_gobject_bool,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VLAN
 static const NMMetaPropertyInfo *const property_infos_VLAN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("VLAN parent device or connection UUID"),
-	    .property_type =                &_pt_gobject_devices,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_ID,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "id",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("VLAN ID (<0-4094>)"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_FLAGS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "flags",
-	    .prompt =                       N_("VLAN flags (<0-7>) [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_vlan_flags,
-	        .set_fcn =                  _set_fcn_gobject_flags,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ingress",
-	    .prompt =                       N_("Ingress priority maps [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_vlan_xgress_priority_map,
-	        .set_fcn =                  _set_fcn_vlan_xgress_priority_map,
-	        .set_supports_remove =      TRUE,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "egress",
-	    .prompt =                       N_("Egress priority maps [none]"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_vlan_xgress_priority_map,
-	        .set_fcn =                  _set_fcn_vlan_xgress_priority_map,
-	        .set_supports_remove =      TRUE,
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("VLAN parent device or connection UUID"),
+        .property_type =                &_pt_gobject_devices,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_ID,
+        .is_cli_option =                TRUE,
+        .property_alias =               "id",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("VLAN ID (<0-4094>)"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_FLAGS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "flags",
+        .prompt =                       N_("VLAN flags (<0-7>) [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_vlan_flags,
+            .set_fcn =                  _set_fcn_gobject_flags,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ingress",
+        .prompt =                       N_("Ingress priority maps [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_vlan_xgress_priority_map,
+            .set_fcn =                  _set_fcn_vlan_xgress_priority_map,
+            .set_supports_remove =      TRUE,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP,
+        .is_cli_option =                TRUE,
+        .property_alias =               "egress",
+        .prompt =                       N_("Egress priority maps [none]"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_vlan_xgress_priority_map,
+            .set_fcn =                  _set_fcn_vlan_xgress_priority_map,
+            .set_supports_remove =      TRUE,
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VPN
 static const NMMetaPropertyInfo *const property_infos_VPN[] = {
 [_NM_META_PROPERTY_TYPE_VPN_SERVICE_TYPE] =
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SERVICE_TYPE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "vpn-type",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       NM_META_TEXT_PROMPT_VPN_TYPE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_vpn_service_type,
-	        .complete_fcn =             _complete_fcn_vpn_service_type,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_USER_NAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "user",
-	    .prompt =                       N_("Username [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_DATA,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_vpn_options,
-	        .set_fcn =                  _set_fcn_optionlist,
-	        .set_supports_remove =      TRUE,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
-	        .set_fcn =                  _optionlist_set_fcn_vpn_data,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SECRETS,
-	    .is_secret =                    TRUE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_vpn_options,
-	        .set_fcn =                  _set_fcn_optionlist,
-	        .set_supports_remove =      TRUE,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
-	        .set_fcn =                  _optionlist_set_fcn_vpn_secrets,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_PERSISTENT,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_TIMEOUT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SERVICE_TYPE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "vpn-type",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       NM_META_TEXT_PROMPT_VPN_TYPE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_vpn_service_type,
+            .complete_fcn =             _complete_fcn_vpn_service_type,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_USER_NAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "user",
+        .prompt =                       N_("Username [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_DATA,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_vpn_options,
+            .set_fcn =                  _set_fcn_optionlist,
+            .set_supports_remove =      TRUE,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
+            .set_fcn =                  _optionlist_set_fcn_vpn_data,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SECRETS,
+        .is_secret =                    TRUE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_vpn_options,
+            .set_fcn =                  _set_fcn_optionlist,
+            .set_supports_remove =      TRUE,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
+            .set_fcn =                  _optionlist_set_fcn_vpn_secrets,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_PERSISTENT,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_TIMEOUT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VRF
 static const NMMetaPropertyInfo *const property_infos_VRF[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VRF_TABLE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "table",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("Table [0]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VRF_TABLE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "table",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("Table [0]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    NULL
 };
 
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VXLAN
 static const NMMetaPropertyInfo *const property_infos_VXLAN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PARENT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "dev",
-	    .prompt =                       N_("Parent device [none]"),
-	    .property_type =                &_pt_gobject_devices,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_ID,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "id",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("VXLAN ID"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LOCAL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "local",
-	    .prompt =                       N_("Local address [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_REMOTE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "remote",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("Remote"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MIN,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "source-port-min",
-	    .prompt =                       N_("Minimum source port [0]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MAX,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "source-port-max",
-	    .prompt =                       N_("Maximum source port [0]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_DESTINATION_PORT,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "destination-port",
-	    .prompt =                       N_("Destination port [8472]"),
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TOS,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TTL,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_AGEING,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LIMIT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LEARNING,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PROXY,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_RSC,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L2_MISS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L3_MISS,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PARENT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "dev",
+        .prompt =                       N_("Parent device [none]"),
+        .property_type =                &_pt_gobject_devices,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_ID,
+        .is_cli_option =                TRUE,
+        .property_alias =               "id",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("VXLAN ID"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LOCAL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "local",
+        .prompt =                       N_("Local address [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_REMOTE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "remote",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("Remote"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MIN,
+        .is_cli_option =                TRUE,
+        .property_alias =               "source-port-min",
+        .prompt =                       N_("Minimum source port [0]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MAX,
+        .is_cli_option =                TRUE,
+        .property_alias =               "source-port-max",
+        .prompt =                       N_("Maximum source port [0]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_DESTINATION_PORT,
+        .is_cli_option =                TRUE,
+        .property_alias =               "destination-port",
+        .prompt =                       N_("Destination port [8472]"),
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TOS,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TTL,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_AGEING,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LIMIT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LEARNING,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PROXY,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_RSC,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L2_MISS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L3_MISS,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIFI_P2P
 static const NMMetaPropertyInfo *const property_infos_WIFI_P2P[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_PEER,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "peer",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("Peer"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_WPS_METHOD,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_security_wps_method_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_WFD_IES,
-	    .property_type =                &_pt_gobject_bytes,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_PEER,
+        .is_cli_option =                TRUE,
+        .property_alias =               "peer",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("Peer"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_WPS_METHOD,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_security_wps_method_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIFI_P2P_WFD_IES,
+        .property_type =                &_pt_gobject_bytes,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIMAX
 static const NMMetaPropertyInfo *const property_infos_WIMAX[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_NETWORK_NAME,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "nsp",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("WiMAX NSP name"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_NETWORK_NAME,
+        .is_cli_option =                TRUE,
+        .property_alias =               "nsp",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("WiMAX NSP name"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRED
 static const NMMetaPropertyInfo *const property_infos_WIRED[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_PORT,
-	    /* Do not allow setting 'port' for now. It is not implemented in
-	     * NM core, nor in ifcfg-rh plugin. Enable this when it gets done.
-	     * wired_valid_ports[] = { "tp", "aui", "bnc", "mii", NULL };
-	     */
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_SPEED,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_DUPLEX,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("half", "full"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_AUTO_NEGOTIATE,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "cloned-mac",
-	    .prompt =                       N_("Cloned MAC [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
-	        .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_CLONED,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWired, nm_setting_wired_get_num_mac_blacklist_items),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWired, nm_setting_wired_add_mac_blacklist_item),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWired, nm_setting_wired_remove_mac_blacklist_item),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWired, nm_setting_wired_remove_mac_blacklist_item_by_value),
-	            .validate2_fcn =        _multilist_validate2_fcn_mac_addr,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MTU,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mtu",
-	    .prompt =                       N_("MTU [auto]"),
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingWired, nm_setting_wired_get_mtu),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_SUBCHANNELS,
-	    .describe_message =
-	        N_("Enter a list of subchannels (comma or space separated).\n\n"
-	           "Example: 0.0.0e20 0.0.0e21 0.0.0e22\n"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_wired_s390_subchannels,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_NETTYPE,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("qeth", "lcs", "ctc"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_OPTIONS,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .describe_fcn =             _describe_fcn_wired_s390_options,
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_optionlist,
-	        .set_supports_remove =      TRUE,
-	        .values_fcn =               _values_fcn_wired_s390_options,
-	    ),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
-	        .set_fcn =                  _optionlist_set_fcn_wired_s390_options,
-	        .no_empty_value =           TRUE,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wired_wake_on_lan_get_type,
-	            .value_infos =          ENUM_VALUE_INFOS (
-	                {
-	                    .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
-	                    .nick = "none",
-	                },
-	                {
-	                    .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
-	                    .nick = "disable",
-	                },
-	                {
-	                    .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
-	                    .nick = "disabled",
-	                },
-	            ),
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD,
-	    .property_type =                &_pt_gobject_mac,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_PORT,
+        /* Do not allow setting 'port' for now. It is not implemented in
+         * NM core, nor in ifcfg-rh plugin. Enable this when it gets done.
+         * wired_valid_ports[] = { "tp", "aui", "bnc", "mii", NULL };
+         */
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_SPEED,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_DUPLEX,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("half", "full"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_AUTO_NEGOTIATE,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+        .property_type =                &_pt_gobject_mac,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "cloned-mac",
+        .prompt =                       N_("Cloned MAC [none]"),
+        .property_type =                &_pt_gobject_mac,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
+            .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_CLONED,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWired, nm_setting_wired_get_num_mac_blacklist_items),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWired, nm_setting_wired_add_mac_blacklist_item),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWired, nm_setting_wired_remove_mac_blacklist_item),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWired, nm_setting_wired_remove_mac_blacklist_item_by_value),
+                .validate2_fcn =        _multilist_validate2_fcn_mac_addr,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MTU,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mtu",
+        .prompt =                       N_("MTU [auto]"),
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingWired, nm_setting_wired_get_mtu),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_SUBCHANNELS,
+        .describe_message =
+            N_("Enter a list of subchannels (comma or space separated).\n\n"
+               "Example: 0.0.0e20 0.0.0e21 0.0.0e22\n"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_wired_s390_subchannels,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_NETTYPE,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("qeth", "lcs", "ctc"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_OPTIONS,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .describe_fcn =             _describe_fcn_wired_s390_options,
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_optionlist,
+            .set_supports_remove =      TRUE,
+            .values_fcn =               _values_fcn_wired_s390_options,
+        ),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (optionlist,
+            .set_fcn =                  _optionlist_set_fcn_wired_s390_options,
+            .no_empty_value =           TRUE,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wired_wake_on_lan_get_type,
+                .value_infos =          ENUM_VALUE_INFOS (
+                    {
+                        .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
+                        .nick = "none",
+                    },
+                    {
+                        .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
+                        .nick = "disable",
+                    },
+                    {
+                        .value = NM_SETTING_WIRED_WAKE_ON_LAN_NONE,
+                        .nick = "disabled",
+                    },
+                ),
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD,
+        .property_type =                &_pt_gobject_mac,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIREGUARD
 static const NMMetaPropertyInfo *const property_infos_WIREGUARD[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PRIVATE_KEY,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_LISTEN_PORT,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_FWMARK,
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
-	        .base =                     16,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PEER_ROUTES,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_MTU,
-	    .property_type =                &_pt_gobject_mtu,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_IP4_AUTO_DEFAULT_ROUTE,
-	    .property_type =                &_pt_gobject_enum,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_IP6_AUTO_DEFAULT_ROUTE,
-	    .property_type =                &_pt_gobject_enum,
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PRIVATE_KEY,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PRIVATE_KEY_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_LISTEN_PORT,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_FWMARK,
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
+            .base =                     16,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_PEER_ROUTES,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_MTU,
+        .property_type =                &_pt_gobject_mtu,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_IP4_AUTO_DEFAULT_ROUTE,
+        .property_type =                &_pt_gobject_enum,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIREGUARD_IP6_AUTO_DEFAULT_ROUTE,
+        .property_type =                &_pt_gobject_enum,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRELESS
 static const NMMetaPropertyInfo *const property_infos_WIRELESS[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SSID,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "ssid",
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .prompt =                       N_("SSID"),
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_wireless_ssid,
-	        .set_fcn =                  _set_fcn_gobject_ssid,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MODE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mode",
-	    .prompt =                       NM_META_TEXT_PROMPT_WIFI_MODE,
-	    .def_hint =                     NM_META_TEXT_PROMPT_WIFI_MODE_CHOICES,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV (NM_SETTING_WIRELESS_MODE_INFRA,
-	                                                  NM_SETTING_WIRELESS_MODE_ADHOC,
-	                                                  NM_SETTING_WIRELESS_MODE_AP,
-	                                                  NM_SETTING_WIRELESS_MODE_MESH),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BAND,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("a", "bg"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CHANNEL,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_gobject,
-	        .set_fcn =                  _set_fcn_wireless_channel,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BSSID,
-	    .property_type =                &_pt_gobject_mac,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_RATE,
-	    /* Do not allow setting 'rate'. It is not implemented in NM core. */
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_TX_POWER,
-	    /* Do not allow setting 'tx-power'. It is not implemented in NM core. */
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS,
-	    .property_type =                &_pt_gobject_mac,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "cloned-mac",
-	    .prompt =                       N_("Cloned MAC [none]"),
-	    .property_type =                &_pt_gobject_mac,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
-	        .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_CLONED,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWireless, nm_setting_wireless_get_num_mac_blacklist_items),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWireless, nm_setting_wireless_add_mac_blacklist_item),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWireless, nm_setting_wireless_remove_mac_blacklist_item),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWireless, nm_setting_wireless_remove_mac_blacklist_item_by_value),
-	            .validate2_fcn =        _multilist_validate2_fcn_mac_addr,
-	            .strsplit_plain =       TRUE,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_mac_randomization_get_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MTU,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mtu",
-	    .prompt =                       N_("MTU [auto]"),
-	    .property_type =                &_pt_gobject_mtu,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
-	        .get_fcn =                  MTU_GET_FCN (NMSettingWireless, nm_setting_wireless_get_mtu),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SEEN_BSSIDS,
-	    .property_type =                &_pt_gobject_readonly,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_HIDDEN,
-	    .property_type =                &_pt_gobject_bool,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_POWERSAVE,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_powersave_get_type,
-	        ),
-	        .typ_flags =                NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_WAKE_ON_WLAN,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_wake_on_wlan_get_type,
-	            .value_infos =          ENUM_VALUE_INFOS (
-	                {
-	                    .value = NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE,
-	                    .nick = "disabled",
-	                },
-	            ),
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SSID,
+        .is_cli_option =                TRUE,
+        .property_alias =               "ssid",
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .prompt =                       N_("SSID"),
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_wireless_ssid,
+            .set_fcn =                  _set_fcn_gobject_ssid,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MODE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mode",
+        .prompt =                       NM_META_TEXT_PROMPT_WIFI_MODE,
+        .def_hint =                     NM_META_TEXT_PROMPT_WIFI_MODE_CHOICES,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV (NM_SETTING_WIRELESS_MODE_INFRA,
+                                                      NM_SETTING_WIRELESS_MODE_ADHOC,
+                                                      NM_SETTING_WIRELESS_MODE_AP,
+                                                      NM_SETTING_WIRELESS_MODE_MESH),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BAND,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("a", "bg"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CHANNEL,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_gobject,
+            .set_fcn =                  _set_fcn_wireless_channel,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BSSID,
+        .property_type =                &_pt_gobject_mac,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_RATE,
+        /* Do not allow setting 'rate'. It is not implemented in NM core. */
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_TX_POWER,
+        /* Do not allow setting 'tx-power'. It is not implemented in NM core. */
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS,
+        .property_type =                &_pt_gobject_mac,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "cloned-mac",
+        .prompt =                       N_("Cloned MAC [none]"),
+        .property_type =                &_pt_gobject_mac,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
+            .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_CLONED,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWireless, nm_setting_wireless_get_num_mac_blacklist_items),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWireless, nm_setting_wireless_add_mac_blacklist_item),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWireless, nm_setting_wireless_remove_mac_blacklist_item),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWireless, nm_setting_wireless_remove_mac_blacklist_item_by_value),
+                .validate2_fcn =        _multilist_validate2_fcn_mac_addr,
+                .strsplit_plain =       TRUE,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_mac_randomization_get_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MTU,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mtu",
+        .prompt =                       N_("MTU [auto]"),
+        .property_type =                &_pt_gobject_mtu,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu,
+            .get_fcn =                  MTU_GET_FCN (NMSettingWireless, nm_setting_wireless_get_mtu),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SEEN_BSSIDS,
+        .property_type =                &_pt_gobject_readonly,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_HIDDEN,
+        .property_type =                &_pt_gobject_bool,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_POWERSAVE,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_powersave_get_type,
+            ),
+            .typ_flags =                NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_WAKE_ON_WLAN,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_wake_on_wlan_get_type,
+                .value_infos =          ENUM_VALUE_INFOS (
+                    {
+                        .value = NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE,
+                        .nick = "disabled",
+                    },
+                ),
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_AP_ISOLATION,
+        .property_type =                &_pt_gobject_enum,
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRELESS_SECURITY
 static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("none", "ieee8021x", "wpa-psk", "wpa-eap", "sae", "owe"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX,
-	    .property_type =                &_pt_gobject_int,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG,
-	    .property_type =                &_pt_gobject_string,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        .values_static =            NM_MAKE_STRV ("open", "shared", "leap"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PROTO,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_protos),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_proto),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_proto),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_proto_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .values_static =            NM_MAKE_STRV ("wpa", "rsn"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PAIRWISE,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_pairwise),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_pairwise),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_pairwise),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_pairwise_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .values_static =            NM_MAKE_STRV ("tkip", "ccmp"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_GROUP,
-	    .property_type =                &_pt_multilist,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (multilist,
-	            .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_groups),
-	            .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_group),
-	            .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_group),
-	            .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_group_by_value),
-	            .strsplit_plain =       TRUE,
-	        ),
-	        .values_static =            NM_MAKE_STRV ("wep40", "wep104", "tkip", "ccmp"),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PMF,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_security_pmf_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0,
-	    .is_secret =                    TRUE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_wireless_security_wep_key,
-	        .set_fcn =                  _set_fcn_wireless_wep_key,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1,
-	    .is_secret =                    TRUE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_wireless_security_wep_key,
-	        .set_fcn =                  _set_fcn_wireless_wep_key,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2,
-	    .is_secret =                    TRUE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_wireless_security_wep_key,
-	        .set_fcn =                  _set_fcn_wireless_wep_key,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3,
-	    .is_secret =                    TRUE,
-	    .property_type = DEFINE_PROPERTY_TYPE (
-	        .get_fcn =                  _get_fcn_wireless_security_wep_key,
-	        .set_fcn =                  _set_fcn_wireless_wep_key,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
-	    .describe_message =
-	        N_("Enter the type of WEP keys. The accepted values are: "
-	           "0 or unknown, 1 or key, and 2 or passphrase.\n"),
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .pre_set_notify =       _gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type,
-	        ),
-	        .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
-	                                    | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD,
-	    .is_secret =                    TRUE,
-	    .property_type =                &_pt_gobject_string,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS,
-	    .property_type =                &_pt_gobject_secret_flags,
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WPS_METHOD,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_security_wps_method_get_type,
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_FILS,
-	    .property_type =                &_pt_gobject_enum,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
-	        PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
-	            .get_gtype =            nm_setting_wireless_security_fils_get_type,
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("none", "ieee8021x", "wpa-psk", "wpa-eap", "sae", "owe"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX,
+        .property_type =                &_pt_gobject_int,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG,
+        .property_type =                &_pt_gobject_string,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            .values_static =            NM_MAKE_STRV ("open", "shared", "leap"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PROTO,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_protos),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_proto),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_proto),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_proto_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+            .values_static =            NM_MAKE_STRV ("wpa", "rsn"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PAIRWISE,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_pairwise),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_pairwise),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_pairwise),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_pairwise_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+            .values_static =            NM_MAKE_STRV ("tkip", "ccmp"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_GROUP,
+        .property_type =                &_pt_multilist,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (multilist,
+                .get_num_fcn_u32 =      MULTILIST_GET_NUM_FCN_U32     (NMSettingWirelessSecurity, nm_setting_wireless_security_get_num_groups),
+                .add_fcn =              MULTILIST_ADD_FCN             (NMSettingWirelessSecurity, nm_setting_wireless_security_add_group),
+                .remove_by_idx_fcn_u32 = MULTILIST_REMOVE_BY_IDX_FCN_U32 (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_group),
+                .remove_by_value_fcn =  MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWirelessSecurity, nm_setting_wireless_security_remove_group_by_value),
+                .strsplit_plain =       TRUE,
+            ),
+            .values_static =            NM_MAKE_STRV ("wep40", "wep104", "tkip", "ccmp"),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PMF,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_security_pmf_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0,
+        .is_secret =                    TRUE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_wireless_security_wep_key,
+            .set_fcn =                  _set_fcn_wireless_wep_key,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1,
+        .is_secret =                    TRUE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_wireless_security_wep_key,
+            .set_fcn =                  _set_fcn_wireless_wep_key,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2,
+        .is_secret =                    TRUE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_wireless_security_wep_key,
+            .set_fcn =                  _set_fcn_wireless_wep_key,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3,
+        .is_secret =                    TRUE,
+        .property_type = DEFINE_PROPERTY_TYPE (
+            .get_fcn =                  _get_fcn_wireless_security_wep_key,
+            .set_fcn =                  _set_fcn_wireless_wep_key,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
+        .describe_message =
+            N_("Enter the type of WEP keys. The accepted values are: "
+               "0 or unknown, 1 or key, and 2 or passphrase.\n"),
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .pre_set_notify =       _gobject_enum_pre_set_notify_fcn_wireless_security_wep_key_type,
+            ),
+            .typ_flags =                  NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
+                                        | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD,
+        .is_secret =                    TRUE,
+        .property_type =                &_pt_gobject_string,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS,
+        .property_type =                &_pt_gobject_secret_flags,
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WPS_METHOD,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_security_wps_method_get_type,
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_FILS,
+        .property_type =                &_pt_gobject_enum,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA (
+            PROPERTY_TYP_DATA_SUBTYPE (gobject_enum,
+                .get_gtype =            nm_setting_wireless_security_fils_get_type,
+            ),
+        ),
+    ),
+    NULL
 };
 
 #undef  _CURRENT_NM_META_SETTING_TYPE
 #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WPAN
 static const NMMetaPropertyInfo *const property_infos_WPAN[] = {
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_MAC_ADDRESS,
-	    .property_type =                &_pt_gobject_mac,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "mac",
-	    .prompt =                       N_("MAC [none]"),
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
-	        .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_WPAN,
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_SHORT_ADDRESS,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "short-addr",
-	    .prompt =                       N_("Short address (<0x0000-0xffff>)"),
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
-	        .base =                     16,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = G_MAXUINT16,
-	                .nick = "unset",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_PAN_ID,
-	    .is_cli_option =                TRUE,
-	    .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
-	    .property_alias =               "pan-id",
-	    .prompt =                       N_("PAN Identifier (<0x0000-0xffff>)"),
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
-	        .base =                     16,
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = G_MAXUINT16,
-	                .nick = "unset",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_PAGE,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "page",
-	    .prompt =                       N_("Page (<default|0-31>)"),
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = NM_SETTING_WPAN_PAGE_DEFAULT,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_CHANNEL,
-	    .is_cli_option =                TRUE,
-	    .property_alias =               "channel",
-	    .prompt =                       N_("Channel (<default|0-26>)"),
-	    .property_type =                &_pt_gobject_int,
-	    .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
-	        .value_infos =              INT_VALUE_INFOS (
-	            {
-	                .value.i64 = NM_SETTING_WPAN_CHANNEL_DEFAULT,
-	                .nick = "default",
-	            },
-	        ),
-	    ),
-	),
-	NULL
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_MAC_ADDRESS,
+        .property_type =                &_pt_gobject_mac,
+        .is_cli_option =                TRUE,
+        .property_alias =               "mac",
+        .prompt =                       N_("MAC [none]"),
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac,
+            .mode =                     NM_META_PROPERTY_TYPE_MAC_MODE_WPAN,
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_SHORT_ADDRESS,
+        .is_cli_option =                TRUE,
+        .property_alias =               "short-addr",
+        .prompt =                       N_("Short address (<0x0000-0xffff>)"),
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
+            .base =                     16,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = G_MAXUINT16,
+                    .nick = "unset",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_PAN_ID,
+        .is_cli_option =                TRUE,
+        .inf_flags =                    NM_META_PROPERTY_INF_FLAG_REQD,
+        .property_alias =               "pan-id",
+        .prompt =                       N_("PAN Identifier (<0x0000-0xffff>)"),
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
+            .base =                     16,
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = G_MAXUINT16,
+                    .nick = "unset",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_PAGE,
+        .is_cli_option =                TRUE,
+        .property_alias =               "page",
+        .prompt =                       N_("Page (<default|0-31>)"),
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = NM_SETTING_WPAN_PAGE_DEFAULT,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    PROPERTY_INFO_WITH_DESC (NM_SETTING_WPAN_CHANNEL,
+        .is_cli_option =                TRUE,
+        .property_alias =               "channel",
+        .prompt =                       N_("Channel (<default|0-26>)"),
+        .property_type =                &_pt_gobject_int,
+        .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, \
+            .value_infos =              INT_VALUE_INFOS (
+                {
+                    .value.i64 = NM_SETTING_WPAN_CHANNEL_DEFAULT,
+                    .nick = "default",
+                },
+            ),
+        ),
+    ),
+    NULL
 };
 
 /*****************************************************************************/
@@ -7734,118 +7809,118 @@ static const NMMetaPropertyInfo *const property_infos_WPAN[] = {
 static void
 _setting_init_fcn_adsl (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    /* Initialize a protocol */
-	    g_object_set (NM_SETTING_ADSL (setting),
-	                  NM_SETTING_ADSL_PROTOCOL, NM_SETTING_ADSL_PROTOCOL_PPPOE,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        /* Initialize a protocol */
+        g_object_set (NM_SETTING_ADSL (setting),
+                      NM_SETTING_ADSL_PROTOCOL, NM_SETTING_ADSL_PROTOCOL_PPPOE,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_cdma (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    /* Initialize 'number' so that 'cdma' is valid */
-	    g_object_set (NM_SETTING_CDMA (setting),
-	                  NM_SETTING_CDMA_NUMBER, "#777",
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        /* Initialize 'number' so that 'cdma' is valid */
+        g_object_set (NM_SETTING_CDMA (setting),
+                      NM_SETTING_CDMA_NUMBER, "#777",
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_gsm (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    /* Initialize 'apn' so that 'gsm' is valid */
-	    g_object_set (NM_SETTING_GSM (setting),
-	                  NM_SETTING_GSM_APN, "internet",
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        /* Initialize 'apn' so that 'gsm' is valid */
+        g_object_set (NM_SETTING_GSM (setting),
+                      NM_SETTING_GSM_APN, "internet",
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_infiniband (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    /* Initialize 'transport-mode' so that 'infiniband' is valid */
-	    g_object_set (NM_SETTING_INFINIBAND (setting),
-	                  NM_SETTING_INFINIBAND_TRANSPORT_MODE, "datagram",
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        /* Initialize 'transport-mode' so that 'infiniband' is valid */
+        g_object_set (NM_SETTING_INFINIBAND (setting),
+                      NM_SETTING_INFINIBAND_TRANSPORT_MODE, "datagram",
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_ip4_config (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (NM_SETTING_IP_CONFIG (setting),
-	                  NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (NM_SETTING_IP_CONFIG (setting),
+                      NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_ip6_config (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (NM_SETTING_IP_CONFIG (setting),
-	                  NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (NM_SETTING_IP_CONFIG (setting),
+                      NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_olpc_mesh (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (NM_SETTING_OLPC_MESH (setting),
-	                  NM_SETTING_OLPC_MESH_CHANNEL, 1,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (NM_SETTING_OLPC_MESH (setting),
+                      NM_SETTING_OLPC_MESH_CHANNEL, 1,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_proxy (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (NM_SETTING_PROXY (setting),
-	                  NM_SETTING_PROXY_METHOD, (int) NM_SETTING_PROXY_METHOD_NONE,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (NM_SETTING_PROXY (setting),
+                      NM_SETTING_PROXY_METHOD, (int) NM_SETTING_PROXY_METHOD_NONE,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_tun (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (NM_SETTING_TUN (setting),
-	                  NM_SETTING_TUN_MODE, NM_SETTING_TUN_MODE_TUN,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (NM_SETTING_TUN (setting),
+                      NM_SETTING_TUN_MODE, NM_SETTING_TUN_MODE_TUN,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_vlan (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    g_object_set (setting,
-	                  NM_SETTING_VLAN_ID, 1,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        g_object_set (setting,
+                      NM_SETTING_VLAN_ID, 1,
+                      NULL);
+    }
 }
 
 static void
 _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
 {
-	if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
-	    /* For Wi-Fi set mode to "infrastructure". Even though mode == NULL
-	     * is regarded as "infrastructure", explicit value makes no doubts.
-	     */
-	    g_object_set (NM_SETTING_WIRELESS (setting),
-	                  NM_SETTING_WIRELESS_MODE, NM_SETTING_WIRELESS_MODE_INFRA,
-	                  NULL);
-	}
+    if (init_type == NM_META_ACCESSOR_SETTING_INIT_TYPE_CLI) {
+        /* For Wi-Fi set mode to "infrastructure". Even though mode == NULL
+         * is regarded as "infrastructure", explicit value makes no doubts.
+         */
+        g_object_set (NM_SETTING_WIRELESS (setting),
+                      NM_SETTING_WIRELESS_MODE, NM_SETTING_WIRELESS_MODE_INFRA,
+                      NULL);
+    }
 }
 
 /*****************************************************************************/
@@ -7900,544 +7975,536 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
 #define SETTING_PRETTY_NAME_WPAN                N_("WPAN settings")
 
 #define NM_META_SETTING_VALID_PARTS(...) \
-	((const NMMetaSettingValidPartItem *const[]) { __VA_ARGS__  NULL })
+    ((const NMMetaSettingValidPartItem *const[]) { __VA_ARGS__  NULL })
 
 #define NM_META_SETTING_VALID_PART_ITEM(type, mand) \
-	(&((const NMMetaSettingValidPartItem) { \
-	    .setting_info =                     &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_##type], \
-	    .mandatory =                        mand, \
-	}))
+    (&((const NMMetaSettingValidPartItem) { \
+        .setting_info =                     &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_##type], \
+        .mandatory =                        mand, \
+    }))
 
 const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
 #define SETTING_INFO_EMPTY(type, ...) \
-	[NM_META_SETTING_TYPE_##type] = { \
-	    .meta_type =                        &nm_meta_type_setting_info_editor, \
-	    .general =                          &nm_meta_setting_infos[NM_META_SETTING_TYPE_##type], \
-	    .pretty_name =                      SETTING_PRETTY_NAME_##type, \
-	    __VA_ARGS__ \
-	}
+    [NM_META_SETTING_TYPE_##type] = { \
+        .meta_type =                        &nm_meta_type_setting_info_editor, \
+        .general =                          &nm_meta_setting_infos[NM_META_SETTING_TYPE_##type], \
+        .pretty_name =                      SETTING_PRETTY_NAME_##type, \
+        __VA_ARGS__ \
+    }
 #define SETTING_INFO(type, ...) \
-	[NM_META_SETTING_TYPE_##type] = { \
-	    .meta_type =                        &nm_meta_type_setting_info_editor, \
-	    .general =                          &nm_meta_setting_infos[NM_META_SETTING_TYPE_##type], \
-	    .properties =                       property_infos_##type, \
-	    .properties_num =                   G_N_ELEMENTS (property_infos_##type) - 1, \
-	    .pretty_name =                      SETTING_PRETTY_NAME_##type, \
-	    __VA_ARGS__ \
-	}
-	SETTING_INFO (6LOWPAN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (6LOWPAN,               TRUE),
-	    ),
-	),
-	SETTING_INFO (802_1X),
-	SETTING_INFO (ADSL,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (ADSL,                  TRUE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_adsl,
-	),
-	SETTING_INFO (BLUETOOTH,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (BLUETOOTH,             TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (BRIDGE,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (GSM,                   FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (CDMA,                  FALSE),
-	    ),
-	),
-	SETTING_INFO (BOND,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (BOND,                  TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (BRIDGE,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (BRIDGE,                TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (BRIDGE_PORT),
-	SETTING_INFO (CDMA,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (CDMA,                  TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (SERIAL,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_cdma,
-	),
-	SETTING_INFO (CONNECTION),
-	SETTING_INFO (DCB),
-	SETTING_INFO (ETHTOOL),
-	SETTING_INFO_EMPTY (DUMMY,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (DUMMY,                 TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO_EMPTY (GENERIC,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (GENERIC,               TRUE),
-	    ),
-	),
-	SETTING_INFO (GSM,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (GSM,                   TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (SERIAL,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_gsm,
-	),
-	SETTING_INFO (INFINIBAND,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (INFINIBAND,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (SRIOV,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_infiniband,
-	),
-	SETTING_INFO (IP4_CONFIG,
-	    .setting_init_fcn =             _setting_init_fcn_ip4_config,
-	),
-	SETTING_INFO (IP6_CONFIG,
-	    .setting_init_fcn =             _setting_init_fcn_ip6_config,
-	),
-	SETTING_INFO (IP_TUNNEL,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (IP_TUNNEL,             TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (MACSEC,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (MACSEC,                TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (MACVLAN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (MACVLAN,               TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (MATCH),
-	SETTING_INFO (OLPC_MESH,
-	    .alias =                            "olpc-mesh",
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (OLPC_MESH,             TRUE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_olpc_mesh,
-	),
-	SETTING_INFO (OVS_BRIDGE,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (OVS_BRIDGE,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	    ),
-	),
-	SETTING_INFO (OVS_DPDK),
-	SETTING_INFO (OVS_INTERFACE,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (OVS_INTERFACE,         TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (OVS_DPDK,              FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (OVS_PATCH,             FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (IP4_CONFIG,            FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (IP6_CONFIG,            FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (OVS_PATCH),
-	SETTING_INFO (OVS_PORT,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (OVS_PORT,              TRUE),
-	    ),
-	),
-	SETTING_INFO (PPPOE,
-	    /* PPPoE is a base connection type from historical reasons.
-	     * See libnm-core/nm-setting.c:_nm_setting_is_base_type()
-	     */
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (PPPOE,                 TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (PPP),
-	SETTING_INFO (PROXY,
-	    .setting_init_fcn =             _setting_init_fcn_proxy,
-	),
-	SETTING_INFO (SERIAL),
-	SETTING_INFO (SRIOV),
-	SETTING_INFO (TC_CONFIG),
-	SETTING_INFO (TEAM,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (TEAM,                  TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (TEAM_PORT),
-	SETTING_INFO (TUN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (TUN,                   TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_tun,
-	),
-	SETTING_INFO_EMPTY (USER),
-	SETTING_INFO (VLAN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (VLAN,                  TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_vlan,
-	),
-	SETTING_INFO (VPN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (VPN,                   TRUE),
-	    ),
-	),
-	SETTING_INFO (VRF,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (VRF,                   TRUE),
-	    ),
-	),
-
-	SETTING_INFO (VXLAN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (VXLAN,                 TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (WIFI_P2P,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIFI_P2P,              TRUE),
-	    ),
-	),
-	SETTING_INFO (WIMAX,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIMAX,                 TRUE),
-	    ),
-	),
-	SETTING_INFO (WIRED,
-	    .alias =                            "ethernet",
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRED,                 TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (DCB,                   FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (SRIOV,                 FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	),
-	SETTING_INFO (WIREGUARD,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIREGUARD,             TRUE),
-	    ),
-	),
-	SETTING_INFO (WIRELESS,
-	    .alias =                            "wifi",
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRELESS,              TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WIRELESS_SECURITY,     FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
-	        NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
-	    ),
-	    .setting_init_fcn =             _setting_init_fcn_wireless,
-	),
-	SETTING_INFO (WIRELESS_SECURITY,
-	    .alias =                            "wifi-sec",
-	),
-	SETTING_INFO (WPAN,
-	    .valid_parts = NM_META_SETTING_VALID_PARTS (
-	        NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
-	        NM_META_SETTING_VALID_PART_ITEM (WPAN,                  TRUE),
-	    ),
-	),
+    [NM_META_SETTING_TYPE_##type] = { \
+        .meta_type =                        &nm_meta_type_setting_info_editor, \
+        .general =                          &nm_meta_setting_infos[NM_META_SETTING_TYPE_##type], \
+        .properties =                       property_infos_##type, \
+        .properties_num =                   G_N_ELEMENTS (property_infos_##type) - 1, \
+        .pretty_name =                      SETTING_PRETTY_NAME_##type, \
+        __VA_ARGS__ \
+    }
+    SETTING_INFO (6LOWPAN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (6LOWPAN,               TRUE),
+        ),
+    ),
+    SETTING_INFO (802_1X),
+    SETTING_INFO (ADSL,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (ADSL,                  TRUE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_adsl,
+    ),
+    SETTING_INFO (BLUETOOTH,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (BLUETOOTH,             TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (BRIDGE,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (GSM,                   FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (CDMA,                  FALSE),
+        ),
+    ),
+    SETTING_INFO (BOND,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (BOND,                  TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (BRIDGE,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (BRIDGE,                TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (BRIDGE_PORT),
+    SETTING_INFO (CDMA,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (CDMA,                  TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (SERIAL,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_cdma,
+    ),
+    SETTING_INFO (CONNECTION),
+    SETTING_INFO (DCB),
+    SETTING_INFO (ETHTOOL),
+    SETTING_INFO_EMPTY (DUMMY,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (DUMMY,                 TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO_EMPTY (GENERIC,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (GENERIC,               TRUE),
+        ),
+    ),
+    SETTING_INFO (GSM,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (GSM,                   TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (SERIAL,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_gsm,
+    ),
+    SETTING_INFO (INFINIBAND,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (INFINIBAND,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (SRIOV,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_infiniband,
+    ),
+    SETTING_INFO (IP4_CONFIG,
+        .setting_init_fcn =             _setting_init_fcn_ip4_config,
+    ),
+    SETTING_INFO (IP6_CONFIG,
+        .setting_init_fcn =             _setting_init_fcn_ip6_config,
+    ),
+    SETTING_INFO (IP_TUNNEL,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (IP_TUNNEL,             TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (MACSEC,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (MACSEC,                TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (MACVLAN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (MACVLAN,               TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (MATCH),
+    SETTING_INFO (OLPC_MESH,
+        .alias =                            "olpc-mesh",
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (OLPC_MESH,             TRUE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_olpc_mesh,
+    ),
+    SETTING_INFO (OVS_BRIDGE,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (OVS_BRIDGE,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+        ),
+    ),
+    SETTING_INFO (OVS_DPDK),
+    SETTING_INFO (OVS_INTERFACE,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (OVS_INTERFACE,         TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (OVS_DPDK,              FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (OVS_PATCH,             FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (IP4_CONFIG,            FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (IP6_CONFIG,            FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (OVS_PATCH),
+    SETTING_INFO (OVS_PORT,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (OVS_PORT,              TRUE),
+        ),
+    ),
+    SETTING_INFO (PPPOE,
+        /* PPPoE is a base connection type from historical reasons.
+         * See libnm-core/nm-setting.c:_nm_setting_is_base_type()
+         */
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (PPPOE,                 TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (PPP,                   FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (PPP),
+    SETTING_INFO (PROXY,
+        .setting_init_fcn =             _setting_init_fcn_proxy,
+    ),
+    SETTING_INFO (SERIAL),
+    SETTING_INFO (SRIOV),
+    SETTING_INFO (TC_CONFIG),
+    SETTING_INFO (TEAM,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (TEAM,                  TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (TEAM_PORT),
+    SETTING_INFO (TUN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (TUN,                   TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_tun,
+    ),
+    SETTING_INFO_EMPTY (USER),
+    SETTING_INFO (VLAN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (VLAN,                  TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_vlan,
+    ),
+    SETTING_INFO (VPN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (VPN,                   TRUE),
+        ),
+    ),
+    SETTING_INFO (VRF,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (VRF,                   TRUE),
+        ),
+    ),
+
+    SETTING_INFO (VXLAN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (VXLAN,                 TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (WIFI_P2P,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIFI_P2P,              TRUE),
+        ),
+    ),
+    SETTING_INFO (WIMAX,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIMAX,                 TRUE),
+        ),
+    ),
+    SETTING_INFO (WIRED,
+        .alias =                            "ethernet",
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRED,                 TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (DCB,                   FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (SRIOV,                 FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+    ),
+    SETTING_INFO (WIREGUARD,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIREGUARD,             TRUE),
+        ),
+    ),
+    SETTING_INFO (WIRELESS,
+        .alias =                            "wifi",
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRELESS,              TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WIRELESS_SECURITY,     FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (802_1X,                FALSE),
+            NM_META_SETTING_VALID_PART_ITEM (ETHTOOL,               FALSE),
+        ),
+        .setting_init_fcn =             _setting_init_fcn_wireless,
+    ),
+    SETTING_INFO (WIRELESS_SECURITY,
+        .alias =                            "wifi-sec",
+    ),
+    SETTING_INFO (WPAN,
+        .valid_parts = NM_META_SETTING_VALID_PARTS (
+            NM_META_SETTING_VALID_PART_ITEM (CONNECTION,            TRUE),
+            NM_META_SETTING_VALID_PART_ITEM (WPAN,                  TRUE),
+        ),
+    ),
 };
 
+/* clang-format on */
+
 /*****************************************************************************/
 
 const NMMetaSettingValidPartItem *const nm_meta_setting_info_valid_parts_default[] = {
-	NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
-	NULL
-};
+    NM_META_SETTING_VALID_PART_ITEM(CONNECTION, TRUE),
+    NULL};
 
 /*****************************************************************************/
 
 static const NMMetaSettingValidPartItem *const valid_settings_noslave[] = {
-	NM_META_SETTING_VALID_PART_ITEM (MATCH,      FALSE),
-	NM_META_SETTING_VALID_PART_ITEM (IP4_CONFIG, FALSE),
-	NM_META_SETTING_VALID_PART_ITEM (IP6_CONFIG, FALSE),
-	NM_META_SETTING_VALID_PART_ITEM (TC_CONFIG,  FALSE),
-	NM_META_SETTING_VALID_PART_ITEM (PROXY,      FALSE),
-	NULL,
+    NM_META_SETTING_VALID_PART_ITEM(MATCH, FALSE),
+    NM_META_SETTING_VALID_PART_ITEM(IP4_CONFIG, FALSE),
+    NM_META_SETTING_VALID_PART_ITEM(IP6_CONFIG, FALSE),
+    NM_META_SETTING_VALID_PART_ITEM(TC_CONFIG, FALSE),
+    NM_META_SETTING_VALID_PART_ITEM(PROXY, FALSE),
+    NULL,
 };
 
 static const NMMetaSettingValidPartItem *const valid_settings_slave_bridge[] = {
-	NM_META_SETTING_VALID_PART_ITEM (BRIDGE_PORT, TRUE),
-	NULL,
+    NM_META_SETTING_VALID_PART_ITEM(BRIDGE_PORT, TRUE),
+    NULL,
 };
 
 static const NMMetaSettingValidPartItem *const valid_settings_slave_ovs_bridge[] = {
-	NM_META_SETTING_VALID_PART_ITEM (OVS_PORT, FALSE),
-	NULL,
+    NM_META_SETTING_VALID_PART_ITEM(OVS_PORT, FALSE),
+    NULL,
 };
 
 static const NMMetaSettingValidPartItem *const valid_settings_slave_ovs_port[] = {
-	NM_META_SETTING_VALID_PART_ITEM (OVS_INTERFACE, FALSE),
-	NULL,
+    NM_META_SETTING_VALID_PART_ITEM(OVS_INTERFACE, FALSE),
+    NULL,
 };
 
 static const NMMetaSettingValidPartItem *const valid_settings_slave_team[] = {
-	NM_META_SETTING_VALID_PART_ITEM (TEAM_PORT, TRUE),
-	NULL,
+    NM_META_SETTING_VALID_PART_ITEM(TEAM_PORT, TRUE),
+    NULL,
 };
 
-const NMMetaSettingValidPartItem *const*
-nm_meta_setting_info_valid_parts_for_slave_type (const char *slave_type, const char **out_slave_name)
-{
-	if (!slave_type) {
-		NM_SET_OUT (out_slave_name, NULL);
-		return valid_settings_noslave;
-	}
-	if (nm_streq (slave_type, NM_SETTING_BOND_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "bond-slave");
-		return NM_PTRARRAY_EMPTY (const NMMetaSettingValidPartItem *);
-	}
-	if (nm_streq (slave_type, NM_SETTING_BRIDGE_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "bridge-slave");
-		return valid_settings_slave_bridge;
-	}
-	if (nm_streq (slave_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "ovs-slave");
-		return valid_settings_slave_ovs_bridge;
-	}
-	if (nm_streq (slave_type, NM_SETTING_OVS_PORT_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "ovs-slave");
-		return valid_settings_slave_ovs_port;
-	}
-	if (nm_streq (slave_type, NM_SETTING_TEAM_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "team-slave");
-		return valid_settings_slave_team;
-	}
-	if (nm_streq (slave_type, NM_SETTING_VRF_SETTING_NAME)) {
-		NM_SET_OUT (out_slave_name, "vrf-slave");
-		return valid_settings_noslave;
-	}
-	return NULL;
+const NMMetaSettingValidPartItem *const *
+nm_meta_setting_info_valid_parts_for_slave_type(const char *slave_type, const char **out_slave_name)
+{
+    if (!slave_type) {
+        NM_SET_OUT(out_slave_name, NULL);
+        return valid_settings_noslave;
+    }
+    if (nm_streq(slave_type, NM_SETTING_BOND_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "bond-slave");
+        return NM_PTRARRAY_EMPTY(const NMMetaSettingValidPartItem *);
+    }
+    if (nm_streq(slave_type, NM_SETTING_BRIDGE_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "bridge-slave");
+        return valid_settings_slave_bridge;
+    }
+    if (nm_streq(slave_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "ovs-slave");
+        return valid_settings_slave_ovs_bridge;
+    }
+    if (nm_streq(slave_type, NM_SETTING_OVS_PORT_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "ovs-slave");
+        return valid_settings_slave_ovs_port;
+    }
+    if (nm_streq(slave_type, NM_SETTING_TEAM_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "team-slave");
+        return valid_settings_slave_team;
+    }
+    if (nm_streq(slave_type, NM_SETTING_VRF_SETTING_NAME)) {
+        NM_SET_OUT(out_slave_name, "vrf-slave");
+        return valid_settings_noslave;
+    }
+    return NULL;
 }
 
 /*****************************************************************************/
 
 static const char *
-_meta_type_setting_info_editor_get_name (const NMMetaAbstractInfo *abstract_info, gboolean for_header)
+_meta_type_setting_info_editor_get_name(const NMMetaAbstractInfo *abstract_info,
+                                        gboolean                  for_header)
 {
-	if (for_header)
-		return N_("name");
-	return ((const NMMetaSettingInfoEditor *) abstract_info)->general->setting_name;
+    if (for_header)
+        return N_("name");
+    return ((const NMMetaSettingInfoEditor *) abstract_info)->general->setting_name;
 }
 
 static const char *
-_meta_type_property_info_get_name (const NMMetaAbstractInfo *abstract_info, gboolean for_header)
+_meta_type_property_info_get_name(const NMMetaAbstractInfo *abstract_info, gboolean for_header)
 {
-	return ((const NMMetaPropertyInfo *) abstract_info)->property_name;
+    return ((const NMMetaPropertyInfo *) abstract_info)->property_name;
 }
 
 static gconstpointer
-_meta_type_setting_info_editor_get_fcn (const NMMetaAbstractInfo *abstract_info,
-                                        const NMMetaEnvironment *environment,
-                                        gpointer environment_user_data,
-                                        gpointer target,
-                                        gpointer target_data,
-                                        NMMetaAccessorGetType get_type,
-                                        NMMetaAccessorGetFlags get_flags,
-                                        NMMetaAccessorGetOutFlags *out_flags,
-                                        gboolean *out_is_default,
-                                        gpointer *out_to_free)
+_meta_type_setting_info_editor_get_fcn(const NMMetaAbstractInfo * abstract_info,
+                                       const NMMetaEnvironment *  environment,
+                                       gpointer                   environment_user_data,
+                                       gpointer                   target,
+                                       gpointer                   target_data,
+                                       NMMetaAccessorGetType      get_type,
+                                       NMMetaAccessorGetFlags     get_flags,
+                                       NMMetaAccessorGetOutFlags *out_flags,
+                                       gboolean *                 out_is_default,
+                                       gpointer *                 out_to_free)
 {
-	const NMMetaSettingInfoEditor *info = (const NMMetaSettingInfoEditor *) abstract_info;
+    const NMMetaSettingInfoEditor *info = (const NMMetaSettingInfoEditor *) abstract_info;
 
-	nm_assert (!out_to_free || !*out_to_free);
-	nm_assert (out_flags && !*out_flags);
-	nm_assert (!target_data);
+    nm_assert(!out_to_free || !*out_to_free);
+    nm_assert(out_flags && !*out_flags);
+    nm_assert(!target_data);
 
-	if (!NM_IN_SET (get_type,
-	                NM_META_ACCESSOR_GET_TYPE_PARSABLE,
-	                NM_META_ACCESSOR_GET_TYPE_PRETTY))
-		return NULL;
+    if (!NM_IN_SET(get_type, NM_META_ACCESSOR_GET_TYPE_PARSABLE, NM_META_ACCESSOR_GET_TYPE_PRETTY))
+        return NULL;
 
-	nm_assert (out_to_free);
+    nm_assert(out_to_free);
 
-	return info->general->setting_name;
+    return info->general->setting_name;
 }
 
 static gconstpointer
-_meta_type_property_info_get_fcn (const NMMetaAbstractInfo *abstract_info,
-                                  const NMMetaEnvironment *environment,
-                                  gpointer environment_user_data,
-                                  gpointer target,
-                                  gpointer target_data,
-                                  NMMetaAccessorGetType get_type,
-                                  NMMetaAccessorGetFlags get_flags,
-                                  NMMetaAccessorGetOutFlags *out_flags,
-                                  gboolean *out_is_default,
-                                  gpointer *out_to_free)
+_meta_type_property_info_get_fcn(const NMMetaAbstractInfo * abstract_info,
+                                 const NMMetaEnvironment *  environment,
+                                 gpointer                   environment_user_data,
+                                 gpointer                   target,
+                                 gpointer                   target_data,
+                                 NMMetaAccessorGetType      get_type,
+                                 NMMetaAccessorGetFlags     get_flags,
+                                 NMMetaAccessorGetOutFlags *out_flags,
+                                 gboolean *                 out_is_default,
+                                 gpointer *                 out_to_free)
 {
-	const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info;
-	gboolean is_default_local = FALSE;
-	gconstpointer r;
-
-	nm_assert (!out_to_free || !*out_to_free);
-	nm_assert (out_flags && !*out_flags);
+    const NMMetaPropertyInfo *info             = (const NMMetaPropertyInfo *) abstract_info;
+    gboolean                  is_default_local = FALSE;
+    gconstpointer             r;
 
-	if (!NM_IN_SET (get_type,
-	                NM_META_ACCESSOR_GET_TYPE_PARSABLE,
-	                NM_META_ACCESSOR_GET_TYPE_PRETTY))
-		return NULL;
+    nm_assert(!out_to_free || !*out_to_free);
+    nm_assert(out_flags && !*out_flags);
 
-	nm_assert (out_to_free);
+    if (!NM_IN_SET(get_type, NM_META_ACCESSOR_GET_TYPE_PARSABLE, NM_META_ACCESSOR_GET_TYPE_PRETTY))
+        return NULL;
 
-	if (   info->is_secret
-	    && !NM_FLAGS_HAS (get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS)) {
-		NM_SET_OUT (out_is_default, TRUE);
-		return _get_text_hidden (get_type);
-	}
+    nm_assert(out_to_free);
 
-	if (   info->hide_if_default
-	    && !out_is_default)
-		out_is_default = &is_default_local;
+    if (info->is_secret && !NM_FLAGS_HAS(get_flags, NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS)) {
+        NM_SET_OUT(out_is_default, TRUE);
+        return _get_text_hidden(get_type);
+    }
 
-	r = info->property_type->get_fcn (info,
-	                                  environment,
-	                                  environment_user_data,
-	                                  target,
-	                                  get_type,
-	                                  get_flags,
-	                                  out_flags,
-	                                  out_is_default,
-	                                  out_to_free);
+    if (info->hide_if_default && !out_is_default)
+        out_is_default = &is_default_local;
 
-	if (   info->hide_if_default
-	    && *out_is_default)
-		*out_flags |= NM_META_ACCESSOR_GET_OUT_FLAGS_HIDE;
+    r = info->property_type->get_fcn(info,
+                                     environment,
+                                     environment_user_data,
+                                     target,
+                                     get_type,
+                                     get_flags,
+                                     out_flags,
+                                     out_is_default,
+                                     out_to_free);
 
-	return r;
+    if (info->hide_if_default && *out_is_default)
+        *out_flags |= NM_META_ACCESSOR_GET_OUT_FLAGS_HIDE;
 
+    return r;
 }
 
-static const NMMetaAbstractInfo *const*
-_meta_type_setting_info_editor_get_nested (const NMMetaAbstractInfo *abstract_info,
-                                           guint *out_len,
-                                           gpointer *out_to_free)
+static const NMMetaAbstractInfo *const *
+_meta_type_setting_info_editor_get_nested(const NMMetaAbstractInfo *abstract_info,
+                                          guint *                   out_len,
+                                          gpointer *                out_to_free)
 {
-	const NMMetaSettingInfoEditor *info;
+    const NMMetaSettingInfoEditor *info;
 
-	info = (const NMMetaSettingInfoEditor *) abstract_info;
+    info = (const NMMetaSettingInfoEditor *) abstract_info;
 
-	NM_SET_OUT (out_len, info->properties_num);
-	return (const NMMetaAbstractInfo *const*) info->properties;
+    NM_SET_OUT(out_len, info->properties_num);
+    return (const NMMetaAbstractInfo *const *) info->properties;
 }
 
-static const NMMetaAbstractInfo *const*
-_meta_type_property_info_get_nested (const NMMetaAbstractInfo *abstract_info,
-                                     guint *out_len,
-                                     gpointer *out_to_free)
+static const NMMetaAbstractInfo *const *
+_meta_type_property_info_get_nested(const NMMetaAbstractInfo *abstract_info,
+                                    guint *                   out_len,
+                                    gpointer *                out_to_free)
 {
-	NM_SET_OUT (out_len, 0);
-	return NULL;
+    NM_SET_OUT(out_len, 0);
+    return NULL;
 }
 
-static const char *const*
-_meta_type_property_info_complete_fcn (const NMMetaAbstractInfo *abstract_info,
-                                       const NMMetaEnvironment *environment,
-                                       gpointer environment_user_data,
-                                       const NMMetaOperationContext *operation_context,
-                                       const char *text,
-                                       gboolean *out_complete_filename,
-                                       char ***out_to_free)
+static const char *const *
+_meta_type_property_info_complete_fcn(const NMMetaAbstractInfo *    abstract_info,
+                                      const NMMetaEnvironment *     environment,
+                                      gpointer                      environment_user_data,
+                                      const NMMetaOperationContext *operation_context,
+                                      const char *                  text,
+                                      gboolean *                    out_complete_filename,
+                                      char ***                      out_to_free)
 {
-	const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info;
+    const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info;
 
-	nm_assert (out_to_free && !*out_to_free);
+    nm_assert(out_to_free && !*out_to_free);
 
-	if (info->property_type->complete_fcn) {
-		return info->property_type->complete_fcn (info,
-		                                          environment,
-		                                          environment_user_data,
-		                                          operation_context,
-		                                          text,
-		                                          out_complete_filename,
-		                                          out_to_free);
-	}
+    if (info->property_type->complete_fcn) {
+        return info->property_type->complete_fcn(info,
+                                                 environment,
+                                                 environment_user_data,
+                                                 operation_context,
+                                                 text,
+                                                 out_complete_filename,
+                                                 out_to_free);
+    }
 
-	if (info->property_type->values_fcn) {
-		return info->property_type->values_fcn (info,
-		                                        out_to_free);
-	}
+    if (info->property_type->values_fcn) {
+        return info->property_type->values_fcn(info, out_to_free);
+    }
 
-	if (   info->property_typ_data
-	    && info->property_typ_data->values_static)
-		return info->property_typ_data->values_static;
+    if (info->property_typ_data && info->property_typ_data->values_static)
+        return info->property_typ_data->values_static;
 
-	return NULL;
+    return NULL;
 }
 
 const NMMetaType nm_meta_type_setting_info_editor = {
-	.type_name =         "setting_info_editor",
-	.get_name =          _meta_type_setting_info_editor_get_name,
-	.get_nested =        _meta_type_setting_info_editor_get_nested,
-	.get_fcn =           _meta_type_setting_info_editor_get_fcn,
+    .type_name  = "setting_info_editor",
+    .get_name   = _meta_type_setting_info_editor_get_name,
+    .get_nested = _meta_type_setting_info_editor_get_nested,
+    .get_fcn    = _meta_type_setting_info_editor_get_fcn,
 };
 
 const NMMetaType nm_meta_type_property_info = {
-	.type_name =        "property_info",
-	.get_name =         _meta_type_property_info_get_name,
-	.get_nested =       _meta_type_property_info_get_nested,
-	.get_fcn =          _meta_type_property_info_get_fcn,
-	.complete_fcn =     _meta_type_property_info_complete_fcn,
+    .type_name    = "property_info",
+    .get_name     = _meta_type_property_info_get_name,
+    .get_nested   = _meta_type_property_info_get_nested,
+    .get_fcn      = _meta_type_property_info_get_fcn,
+    .complete_fcn = _meta_type_property_info_complete_fcn,
 };
 
 const NMMetaType nm_meta_type_nested_property_info = {
-	.type_name =        "nested_property_info",
+    .type_name = "nested_property_info",
 };