summary refs log tree commit diff
path: root/libnm/nm-ip-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm/nm-ip-config.c')
-rw-r--r--libnm/nm-ip-config.c877
1 files changed, 462 insertions, 415 deletions
diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c
index f214cdc4..5877e212 100644
--- a/libnm/nm-ip-config.c
+++ b/libnm/nm-ip-config.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2007 - 2011 Novell, Inc.
  * Copyright (C) 2008 - 2014 Red Hat, Inc.
@@ -18,443 +18,490 @@
 
 /*****************************************************************************/
 
-NM_GOBJECT_PROPERTIES_DEFINE (NMIPConfig,
-	PROP_FAMILY,
-	PROP_GATEWAY,
-	PROP_ADDRESSES,
-	PROP_ROUTES,
-	PROP_NAMESERVERS,
-	PROP_DOMAINS,
-	PROP_SEARCHES,
-	PROP_WINS_SERVERS,
-);
+NM_GOBJECT_PROPERTIES_DEFINE(NMIPConfig,
+                             PROP_FAMILY,
+                             PROP_GATEWAY,
+                             PROP_ADDRESSES,
+                             PROP_ROUTES,
+                             PROP_NAMESERVERS,
+                             PROP_DOMAINS,
+                             PROP_SEARCHES,
+                             PROP_WINS_SERVERS, );
 
 typedef struct _NMIPConfigPrivate {
-	GPtrArray *addresses;
-	GPtrArray *routes;
-	char **nameservers;
-	char **domains;
-	char **searches;
-	char **wins_servers;
-	char *gateway;
-
-	bool addresses_new_style:1;
-	bool routes_new_style:1;
-	bool nameservers_new_style:1;
-	bool wins_servers_new_style:1;
+    GPtrArray *addresses;
+    GPtrArray *routes;
+    char **    nameservers;
+    char **    domains;
+    char **    searches;
+    char **    wins_servers;
+    char *     gateway;
+
+    bool addresses_new_style : 1;
+    bool routes_new_style : 1;
+    bool nameservers_new_style : 1;
+    bool wins_servers_new_style : 1;
 } NMIPConfigPrivate;
 
-G_DEFINE_ABSTRACT_TYPE (NMIPConfig, nm_ip_config, NM_TYPE_OBJECT)
+G_DEFINE_ABSTRACT_TYPE(NMIPConfig, nm_ip_config, NM_TYPE_OBJECT)
 
-#define NM_IP_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE_PTR(self, NMIPConfig, NM_IS_IP_CONFIG, NMObject)
+#define NM_IP_CONFIG_GET_PRIVATE(self) \
+    _NM_GET_PRIVATE_PTR(self, NMIPConfig, NM_IS_IP_CONFIG, NMObject)
 
 /*****************************************************************************/
 
 static NMLDBusNotifyUpdatePropFlags
-_notify_update_prop_addresses (NMClient *client,
-                               NMLDBusObject *dbobj,
-                               const NMLDBusMetaIface *meta_iface,
-                               guint dbus_property_idx,
-                               GVariant *value)
+_notify_update_prop_addresses(NMClient *              client,
+                              NMLDBusObject *         dbobj,
+                              const NMLDBusMetaIface *meta_iface,
+                              guint                   dbus_property_idx,
+                              GVariant *              value)
 {
-	NMIPConfig *self = NM_IP_CONFIG (dbobj->nmobj);
-	NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE (self);
-	gs_unref_ptrarray GPtrArray *addresses_old = NULL;
-	gs_unref_ptrarray GPtrArray *addresses_new = NULL;
-	int addr_family =   meta_iface == &_nml_dbus_meta_iface_nm_ip4config
-	                  ? AF_INET : AF_INET6;
-	gboolean new_style;
-
-	new_style = (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[2] == '{');
-
-	if (priv->addresses_new_style) {
-		if (!new_style)
-			return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
-	} else
-		priv->addresses_new_style = new_style;
-
-	if (value) {
-		if (new_style)
-			addresses_new = nm_utils_ip_addresses_from_variant (value, addr_family);
-		else if (addr_family == AF_INET)
-			addresses_new = nm_utils_ip4_addresses_from_variant (value, NULL);
-		else
-			addresses_new = nm_utils_ip6_addresses_from_variant (value, NULL);
-		nm_assert (addresses_new);
-	}
-	if (!addresses_new)
-		addresses_new = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref);
-
-	addresses_old = priv->addresses;
-	priv->addresses = g_steal_pointer (&addresses_new);
-	return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
+    NMIPConfig *       self                    = NM_IP_CONFIG(dbobj->nmobj);
+    NMIPConfigPrivate *priv                    = NM_IP_CONFIG_GET_PRIVATE(self);
+    gs_unref_ptrarray GPtrArray *addresses_old = NULL;
+    gs_unref_ptrarray GPtrArray *addresses_new = NULL;
+    int      addr_family = meta_iface == &_nml_dbus_meta_iface_nm_ip4config ? AF_INET : AF_INET6;
+    gboolean new_style;
+
+    new_style =
+        (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[2] == '{');
+
+    if (priv->addresses_new_style) {
+        if (!new_style)
+            return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
+    } else
+        priv->addresses_new_style = new_style;
+
+    if (value) {
+        if (new_style)
+            addresses_new = nm_utils_ip_addresses_from_variant(value, addr_family);
+        else if (addr_family == AF_INET)
+            addresses_new = nm_utils_ip4_addresses_from_variant(value, NULL);
+        else
+            addresses_new = nm_utils_ip6_addresses_from_variant(value, NULL);
+        nm_assert(addresses_new);
+    }
+    if (!addresses_new)
+        addresses_new = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_address_unref);
+
+    addresses_old   = priv->addresses;
+    priv->addresses = g_steal_pointer(&addresses_new);
+    return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
 }
 
 static NMLDBusNotifyUpdatePropFlags
-_notify_update_prop_routes (NMClient *client,
-                            NMLDBusObject *dbobj,
-                            const NMLDBusMetaIface *meta_iface,
-                            guint dbus_property_idx,
-                            GVariant *value)
+_notify_update_prop_routes(NMClient *              client,
+                           NMLDBusObject *         dbobj,
+                           const NMLDBusMetaIface *meta_iface,
+                           guint                   dbus_property_idx,
+                           GVariant *              value)
 {
-	NMIPConfig *self = NM_IP_CONFIG (dbobj->nmobj);
-	NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE (self);
-	gs_unref_ptrarray GPtrArray *routes_old = NULL;
-	gs_unref_ptrarray GPtrArray *routes_new = NULL;
-	int addr_family =   meta_iface == &_nml_dbus_meta_iface_nm_ip4config
-	                  ? AF_INET : AF_INET6;
-	gboolean new_style;
-
-	new_style = (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[2] == '{');
-
-	if (priv->routes_new_style) {
-		if (!new_style)
-			return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
-	} else
-		priv->routes_new_style = new_style;
-
-	if (value) {
-		if (new_style)
-			routes_new = nm_utils_ip_routes_from_variant (value, addr_family);
-		else if (addr_family == AF_INET)
-			routes_new = nm_utils_ip4_routes_from_variant (value);
-		else
-			routes_new = nm_utils_ip6_routes_from_variant (value);
-		nm_assert (routes_new);
-	}
-	if (!routes_new)
-		routes_new = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_route_unref);
-
-	routes_old = priv->routes;
-	priv->routes = g_steal_pointer (&routes_new);
-	return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
+    NMIPConfig *       self                 = NM_IP_CONFIG(dbobj->nmobj);
+    NMIPConfigPrivate *priv                 = NM_IP_CONFIG_GET_PRIVATE(self);
+    gs_unref_ptrarray GPtrArray *routes_old = NULL;
+    gs_unref_ptrarray GPtrArray *routes_new = NULL;
+    int      addr_family = meta_iface == &_nml_dbus_meta_iface_nm_ip4config ? AF_INET : AF_INET6;
+    gboolean new_style;
+
+    new_style =
+        (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[2] == '{');
+
+    if (priv->routes_new_style) {
+        if (!new_style)
+            return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
+    } else
+        priv->routes_new_style = new_style;
+
+    if (value) {
+        if (new_style)
+            routes_new = nm_utils_ip_routes_from_variant(value, addr_family);
+        else if (addr_family == AF_INET)
+            routes_new = nm_utils_ip4_routes_from_variant(value);
+        else
+            routes_new = nm_utils_ip6_routes_from_variant(value);
+        nm_assert(routes_new);
+    }
+    if (!routes_new)
+        routes_new = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_route_unref);
+
+    routes_old   = priv->routes;
+    priv->routes = g_steal_pointer(&routes_new);
+    return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
 }
 
 static NMLDBusNotifyUpdatePropFlags
-_notify_update_prop_nameservers (NMClient *client,
-                                 NMLDBusObject *dbobj,
-                                 const NMLDBusMetaIface *meta_iface,
-                                 guint dbus_property_idx,
-                                 GVariant *value)
+_notify_update_prop_nameservers(NMClient *              client,
+                                NMLDBusObject *         dbobj,
+                                const NMLDBusMetaIface *meta_iface,
+                                guint                   dbus_property_idx,
+                                GVariant *              value)
 {
-	NMIPConfig *self = NM_IP_CONFIG (dbobj->nmobj);
-	NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE (self);
-	gs_strfreev char **nameservers_new = NULL;
-	gboolean new_style = TRUE;
-	int addr_family =   meta_iface == &_nml_dbus_meta_iface_nm_ip4config
-	                  ? AF_INET : AF_INET6;
-
-	if (addr_family == AF_INET) {
-		new_style = (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[1] == 'a');
-
-		if (priv->nameservers_new_style) {
-			if (!new_style)
-				return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
-		} else
-			priv->nameservers_new_style = new_style;
-	}
-
-	if (value) {
-		if (addr_family == AF_INET6)
-			nameservers_new = nm_utils_ip6_dns_from_variant (value);
-		else if (!new_style)
-			nameservers_new = nm_utils_ip4_dns_from_variant (value);
-		else {
-			GVariantIter iter;
-			GVariantIter *iter_v;
-			gs_unref_ptrarray GPtrArray *arr = NULL;
-
-			g_variant_iter_init (&iter, value);
-			while (g_variant_iter_next (&iter, "a{sv}", &iter_v)) {
-				const char *key;
-				GVariant *val;
-
-				while (g_variant_iter_next (iter_v, "{&sv}", &key, &val)) {
-					if (nm_streq (key, "address")) {
-						gs_free char *val_str = NULL;
-
-						if (!g_variant_is_of_type (val, G_VARIANT_TYPE_STRING))
-							goto next;
-						if (!nm_utils_parse_inaddr (AF_INET, g_variant_get_string (val, NULL), &val_str))
-							goto next;
-						if (!arr)
-							arr = g_ptr_array_new ();
-						g_ptr_array_add (arr, g_steal_pointer (&val_str));
-						goto next;
-					}
+    NMIPConfig *       self            = NM_IP_CONFIG(dbobj->nmobj);
+    NMIPConfigPrivate *priv            = NM_IP_CONFIG_GET_PRIVATE(self);
+    gs_strfreev char **nameservers_new = NULL;
+    gboolean           new_style       = TRUE;
+    int addr_family = meta_iface == &_nml_dbus_meta_iface_nm_ip4config ? AF_INET : AF_INET6;
+
+    if (addr_family == AF_INET) {
+        new_style =
+            (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[1] == 'a');
+
+        if (priv->nameservers_new_style) {
+            if (!new_style)
+                return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
+        } else
+            priv->nameservers_new_style = new_style;
+    }
+
+    if (value) {
+        if (addr_family == AF_INET6)
+            nameservers_new = nm_utils_ip6_dns_from_variant(value);
+        else if (!new_style)
+            nameservers_new = nm_utils_ip4_dns_from_variant(value);
+        else {
+            GVariantIter      iter;
+            GVariantIter *    iter_v;
+            gs_unref_ptrarray GPtrArray *arr = NULL;
+
+            g_variant_iter_init(&iter, value);
+            while (g_variant_iter_next(&iter, "a{sv}", &iter_v)) {
+                const char *key;
+                GVariant *  val;
+
+                while (g_variant_iter_next(iter_v, "{&sv}", &key, &val)) {
+                    if (nm_streq(key, "address")) {
+                        gs_free char *val_str = NULL;
+
+                        if (!g_variant_is_of_type(val, G_VARIANT_TYPE_STRING))
+                            goto next;
+                        if (!nm_utils_parse_inaddr(AF_INET,
+                                                   g_variant_get_string(val, NULL),
+                                                   &val_str))
+                            goto next;
+                        if (!arr)
+                            arr = g_ptr_array_new();
+                        g_ptr_array_add(arr, g_steal_pointer(&val_str));
+                        goto next;
+                    }
 next:
-					g_variant_unref (val);
-				}
-				g_variant_iter_free (iter_v);
-			}
-			if (   arr
-			    && arr->len > 0)
-				nameservers_new = nm_utils_strv_dup (arr->pdata, arr->len, FALSE);
-			else
-				nameservers_new = g_new0 (char *, 1);
-		}
-		nm_assert (nameservers_new);
-	}
-
-	g_strfreev (priv->nameservers);
-	priv->nameservers = g_steal_pointer (&nameservers_new);
-	return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
+                    g_variant_unref(val);
+                }
+                g_variant_iter_free(iter_v);
+            }
+            if (arr && arr->len > 0)
+                nameservers_new = nm_utils_strv_dup((char **) arr->pdata, arr->len, FALSE);
+            else
+                nameservers_new = g_new0(char *, 1);
+        }
+        nm_assert(nameservers_new);
+    }
+
+    g_strfreev(priv->nameservers);
+    priv->nameservers = g_steal_pointer(&nameservers_new);
+    return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
 }
 
 static NMLDBusNotifyUpdatePropFlags
-_notify_update_prop_wins_servers (NMClient *client,
-                                  NMLDBusObject *dbobj,
-                                  const NMLDBusMetaIface *meta_iface,
-                                  guint dbus_property_idx,
-                                  GVariant *value)
+_notify_update_prop_wins_servers(NMClient *              client,
+                                 NMLDBusObject *         dbobj,
+                                 const NMLDBusMetaIface *meta_iface,
+                                 guint                   dbus_property_idx,
+                                 GVariant *              value)
 {
-	NMIPConfig *self = NM_IP_CONFIG (dbobj->nmobj);
-	NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE (self);
-	gs_strfreev char **wins_servers_new = NULL;
-	gboolean new_style;
-
-	new_style = (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[1] == 's');
-
-	if (priv->wins_servers_new_style) {
-		if (!new_style)
-			return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
-	} else
-		priv->wins_servers_new_style = new_style;
-
-	if (value) {
-		if (new_style)
-			wins_servers_new = g_variant_dup_strv (value, NULL);
-		else
-			wins_servers_new = nm_utils_ip4_dns_from_variant (value);
-		nm_assert (wins_servers_new);
-	}
-
-	g_strfreev (priv->wins_servers);
-	priv->wins_servers = g_steal_pointer (&wins_servers_new);
-	return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
+    NMIPConfig *       self             = NM_IP_CONFIG(dbobj->nmobj);
+    NMIPConfigPrivate *priv             = NM_IP_CONFIG_GET_PRIVATE(self);
+    gs_strfreev char **wins_servers_new = NULL;
+    gboolean           new_style;
+
+    new_style =
+        (((const char *) meta_iface->dbus_properties[dbus_property_idx].dbus_type)[1] == 's');
+
+    if (priv->wins_servers_new_style) {
+        if (!new_style)
+            return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NONE;
+    } else
+        priv->wins_servers_new_style = new_style;
+
+    if (value) {
+        if (new_style)
+            wins_servers_new = g_variant_dup_strv(value, NULL);
+        else
+            wins_servers_new = nm_utils_ip4_dns_from_variant(value);
+        nm_assert(wins_servers_new);
+    }
+
+    g_strfreev(priv->wins_servers);
+    priv->wins_servers = g_steal_pointer(&wins_servers_new);
+    return NML_DBUS_NOTIFY_UPDATE_PROP_FLAGS_NOTIFY;
 }
 
 /*****************************************************************************/
 
 static void
-get_property (GObject *object,
-              guint prop_id,
-              GValue *value,
-              GParamSpec *pspec)
+get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
-	NMIPConfig *self = NM_IP_CONFIG (object);
-
-	switch (prop_id) {
-	case PROP_FAMILY:
-		g_value_set_int (value, nm_ip_config_get_family (self));
-		break;
-	case PROP_GATEWAY:
-		g_value_set_string (value, nm_ip_config_get_gateway (self));
-		break;
-	case PROP_ADDRESSES:
-		g_value_take_boxed (value, _nm_utils_copy_array (nm_ip_config_get_addresses (self),
-		                                                 (NMUtilsCopyFunc) nm_ip_address_dup,
-		                                                 (GDestroyNotify) nm_ip_address_unref));
-		break;
-	case PROP_ROUTES:
-		g_value_take_boxed (value, _nm_utils_copy_array (nm_ip_config_get_routes (self),
-		                                                 (NMUtilsCopyFunc) nm_ip_route_dup,
-		                                                 (GDestroyNotify) nm_ip_route_unref));
-		break;
-	case PROP_NAMESERVERS:
-		g_value_set_boxed (value, (char **) nm_ip_config_get_nameservers (self));
-		break;
-	case PROP_DOMAINS:
-		g_value_set_boxed (value, (char **) nm_ip_config_get_domains (self));
-		break;
-	case PROP_SEARCHES:
-		g_value_set_boxed (value, (char **) nm_ip_config_get_searches (self));
-		break;
-	case PROP_WINS_SERVERS:
-		g_value_set_boxed (value, (char **) nm_ip_config_get_wins_servers (self));
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
+    NMIPConfig *self = NM_IP_CONFIG(object);
+
+    switch (prop_id) {
+    case PROP_FAMILY:
+        g_value_set_int(value, nm_ip_config_get_family(self));
+        break;
+    case PROP_GATEWAY:
+        g_value_set_string(value, nm_ip_config_get_gateway(self));
+        break;
+    case PROP_ADDRESSES:
+        g_value_take_boxed(value,
+                           _nm_utils_copy_array(nm_ip_config_get_addresses(self),
+                                                (NMUtilsCopyFunc) nm_ip_address_dup,
+                                                (GDestroyNotify) nm_ip_address_unref));
+        break;
+    case PROP_ROUTES:
+        g_value_take_boxed(value,
+                           _nm_utils_copy_array(nm_ip_config_get_routes(self),
+                                                (NMUtilsCopyFunc) nm_ip_route_dup,
+                                                (GDestroyNotify) nm_ip_route_unref));
+        break;
+    case PROP_NAMESERVERS:
+        g_value_set_boxed(value, (char **) nm_ip_config_get_nameservers(self));
+        break;
+    case PROP_DOMAINS:
+        g_value_set_boxed(value, (char **) nm_ip_config_get_domains(self));
+        break;
+    case PROP_SEARCHES:
+        g_value_set_boxed(value, (char **) nm_ip_config_get_searches(self));
+        break;
+    case PROP_WINS_SERVERS:
+        g_value_set_boxed(value, (char **) nm_ip_config_get_wins_servers(self));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        break;
+    }
 }
 
 /*****************************************************************************/
 
 static void
-nm_ip_config_init (NMIPConfig *self)
+nm_ip_config_init(NMIPConfig *self)
 {
-	NMIPConfigPrivate *priv;
+    NMIPConfigPrivate *priv;
 
-	priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_IP_CONFIG, NMIPConfigPrivate);
+    priv = G_TYPE_INSTANCE_GET_PRIVATE(self, NM_TYPE_IP_CONFIG, NMIPConfigPrivate);
 
-	self->_priv = priv;
+    self->_priv = priv;
 
-	priv->addresses = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_address_unref);
-	priv->routes = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_ip_route_unref);
+    priv->addresses = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_address_unref);
+    priv->routes    = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_route_unref);
 }
 
 static void
-finalize (GObject *object)
+finalize(GObject *object)
 {
-	NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE (object);
+    NMIPConfigPrivate *priv = NM_IP_CONFIG_GET_PRIVATE(object);
 
-	g_free (priv->gateway);
+    g_free(priv->gateway);
 
-	g_ptr_array_unref (priv->routes);
-	g_ptr_array_unref (priv->addresses);
+    g_ptr_array_unref(priv->routes);
+    g_ptr_array_unref(priv->addresses);
 
-	g_strfreev (priv->nameservers);
-	g_strfreev (priv->domains);
-	g_strfreev (priv->searches);
-	g_strfreev (priv->wins_servers);
+    g_strfreev(priv->nameservers);
+    g_strfreev(priv->domains);
+    g_strfreev(priv->searches);
+    g_strfreev(priv->wins_servers);
 
-	G_OBJECT_CLASS (nm_ip_config_parent_class)->finalize (object);
+    G_OBJECT_CLASS(nm_ip_config_parent_class)->finalize(object);
 }
 
-const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip4config = NML_DBUS_META_IFACE_INIT_PROP (
-	NM_DBUS_INTERFACE_IP4_CONFIG,
-	nm_ip4_config_get_type,
-	NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
-	NML_DBUS_META_IFACE_DBUS_PROPERTIES (
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("AddressData",    PROP_ADDRESSES,    "aa{sv}",          _notify_update_prop_addresses                                         ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("Addresses",      PROP_ADDRESSES,    "aau",             _notify_update_prop_addresses,    .obj_property_no_reverse_idx = TRUE ),
-		NML_DBUS_META_PROPERTY_INIT_TODO   ("DnsOptions",    "as"                                                                                                         ),
-		NML_DBUS_META_PROPERTY_INIT_TODO   ("DnsPriority",   "i"                                                                                                          ),
-		NML_DBUS_META_PROPERTY_INIT_AS     ("Domains",        PROP_DOMAINS,      NMIPConfigPrivate, domains                                                               ),
-		NML_DBUS_META_PROPERTY_INIT_S      ("Gateway",        PROP_GATEWAY,      NMIPConfigPrivate, gateway                                                               ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("NameserverData", PROP_NAMESERVERS,  "aa{sv}",          _notify_update_prop_nameservers                                       ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("Nameservers",    PROP_NAMESERVERS,  "au",              _notify_update_prop_nameservers,  .obj_property_no_reverse_idx = TRUE ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("RouteData",      PROP_ROUTES,       "aa{sv}",          _notify_update_prop_routes                                            ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("Routes",         PROP_ROUTES,       "aau",             _notify_update_prop_routes,       .obj_property_no_reverse_idx = TRUE ),
-		NML_DBUS_META_PROPERTY_INIT_AS     ("Searches",       PROP_SEARCHES,     NMIPConfigPrivate, searches                                                              ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("WinsServerData", PROP_WINS_SERVERS, "as",              _notify_update_prop_wins_servers                                      ),
-		NML_DBUS_META_PROPERTY_INIT_FCN    ("WinsServers",    PROP_WINS_SERVERS, "au",              _notify_update_prop_wins_servers, .obj_property_no_reverse_idx = TRUE ),
-	),
-	.base_struct_offset = G_STRUCT_OFFSET (NMIPConfig, _priv),
-);
-
-const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip6config = NML_DBUS_META_IFACE_INIT_PROP (
-	NM_DBUS_INTERFACE_IP6_CONFIG,
-	nm_ip6_config_get_type,
-	NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
-	NML_DBUS_META_IFACE_DBUS_PROPERTIES (
-		NML_DBUS_META_PROPERTY_INIT_FCN         ("AddressData", PROP_ADDRESSES,   "aa{sv}",          _notify_update_prop_addresses                                       ),
-		NML_DBUS_META_PROPERTY_INIT_FCN         ("Addresses",   PROP_ADDRESSES,   "a(ayuay)",        _notify_update_prop_addresses,  .obj_property_no_reverse_idx = TRUE ),
-		NML_DBUS_META_PROPERTY_INIT_TODO        ("DnsOptions",  "as"                                                                                                     ),
-		NML_DBUS_META_PROPERTY_INIT_TODO        ("DnsPriority", "i"                                                                                                      ),
-		NML_DBUS_META_PROPERTY_INIT_AS          ("Domains",     PROP_DOMAINS,     NMIPConfigPrivate, domains                                                             ),
-		NML_DBUS_META_PROPERTY_INIT_S           ("Gateway",     PROP_GATEWAY,     NMIPConfigPrivate, gateway                                                             ),
-		NML_DBUS_META_PROPERTY_INIT_FCN         ("Nameservers", PROP_NAMESERVERS, "aay",             _notify_update_prop_nameservers                                     ),
-		NML_DBUS_META_PROPERTY_INIT_FCN         ("RouteData",   PROP_ROUTES,      "aa{sv}",          _notify_update_prop_routes                                          ),
-		NML_DBUS_META_PROPERTY_INIT_FCN         ("Routes",      PROP_ROUTES,      "a(ayuayu)",       _notify_update_prop_routes,     .obj_property_no_reverse_idx = TRUE ),
-		NML_DBUS_META_PROPERTY_INIT_AS          ("Searches",    PROP_SEARCHES,    NMIPConfigPrivate, searches                                                            ),
-	),
-	.base_struct_offset = G_STRUCT_OFFSET (NMIPConfig, _priv),
-);
+const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip4config = NML_DBUS_META_IFACE_INIT_PROP(
+    NM_DBUS_INTERFACE_IP4_CONFIG,
+    nm_ip4_config_get_type,
+    NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+    NML_DBUS_META_IFACE_DBUS_PROPERTIES(
+        NML_DBUS_META_PROPERTY_INIT_FCN("AddressData",
+                                        PROP_ADDRESSES,
+                                        "aa{sv}",
+                                        _notify_update_prop_addresses),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Addresses",
+                                        PROP_ADDRESSES,
+                                        "aau",
+                                        _notify_update_prop_addresses,
+                                        .obj_property_no_reverse_idx = TRUE),
+        NML_DBUS_META_PROPERTY_INIT_TODO("DnsOptions", "as"),
+        NML_DBUS_META_PROPERTY_INIT_TODO("DnsPriority", "i"),
+        NML_DBUS_META_PROPERTY_INIT_AS("Domains", PROP_DOMAINS, NMIPConfigPrivate, domains),
+        NML_DBUS_META_PROPERTY_INIT_S("Gateway", PROP_GATEWAY, NMIPConfigPrivate, gateway),
+        NML_DBUS_META_PROPERTY_INIT_FCN("NameserverData",
+                                        PROP_NAMESERVERS,
+                                        "aa{sv}",
+                                        _notify_update_prop_nameservers),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Nameservers",
+                                        PROP_NAMESERVERS,
+                                        "au",
+                                        _notify_update_prop_nameservers,
+                                        .obj_property_no_reverse_idx = TRUE),
+        NML_DBUS_META_PROPERTY_INIT_FCN("RouteData",
+                                        PROP_ROUTES,
+                                        "aa{sv}",
+                                        _notify_update_prop_routes),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Routes",
+                                        PROP_ROUTES,
+                                        "aau",
+                                        _notify_update_prop_routes,
+                                        .obj_property_no_reverse_idx = TRUE),
+        NML_DBUS_META_PROPERTY_INIT_AS("Searches", PROP_SEARCHES, NMIPConfigPrivate, searches),
+        NML_DBUS_META_PROPERTY_INIT_FCN("WinsServerData",
+                                        PROP_WINS_SERVERS,
+                                        "as",
+                                        _notify_update_prop_wins_servers),
+        NML_DBUS_META_PROPERTY_INIT_FCN("WinsServers",
+                                        PROP_WINS_SERVERS,
+                                        "au",
+                                        _notify_update_prop_wins_servers,
+                                        .obj_property_no_reverse_idx = TRUE), ),
+    .base_struct_offset = G_STRUCT_OFFSET(NMIPConfig, _priv), );
+
+const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip6config = NML_DBUS_META_IFACE_INIT_PROP(
+    NM_DBUS_INTERFACE_IP6_CONFIG,
+    nm_ip6_config_get_type,
+    NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+    NML_DBUS_META_IFACE_DBUS_PROPERTIES(
+        NML_DBUS_META_PROPERTY_INIT_FCN("AddressData",
+                                        PROP_ADDRESSES,
+                                        "aa{sv}",
+                                        _notify_update_prop_addresses),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Addresses",
+                                        PROP_ADDRESSES,
+                                        "a(ayuay)",
+                                        _notify_update_prop_addresses,
+                                        .obj_property_no_reverse_idx = TRUE),
+        NML_DBUS_META_PROPERTY_INIT_TODO("DnsOptions", "as"),
+        NML_DBUS_META_PROPERTY_INIT_TODO("DnsPriority", "i"),
+        NML_DBUS_META_PROPERTY_INIT_AS("Domains", PROP_DOMAINS, NMIPConfigPrivate, domains),
+        NML_DBUS_META_PROPERTY_INIT_S("Gateway", PROP_GATEWAY, NMIPConfigPrivate, gateway),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Nameservers",
+                                        PROP_NAMESERVERS,
+                                        "aay",
+                                        _notify_update_prop_nameservers),
+        NML_DBUS_META_PROPERTY_INIT_FCN("RouteData",
+                                        PROP_ROUTES,
+                                        "aa{sv}",
+                                        _notify_update_prop_routes),
+        NML_DBUS_META_PROPERTY_INIT_FCN("Routes",
+                                        PROP_ROUTES,
+                                        "a(ayuayu)",
+                                        _notify_update_prop_routes,
+                                        .obj_property_no_reverse_idx = TRUE),
+        NML_DBUS_META_PROPERTY_INIT_AS("Searches", PROP_SEARCHES, NMIPConfigPrivate, searches), ),
+    .base_struct_offset = G_STRUCT_OFFSET(NMIPConfig, _priv), );
 
 static void
-nm_ip_config_class_init (NMIPConfigClass *config_class)
+nm_ip_config_class_init(NMIPConfigClass *config_class)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (config_class);
-
-	g_type_class_add_private (config_class, sizeof (NMIPConfigPrivate));
-
-	object_class->get_property = get_property;
-	object_class->finalize     = finalize;
-
-	/**
-	 * NMIPConfig:family:
-	 *
-	 * The IP address family of the configuration; either
-	 * <literal>AF_INET</literal> or <literal>AF_INET6</literal>.
-	 **/
-	obj_properties[PROP_FAMILY] =
-	    g_param_spec_int (NM_IP_CONFIG_FAMILY, "", "",
-	                      0, 255, AF_UNSPEC,
-	                      G_PARAM_READABLE |
-	                      G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:gateway:
-	 *
-	 * The IP gateway address of the configuration as string.
-	 **/
-	obj_properties[PROP_GATEWAY] =
-	    g_param_spec_string (NM_IP_CONFIG_GATEWAY, "", "",
-	                         NULL,
-	                         G_PARAM_READABLE |
-	                         G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:addresses:
-	 *
-	 * A #GPtrArray containing the addresses (#NMIPAddress) of the configuration.
-	 **/
-	obj_properties[PROP_ADDRESSES] =
-	    g_param_spec_boxed (NM_IP_CONFIG_ADDRESSES, "", "",
-	                        G_TYPE_PTR_ARRAY,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:routes: (type GPtrArray(NMIPRoute))
-	 *
-	 * A #GPtrArray containing the routes (#NMIPRoute) of the configuration.
-	 **/
-	obj_properties[PROP_ROUTES] =
-	    g_param_spec_boxed (NM_IP_CONFIG_ROUTES, "", "",
-	                        G_TYPE_PTR_ARRAY,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:nameservers:
-	 *
-	 * The array containing name server IP addresses of the configuration.
-	 **/
-	obj_properties[PROP_NAMESERVERS] =
-	    g_param_spec_boxed (NM_IP_CONFIG_NAMESERVERS, "", "",
-	                        G_TYPE_STRV,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:domains:
-	 *
-	 * The array containing domain strings of the configuration.
-	 **/
-	obj_properties[PROP_DOMAINS] =
-	    g_param_spec_boxed (NM_IP_CONFIG_DOMAINS, "", "",
-	                        G_TYPE_STRV,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:searches:
-	 *
-	 * The array containing DNS search strings of the configuration.
-	 **/
-	obj_properties[PROP_SEARCHES] =
-	    g_param_spec_boxed (NM_IP_CONFIG_SEARCHES, "", "",
-	                        G_TYPE_STRV,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	/**
-	 * NMIPConfig:wins-servers:
-	 *
-	 * The array containing WINS server IP addresses of the configuration.
-	 * (This will always be empty for IPv6 configurations.)
-	 **/
-	obj_properties[PROP_WINS_SERVERS] =
-	    g_param_spec_boxed (NM_IP_CONFIG_WINS_SERVERS, "", "",
-	                        G_TYPE_STRV,
-	                        G_PARAM_READABLE |
-	                        G_PARAM_STATIC_STRINGS);
-
-	_nml_dbus_meta_class_init_with_properties (object_class, &_nml_dbus_meta_iface_nm_ip4config,
-	                                                         &_nml_dbus_meta_iface_nm_ip6config);
+    GObjectClass *object_class = G_OBJECT_CLASS(config_class);
+
+    g_type_class_add_private(config_class, sizeof(NMIPConfigPrivate));
+
+    object_class->get_property = get_property;
+    object_class->finalize     = finalize;
+
+    /**
+     * NMIPConfig:family:
+     *
+     * The IP address family of the configuration; either
+     * <literal>AF_INET</literal> or <literal>AF_INET6</literal>.
+     **/
+    obj_properties[PROP_FAMILY] = g_param_spec_int(NM_IP_CONFIG_FAMILY,
+                                                   "",
+                                                   "",
+                                                   0,
+                                                   255,
+                                                   AF_UNSPEC,
+                                                   G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:gateway:
+     *
+     * The IP gateway address of the configuration as string.
+     **/
+    obj_properties[PROP_GATEWAY] = g_param_spec_string(NM_IP_CONFIG_GATEWAY,
+                                                       "",
+                                                       "",
+                                                       NULL,
+                                                       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:addresses:
+     *
+     * A #GPtrArray containing the addresses (#NMIPAddress) of the configuration.
+     **/
+    obj_properties[PROP_ADDRESSES] = g_param_spec_boxed(NM_IP_CONFIG_ADDRESSES,
+                                                        "",
+                                                        "",
+                                                        G_TYPE_PTR_ARRAY,
+                                                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:routes: (type GPtrArray(NMIPRoute))
+     *
+     * A #GPtrArray containing the routes (#NMIPRoute) of the configuration.
+     **/
+    obj_properties[PROP_ROUTES] = g_param_spec_boxed(NM_IP_CONFIG_ROUTES,
+                                                     "",
+                                                     "",
+                                                     G_TYPE_PTR_ARRAY,
+                                                     G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:nameservers:
+     *
+     * The array containing name server IP addresses of the configuration.
+     **/
+    obj_properties[PROP_NAMESERVERS] =
+        g_param_spec_boxed(NM_IP_CONFIG_NAMESERVERS,
+                           "",
+                           "",
+                           G_TYPE_STRV,
+                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:domains:
+     *
+     * The array containing domain strings of the configuration.
+     **/
+    obj_properties[PROP_DOMAINS] = g_param_spec_boxed(NM_IP_CONFIG_DOMAINS,
+                                                      "",
+                                                      "",
+                                                      G_TYPE_STRV,
+                                                      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:searches:
+     *
+     * The array containing DNS search strings of the configuration.
+     **/
+    obj_properties[PROP_SEARCHES] = g_param_spec_boxed(NM_IP_CONFIG_SEARCHES,
+                                                       "",
+                                                       "",
+                                                       G_TYPE_STRV,
+                                                       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    /**
+     * NMIPConfig:wins-servers:
+     *
+     * The array containing WINS server IP addresses of the configuration.
+     * (This will always be empty for IPv6 configurations.)
+     **/
+    obj_properties[PROP_WINS_SERVERS] =
+        g_param_spec_boxed(NM_IP_CONFIG_WINS_SERVERS,
+                           "",
+                           "",
+                           G_TYPE_STRV,
+                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+    _nml_dbus_meta_class_init_with_properties(object_class,
+                                              &_nml_dbus_meta_iface_nm_ip4config,
+                                              &_nml_dbus_meta_iface_nm_ip6config);
 }
 
 /**
@@ -467,11 +514,11 @@ nm_ip_config_class_init (NMIPConfigClass *config_class)
  * <literal>AF_INET6</literal>
  **/
 int
-nm_ip_config_get_family (NMIPConfig *config)
+nm_ip_config_get_family(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), AF_UNSPEC);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), AF_UNSPEC);
 
-	return NM_IS_IP4_CONFIG (config) ? AF_INET : AF_INET6;
+    return NM_IS_IP4_CONFIG(config) ? AF_INET : AF_INET6;
 }
 
 /**
@@ -483,11 +530,11 @@ nm_ip_config_get_family (NMIPConfig *config)
  * Returns: (transfer none): the IP address of the gateway.
  **/
 const char *
-nm_ip_config_get_gateway (NMIPConfig *config)
+nm_ip_config_get_gateway(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return _nml_coerce_property_str_not_empty (NM_IP_CONFIG_GET_PRIVATE (config)->gateway);
+    return _nml_coerce_property_str_not_empty(NM_IP_CONFIG_GET_PRIVATE(config)->gateway);
 }
 
 /**
@@ -502,11 +549,11 @@ nm_ip_config_get_gateway (NMIPConfig *config)
  * returned array and thus it is safe for callers to reference and keep using it.
  **/
 GPtrArray *
-nm_ip_config_get_addresses (NMIPConfig *config)
+nm_ip_config_get_addresses(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return NM_IP_CONFIG_GET_PRIVATE (config)->addresses;
+    return NM_IP_CONFIG_GET_PRIVATE(config)->addresses;
 }
 
 /**
@@ -517,12 +564,12 @@ nm_ip_config_get_addresses (NMIPConfig *config)
  *
  * Returns: (transfer none): the array of nameserver IP addresses
  **/
-const char *const*
-nm_ip_config_get_nameservers (NMIPConfig *config)
+const char *const *
+nm_ip_config_get_nameservers(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return _nml_coerce_property_strv_not_null (NM_IP_CONFIG_GET_PRIVATE (config)->nameservers);
+    return _nml_coerce_property_strv_not_null(NM_IP_CONFIG_GET_PRIVATE(config)->nameservers);
 }
 
 /**
@@ -534,12 +581,12 @@ nm_ip_config_get_nameservers (NMIPConfig *config)
  * Returns: (transfer none): the array of domains.
  * (This is never %NULL, though it may be 0-length).
  **/
-const char *const*
-nm_ip_config_get_domains (NMIPConfig *config)
+const char *const *
+nm_ip_config_get_domains(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return _nml_coerce_property_strv_not_null (NM_IP_CONFIG_GET_PRIVATE (config)->domains);
+    return _nml_coerce_property_strv_not_null(NM_IP_CONFIG_GET_PRIVATE(config)->domains);
 }
 
 /**
@@ -551,12 +598,12 @@ nm_ip_config_get_domains (NMIPConfig *config)
  * Returns: (transfer none): the array of DNS search strings.
  * (This is never %NULL, though it may be 0-length).
  **/
-const char *const*
-nm_ip_config_get_searches (NMIPConfig *config)
+const char *const *
+nm_ip_config_get_searches(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return _nml_coerce_property_strv_not_null (NM_IP_CONFIG_GET_PRIVATE (config)->searches);
+    return _nml_coerce_property_strv_not_null(NM_IP_CONFIG_GET_PRIVATE(config)->searches);
 }
 
 /**
@@ -568,12 +615,12 @@ nm_ip_config_get_searches (NMIPConfig *config)
  * Returns: (transfer none): the arry of WINS server IP address strings.
  * (This is never %NULL, though it may be 0-length.)
  **/
-const char *const*
-nm_ip_config_get_wins_servers (NMIPConfig *config)
+const char *const *
+nm_ip_config_get_wins_servers(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return _nml_coerce_property_strv_not_null (NM_IP_CONFIG_GET_PRIVATE (config)->wins_servers);
+    return _nml_coerce_property_strv_not_null(NM_IP_CONFIG_GET_PRIVATE(config)->wins_servers);
 }
 
 /**
@@ -589,9 +636,9 @@ nm_ip_config_get_wins_servers (NMIPConfig *config)
  *
  **/
 GPtrArray *
-nm_ip_config_get_routes (NMIPConfig *config)
+nm_ip_config_get_routes(NMIPConfig *config)
 {
-	g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL);
+    g_return_val_if_fail(NM_IS_IP_CONFIG(config), NULL);
 
-	return NM_IP_CONFIG_GET_PRIVATE (config)->routes;
+    return NM_IP_CONFIG_GET_PRIVATE(config)->routes;
 }