summary refs log tree commit diff
path: root/shared/nm-utils
diff options
context:
space:
mode:
Diffstat (limited to 'shared/nm-utils')
-rw-r--r--shared/nm-utils/nm-compat.c100
-rw-r--r--shared/nm-utils/nm-compat.h42
-rw-r--r--shared/nm-utils/nm-test-utils.h3792
-rw-r--r--shared/nm-utils/nm-vpn-editor-plugin-call.h218
-rw-r--r--shared/nm-utils/nm-vpn-plugin-macros.h87
-rw-r--r--shared/nm-utils/nm-vpn-plugin-utils.c224
-rw-r--r--shared/nm-utils/nm-vpn-plugin-utils.h27
7 files changed, 2326 insertions, 2164 deletions
diff --git a/shared/nm-utils/nm-compat.c b/shared/nm-utils/nm-compat.c
index 895d9550..f87ef6b9 100644
--- a/shared/nm-utils/nm-compat.c
+++ b/shared/nm-utils/nm-compat.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2017 Red Hat, Inc.
  */
@@ -10,71 +10,67 @@
 /*****************************************************************************/
 
 static void
-_get_keys_cb (const char *key, const char *val, gpointer user_data)
+_get_keys_cb(const char *key, const char *val, gpointer user_data)
 {
-	GPtrArray *a = user_data;
+    GPtrArray *a = user_data;
 
-	g_ptr_array_add (a, g_strdup (key));
+    g_ptr_array_add(a, g_strdup(key));
 }
 
 static const char **
-_get_keys (NMSettingVpn *setting,
-           gboolean is_secrets,
-           guint *out_length)
+_get_keys(NMSettingVpn *setting, gboolean is_secrets, guint *out_length)
 {
-	guint len;
-	const char **keys = NULL;
-	GPtrArray *a;
-
-	nm_assert (NM_IS_SETTING_VPN (setting));
-
-	if (is_secrets)
-		len = nm_setting_vpn_get_num_secrets (setting);
-	else
-		len = nm_setting_vpn_get_num_data_items (setting);
-
-	a = g_ptr_array_sized_new (len + 1);
-
-	if (is_secrets)
-		nm_setting_vpn_foreach_secret (setting, _get_keys_cb, a);
-	else
-		nm_setting_vpn_foreach_data_item (setting, _get_keys_cb, a);
-
-	len = a->len;
-	if (len) {
-		g_ptr_array_sort (a, nm_strcmp_p);
-		g_ptr_array_add (a, NULL);
-		keys = g_malloc (a->len * sizeof (gpointer));
-		memcpy (keys, a->pdata, a->len * sizeof (gpointer));
-
-		/* we need to cache the keys *somewhere*. */
-		g_object_set_qdata_full (G_OBJECT (setting),
-		                         is_secrets
-		                         ? NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_secret_keys")
-		                         : NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_data_keys"),
-		                         g_ptr_array_free (a, FALSE),
-		                         (GDestroyNotify) g_strfreev);
-	} else
-		g_ptr_array_free (a, TRUE);
-
-	NM_SET_OUT (out_length, len);
-	return keys;
+    guint        len;
+    const char **keys = NULL;
+    GPtrArray *  a;
+
+    nm_assert(NM_IS_SETTING_VPN(setting));
+
+    if (is_secrets)
+        len = nm_setting_vpn_get_num_secrets(setting);
+    else
+        len = nm_setting_vpn_get_num_data_items(setting);
+
+    a = g_ptr_array_sized_new(len + 1);
+
+    if (is_secrets)
+        nm_setting_vpn_foreach_secret(setting, _get_keys_cb, a);
+    else
+        nm_setting_vpn_foreach_data_item(setting, _get_keys_cb, a);
+
+    len = a->len;
+    if (len) {
+        g_ptr_array_sort(a, nm_strcmp_p);
+        g_ptr_array_add(a, NULL);
+        keys = g_malloc(a->len * sizeof(gpointer));
+        memcpy(keys, a->pdata, a->len * sizeof(gpointer));
+
+        /* we need to cache the keys *somewhere*. */
+        g_object_set_qdata_full(G_OBJECT(setting),
+                                is_secrets
+                                    ? NM_CACHED_QUARK("libnm._nm_setting_vpn_get_secret_keys")
+                                    : NM_CACHED_QUARK("libnm._nm_setting_vpn_get_data_keys"),
+                                g_ptr_array_free(a, FALSE),
+                                (GDestroyNotify) g_strfreev);
+    } else
+        g_ptr_array_free(a, TRUE);
+
+    NM_SET_OUT(out_length, len);
+    return keys;
 }
 
 const char **
-_nm_setting_vpn_get_data_keys (NMSettingVpn *setting,
-                               guint *out_length)
+_nm_setting_vpn_get_data_keys(NMSettingVpn *setting, guint *out_length)
 {
-	g_return_val_if_fail (NM_IS_SETTING_VPN (setting), NULL);
+    g_return_val_if_fail(NM_IS_SETTING_VPN(setting), NULL);
 
-	return _get_keys (setting, FALSE, out_length);
+    return _get_keys(setting, FALSE, out_length);
 }
 
 const char **
-_nm_setting_vpn_get_secret_keys (NMSettingVpn *setting,
-                                 guint *out_length)
+_nm_setting_vpn_get_secret_keys(NMSettingVpn *setting, guint *out_length)
 {
-	g_return_val_if_fail (NM_IS_SETTING_VPN (setting), NULL);
+    g_return_val_if_fail(NM_IS_SETTING_VPN(setting), NULL);
 
-	return _get_keys (setting, TRUE, out_length);
+    return _get_keys(setting, TRUE, out_length);
 }
diff --git a/shared/nm-utils/nm-compat.h b/shared/nm-utils/nm-compat.h
index 55f764c7..fb136a5b 100644
--- a/shared/nm-utils/nm-compat.h
+++ b/shared/nm-utils/nm-compat.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2017 Red Hat, Inc.
  */
@@ -8,30 +8,28 @@
 
 #include "nm-setting-vpn.h"
 
-const char **_nm_setting_vpn_get_data_keys (NMSettingVpn *setting,
-                                            guint *out_length);
+const char **_nm_setting_vpn_get_data_keys(NMSettingVpn *setting, guint *out_length);
 
-const char **_nm_setting_vpn_get_secret_keys (NMSettingVpn *setting,
-                                              guint *out_length);
+const char **_nm_setting_vpn_get_secret_keys(NMSettingVpn *setting, guint *out_length);
 
-#if NM_CHECK_VERSION (1, 11, 0)
-#define nm_setting_vpn_get_data_keys(setting, out_length) \
-	({ \
-		G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
-		nm_setting_vpn_get_data_keys (setting, out_length); \
-		G_GNUC_END_IGNORE_DEPRECATIONS \
-	})
-#define nm_setting_vpn_get_secret_keys(setting, out_length) \
-	({ \
-		G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
-		nm_setting_vpn_get_secret_keys (setting, out_length); \
-		G_GNUC_END_IGNORE_DEPRECATIONS \
-	})
+#if NM_CHECK_VERSION(1, 11, 0)
+    #define nm_setting_vpn_get_data_keys(setting, out_length)  \
+        ({                                                     \
+            G_GNUC_BEGIN_IGNORE_DEPRECATIONS                   \
+            nm_setting_vpn_get_data_keys(setting, out_length); \
+            G_GNUC_END_IGNORE_DEPRECATIONS                     \
+        })
+    #define nm_setting_vpn_get_secret_keys(setting, out_length)  \
+        ({                                                       \
+            G_GNUC_BEGIN_IGNORE_DEPRECATIONS                     \
+            nm_setting_vpn_get_secret_keys(setting, out_length); \
+            G_GNUC_END_IGNORE_DEPRECATIONS                       \
+        })
 #else
-#define nm_setting_vpn_get_data_keys(setting, out_length) \
-	_nm_setting_vpn_get_data_keys (setting, out_length)
-#define nm_setting_vpn_get_secret_keys(setting, out_length) \
-	_nm_setting_vpn_get_secret_keys (setting, out_length)
+    #define nm_setting_vpn_get_data_keys(setting, out_length) \
+        _nm_setting_vpn_get_data_keys(setting, out_length)
+    #define nm_setting_vpn_get_secret_keys(setting, out_length) \
+        _nm_setting_vpn_get_secret_keys(setting, out_length)
 #endif
 
 #endif /* __NM_COMPAT_H__ */
diff --git a/shared/nm-utils/nm-test-utils.h b/shared/nm-utils/nm-test-utils.h
index c270d2b9..9d484882 100644
--- a/shared/nm-utils/nm-test-utils.h
+++ b/shared/nm-utils/nm-test-utils.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2014 Red Hat, Inc.
  */
@@ -7,7 +7,7 @@
 #define __NM_TEST_UTILS_H__
 
 #if defined(NETWORKMANAGER_COMPILATION) && !defined(NETWORKMANAGER_COMPILATION_TEST)
-#error Need to mark the compilation with NETWORKMANAGER_COMPILATION_TEST.
+    #error Need to mark the compilation with NETWORKMANAGER_COMPILATION_TEST.
 #endif
 
 /*******************************************************************************
@@ -87,8 +87,8 @@
 #include "nm-default.h"
 
 #if defined(NM_ASSERT_NO_MSG) && NM_ASSERT_NO_MSG
-#undef g_return_if_fail_warning
-#undef g_assertion_message_expr
+    #undef g_return_if_fail_warning
+    #undef g_assertion_message_expr
 #endif
 
 #include <arpa/inet.h>
@@ -99,12 +99,12 @@
 #include <errno.h>
 
 #ifndef NM_TEST_UTILS_NO_LIBNM
-#include "nm-utils.h"
+    #include "nm-utils.h"
 #endif
 
 /*****************************************************************************/
 
-#define NMTST_G_RETURN_MSG_S(expr) "*: assertion '"NM_ASSERT_G_RETURN_EXPR(expr)"' failed"
+#define NMTST_G_RETURN_MSG_S(expr) "*: assertion '" NM_ASSERT_G_RETURN_EXPR(expr) "' failed"
 #define NMTST_G_RETURN_MSG(expr)   NMTST_G_RETURN_MSG_S(#expr)
 
 /*****************************************************************************/
@@ -112,72 +112,85 @@
 /* general purpose functions that have no dependency on other nmtst functions */
 
 #define nmtst_assert_error(error, expect_error_domain, expect_error_code, expect_error_pattern) \
-	G_STMT_START { \
-		GError *_error = (error); \
-		GQuark _expect_error_domain = (expect_error_domain); \
-		const char *_expect_error_pattern = (expect_error_pattern); \
-		\
-		if (_expect_error_domain) \
-			g_assert_error (_error, _expect_error_domain, (expect_error_code)); \
-		else \
-			g_assert (_error); \
-		g_assert (_error->message); \
-		if (   _expect_error_pattern \
-		    && !g_pattern_match_simple (_expect_error_pattern, _error->message)) { \
-			g_error ("%s:%d: error message does not have expected pattern '%s'. Instead it is '%s' (%s, %d)", \
-			         __FILE__, __LINE__, \
-			         _expect_error_pattern, _error->message, g_quark_to_string (_error->domain), _error->code); \
-		} \
-	} G_STMT_END
-
-#define NMTST_WAIT(max_wait_ms, wait) \
-	({ \
-		gboolean _not_expired = TRUE; \
-		const gint64 nmtst_wait_start_us = g_get_monotonic_time (); \
-		const gint64 nmtst_wait_duration_us = (max_wait_ms) * 1000L; \
-		const gint64 nmtst_wait_end_us = nmtst_wait_start_us + nmtst_wait_duration_us; \
-		gint64 _nmtst_wait_remaining_us = nmtst_wait_duration_us; \
-		int _nmtst_wait_iteration = 0; \
-		\
-		while (TRUE) { \
-			_nm_unused const gint64 nmtst_wait_remaining_us = _nmtst_wait_remaining_us; \
-			_nm_unused int nmtst_wait_iteration = _nmtst_wait_iteration++; \
-			\
-			{ wait }; \
-			_nmtst_wait_remaining_us = (nmtst_wait_end_us - g_get_monotonic_time ()); \
-			if (_nmtst_wait_remaining_us <= 0) { \
-				_not_expired = FALSE; \
-				break; \
-			} \
-		} \
-		_not_expired; \
-	})
-
-#define NMTST_WAIT_ASSERT(max_wait_ms, wait) \
-	G_STMT_START { \
-		if (!(NMTST_WAIT (max_wait_ms, wait))) \
-			g_assert_not_reached (); \
-	} G_STMT_END
-
-#define nmtst_assert_nonnull(command) \
-	({ \
-		typeof (*(command)) *_ptr = (command); \
-		\
-		g_assert (_ptr && (TRUE || (command))); \
-		_ptr; \
-	 })
+    G_STMT_START                                                                                \
+    {                                                                                           \
+        GError *    _error                = (error);                                            \
+        GQuark      _expect_error_domain  = (expect_error_domain);                              \
+        const char *_expect_error_pattern = (expect_error_pattern);                             \
+                                                                                                \
+        if (_expect_error_domain)                                                               \
+            g_assert_error(_error, _expect_error_domain, (expect_error_code));                  \
+        else                                                                                    \
+            g_assert(_error);                                                                   \
+        g_assert(_error->message);                                                              \
+        if (_expect_error_pattern                                                               \
+            && !g_pattern_match_simple(_expect_error_pattern, _error->message)) {               \
+            g_error("%s:%d: error message does not have expected pattern '%s'. Instead it is "  \
+                    "'%s' (%s, %d)",                                                            \
+                    __FILE__,                                                                   \
+                    __LINE__,                                                                   \
+                    _expect_error_pattern,                                                      \
+                    _error->message,                                                            \
+                    g_quark_to_string(_error->domain),                                          \
+                    _error->code);                                                              \
+        }                                                                                       \
+    }                                                                                           \
+    G_STMT_END
+
+#define NMTST_WAIT(max_wait_ms, wait)                                                         \
+    ({                                                                                        \
+        gboolean     _not_expired             = TRUE;                                         \
+        const gint64 nmtst_wait_start_us      = g_get_monotonic_time();                       \
+        const gint64 nmtst_wait_duration_us   = (max_wait_ms) *1000L;                         \
+        const gint64 nmtst_wait_end_us        = nmtst_wait_start_us + nmtst_wait_duration_us; \
+        gint64       _nmtst_wait_remaining_us = nmtst_wait_duration_us;                       \
+        int          _nmtst_wait_iteration    = 0;                                            \
+                                                                                              \
+        while (TRUE) {                                                                        \
+            _nm_unused const gint64 nmtst_wait_remaining_us = _nmtst_wait_remaining_us;       \
+            _nm_unused int          nmtst_wait_iteration    = _nmtst_wait_iteration++;        \
+                                                                                              \
+            {wait};                                                                           \
+            _nmtst_wait_remaining_us = (nmtst_wait_end_us - g_get_monotonic_time());          \
+            if (_nmtst_wait_remaining_us <= 0) {                                              \
+                _not_expired = FALSE;                                                         \
+                break;                                                                        \
+            }                                                                                 \
+        }                                                                                     \
+        _not_expired;                                                                         \
+    })
+
+#define NMTST_WAIT_ASSERT(max_wait_ms, wait)  \
+    G_STMT_START                              \
+    {                                         \
+        if (!(NMTST_WAIT(max_wait_ms, wait))) \
+            g_assert_not_reached();           \
+    }                                         \
+    G_STMT_END
+
+#define nmtst_assert_nonnull(command)          \
+    ({                                         \
+        typeof(*(command)) *_ptr = (command);  \
+                                               \
+        g_assert(_ptr && (TRUE || (command))); \
+        _ptr;                                  \
+    })
 
 #define nmtst_assert_success(success, error) \
-	G_STMT_START { \
-		g_assert_no_error (error); \
-		g_assert ((success)); \
-	} G_STMT_END
+    G_STMT_START                             \
+    {                                        \
+        g_assert_no_error(error);            \
+        g_assert((success));                 \
+    }                                        \
+    G_STMT_END
 
 #define nmtst_assert_no_success(success, error) \
-	G_STMT_START { \
-		g_assert (error); \
-		g_assert (!(success)); \
-	} G_STMT_END
+    G_STMT_START                                \
+    {                                           \
+        g_assert(error);                        \
+        g_assert(!(success));                   \
+    }                                           \
+    G_STMT_END
 
 /*****************************************************************************/
 
@@ -189,59 +202,59 @@
  * are returned. For a lot of functions, positive return values are unexpected
  * and a bug. This macro evaluates @r to success or failure, while asserting
  * that @r is not positive. */
-#define NMTST_NM_ERR_SUCCESS(r) \
-	({ \
-		const int _r = (r); \
-		\
-		if (_r >= 0) \
-			g_assert_cmpint (_r, ==, 0); \
-		(_r >= 0); \
-	})
+#define NMTST_NM_ERR_SUCCESS(r)         \
+    ({                                  \
+        const int _r = (r);             \
+                                        \
+        if (_r >= 0)                    \
+            g_assert_cmpint(_r, ==, 0); \
+        (_r >= 0);                      \
+    })
 
 /*****************************************************************************/
 
-struct __nmtst_internal
-{
-	GRand *rand0;
-	guint32 rand_seed;
-	GRand *rand;
-	gboolean is_debug;
-	gboolean assert_logging;
-	gboolean no_expect_message;
-	gboolean test_quick;
-	gboolean test_tap_log;
-	char *sudo_cmd;
-	char **orig_argv;
+struct __nmtst_internal {
+    GRand *  rand0;
+    guint32  rand_seed;
+    GRand *  rand;
+    gboolean is_debug;
+    gboolean assert_logging;
+    gboolean no_expect_message;
+    gboolean test_quick;
+    gboolean test_tap_log;
+    char *   sudo_cmd;
+    char **  orig_argv;
 };
 
 extern struct __nmtst_internal __nmtst_internal;
 
-#define NMTST_DEFINE() \
-struct __nmtst_internal __nmtst_internal = { 0 }; \
-\
-__attribute__ ((destructor)) static void \
-_nmtst_exit (void) \
-{ \
-	__nmtst_internal.assert_logging = FALSE; \
-	g_test_assert_expected_messages (); \
-	nmtst_free (); \
-}
+#define NMTST_DEFINE()                                        \
+    struct __nmtst_internal __nmtst_internal = {0};           \
+                                                              \
+    __attribute__((destructor)) static void _nmtst_exit(void) \
+    {                                                         \
+        __nmtst_internal.assert_logging = FALSE;              \
+        g_test_assert_expected_messages();                    \
+        nmtst_free();                                         \
+    }
 
 static inline gboolean
-nmtst_initialized (void)
+nmtst_initialized(void)
 {
-	return !!__nmtst_internal.rand0;
+    return !!__nmtst_internal.rand0;
 }
 
-#define __NMTST_LOG(cmd, ...) \
-	G_STMT_START { \
-		g_assert (nmtst_initialized ()); \
-		if (!__nmtst_internal.assert_logging || __nmtst_internal.no_expect_message) { \
-			cmd (__VA_ARGS__); \
-		} else { \
-			printf (_NM_UTILS_MACRO_FIRST (__VA_ARGS__) "\n" _NM_UTILS_MACRO_REST (__VA_ARGS__)); \
-		} \
-	} G_STMT_END
+#define __NMTST_LOG(cmd, ...)                                                                  \
+    G_STMT_START                                                                               \
+    {                                                                                          \
+        g_assert(nmtst_initialized());                                                         \
+        if (!__nmtst_internal.assert_logging || __nmtst_internal.no_expect_message) {          \
+            cmd(__VA_ARGS__);                                                                  \
+        } else {                                                                               \
+            printf(_NM_UTILS_MACRO_FIRST(__VA_ARGS__) "\n" _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
+        }                                                                                      \
+    }                                                                                          \
+    G_STMT_END
 
 /* split the string inplace at specific delimiters, allowing escaping with '\\'.
  * Returns a zero terminated array of pointers into @str.
@@ -249,739 +262,800 @@ nmtst_initialized (void)
  * The caller must g_free() the returned argv array.
  **/
 static inline char **
-nmtst_str_split (char *str, const char *delimiters)
-{
-	const char *d;
-	GArray *result = g_array_sized_new (TRUE, FALSE, sizeof (char *), 3);
-
-	g_assert (str);
-	g_assert (delimiters && !strchr (delimiters, '\\'));
-
-	while (*str) {
-		gsize i = 0, j = 0;
-
-		while (TRUE) {
-			char c = str[i];
-
-			if (c == '\0') {
-				str[j++] = 0;
-				break;
-			} else if (c == '\\') {
-				str[j++] = str[++i];
-				if (!str[i])
-					break;
-			} else {
-				for (d = delimiters; *d; d++) {
-					if (c == *d) {
-						str[j++] = 0;
-						i++;
-						goto BREAK_INNER_LOOPS;
-					}
-				}
-				str[j++] = c;
-			}
-			i++;
-		}
+nmtst_str_split(char *str, const char *delimiters)
+{
+    const char *d;
+    GArray *    result = g_array_sized_new(TRUE, FALSE, sizeof(char *), 3);
+
+    g_assert(str);
+    g_assert(delimiters && !strchr(delimiters, '\\'));
+
+    while (*str) {
+        gsize i = 0, j = 0;
+
+        while (TRUE) {
+            char c = str[i];
+
+            if (c == '\0') {
+                str[j++] = 0;
+                break;
+            } else if (c == '\\') {
+                str[j++] = str[++i];
+                if (!str[i])
+                    break;
+            } else {
+                for (d = delimiters; *d; d++) {
+                    if (c == *d) {
+                        str[j++] = 0;
+                        i++;
+                        goto BREAK_INNER_LOOPS;
+                    }
+                }
+                str[j++] = c;
+            }
+            i++;
+        }
 
 BREAK_INNER_LOOPS:
-		g_array_append_val (result, str);
-		str = &str[i];
-	}
+        g_array_append_val(result, str);
+        str = &str[i];
+    }
 
-	return (char **) g_array_free (result, FALSE);
+    return (char **) g_array_free(result, FALSE);
 }
 
 /* free instances allocated by nmtst (especially nmtst_init()) on shutdown
  * to release memory. After nmtst_free(), the test is uninitialized again. */
 static inline void
-nmtst_free (void)
+nmtst_free(void)
 {
-	if (!nmtst_initialized ())
-		return;
+    if (!nmtst_initialized())
+        return;
 
-	g_rand_free (__nmtst_internal.rand0);
-	if (__nmtst_internal.rand)
-		g_rand_free (__nmtst_internal.rand);
-	g_free (__nmtst_internal.sudo_cmd);
-	g_strfreev (__nmtst_internal.orig_argv);
+    g_rand_free(__nmtst_internal.rand0);
+    if (__nmtst_internal.rand)
+        g_rand_free(__nmtst_internal.rand);
+    g_free(__nmtst_internal.sudo_cmd);
+    g_strfreev(__nmtst_internal.orig_argv);
 
-	memset (&__nmtst_internal, 0, sizeof (__nmtst_internal));
+    memset(&__nmtst_internal, 0, sizeof(__nmtst_internal));
 }
 
 static inline void
-_nmtst_log_handler (const char    *log_domain,
-                    GLogLevelFlags log_level,
-                    const char    *message,
-                    gpointer       user_data)
+_nmtst_log_handler(const char *   log_domain,
+                   GLogLevelFlags log_level,
+                   const char *   message,
+                   gpointer       user_data)
 {
-	g_print ("%s\n", message);
+    g_print("%s\n", message);
 }
 
 static inline void
-__nmtst_init (int *argc, char ***argv, gboolean assert_logging, const char *log_level, const char *log_domains, gboolean *out_set_logging)
-{
-	const char *nmtst_debug;
-	gboolean is_debug = FALSE;
-	char *c_log_level = NULL, *c_log_domains = NULL;
-	char *sudo_cmd = NULL;
-	GArray *debug_messages = g_array_new (TRUE, FALSE, sizeof (char *));
-	int i;
-	gboolean no_expect_message = FALSE;
-	gboolean _out_set_logging;
-	gboolean test_quick = FALSE;
-	gboolean test_quick_set = FALSE;
-	gboolean test_quick_argv = FALSE;
-	gs_unref_ptrarray GPtrArray *p_tests = NULL;
-	gs_unref_ptrarray GPtrArray *s_tests = NULL;
-
-	if (!out_set_logging)
-		out_set_logging = &_out_set_logging;
-	*out_set_logging = FALSE;
-
-	g_assert (!nmtst_initialized ());
-
-	g_assert (!((!!argc) ^ (!!argv)));
-	g_assert (!argc || (g_strv_length (*argv) == *argc));
-	g_assert (!assert_logging || (!log_level && !log_domains));
+__nmtst_init(int *       argc,
+             char ***    argv,
+             gboolean    assert_logging,
+             const char *log_level,
+             const char *log_domains,
+             gboolean *  out_set_logging)
+{
+    const char *      nmtst_debug;
+    gboolean          is_debug    = FALSE;
+    char *            c_log_level = NULL, *c_log_domains = NULL;
+    char *            sudo_cmd       = NULL;
+    GArray *          debug_messages = g_array_new(TRUE, FALSE, sizeof(char *));
+    int               i;
+    gboolean          no_expect_message = FALSE;
+    gboolean          _out_set_logging;
+    gboolean          test_quick         = FALSE;
+    gboolean          test_quick_set     = FALSE;
+    gboolean          test_quick_argv    = FALSE;
+    gs_unref_ptrarray GPtrArray *p_tests = NULL;
+    gs_unref_ptrarray GPtrArray *s_tests = NULL;
+
+    if (!out_set_logging)
+        out_set_logging = &_out_set_logging;
+    *out_set_logging = FALSE;
+
+    g_assert(!nmtst_initialized());
+
+    g_assert(!((!!argc) ^ (!!argv)));
+    g_assert(!argc || (g_strv_length(*argv) == *argc));
+    g_assert(!assert_logging || (!log_level && !log_domains));
 
 #ifdef __NETWORKMANAGER_UTILS_H__
-	if (!nm_utils_get_testing_initialized ())
-		_nm_utils_set_testing (_NM_UTILS_TEST_GENERAL);
+    if (!nm_utils_get_testing_initialized())
+        _nm_utils_set_testing(_NM_UTILS_TEST_GENERAL);
 #endif
 
-	if (argc)
-		__nmtst_internal.orig_argv = g_strdupv (*argv);
-
-	__nmtst_internal.assert_logging = !!assert_logging;
-
-	nm_g_type_init ();
-
-	is_debug = g_test_verbose ();
-
-	nmtst_debug = g_getenv ("NMTST_DEBUG");
-	if (nmtst_debug) {
-		char **d_argv, **i_argv, *nmtst_debug_copy;
-
-		/* By setting then NMTST_DEBUG variable, @is_debug is set automatically.
-		 * This can be reverted with no-debug (on command line or environment variable). */
-		is_debug = TRUE;
-
-		nmtst_debug_copy = g_strdup (nmtst_debug);
-		d_argv = nmtst_str_split (nmtst_debug_copy, ",; \t\r\n");
-
-		for (i_argv = d_argv; *i_argv; i_argv++) {
-			const char *debug = *i_argv;
-
-			if (!g_ascii_strcasecmp (debug, "debug"))
-				is_debug = TRUE;
-			else if (!g_ascii_strcasecmp (debug, "no-debug")) {
-				/* when specifying the NMTST_DEBUG variable, we set is_debug to true. Use this flag to disable this
-				 * (e.g. for only setting the log-level, but not is_debug). */
-				is_debug = FALSE;
-			} else if (!g_ascii_strncasecmp (debug, "log-level=", strlen ("log-level="))) {
-				g_free (c_log_level);
-				log_level = c_log_level = g_strdup (&debug[strlen ("log-level=")]);
-			} else if (!g_ascii_strcasecmp (debug, "D")) {
-				/* shorthand for "log-level=TRACE,no-expect-message" */
-				g_free (c_log_level);
-				log_level = c_log_level = g_strdup ("TRACE");
-				no_expect_message = TRUE;
-			} else if (!g_ascii_strcasecmp (debug, "TRACE")) {
-				g_free (c_log_level);
-				log_level = c_log_level = g_strdup ("TRACE");
-			} else if (!g_ascii_strncasecmp (debug, "log-domains=", strlen ("log-domains="))) {
-				g_free (c_log_domains);
-				log_domains = c_log_domains = g_strdup (&debug[strlen ("log-domains=")]);
-			} else if (!g_ascii_strncasecmp (debug, "sudo-cmd=", strlen ("sudo-cmd="))) {
-				g_free (sudo_cmd);
-				sudo_cmd = g_strdup (&debug[strlen ("sudo-cmd=")]);
-			} else if (!g_ascii_strcasecmp (debug, "no-expect-message")) {
-				no_expect_message = TRUE;
-			} else if (!g_ascii_strncasecmp (debug, "p=", strlen ("p="))) {
-				if (!p_tests)
-					p_tests = g_ptr_array_new_with_free_func (g_free);
-				g_ptr_array_add (p_tests, g_strdup (&debug[strlen ("p=")]));
-			} else if (!g_ascii_strncasecmp (debug, "s=", strlen ("s="))) {
-				if (!s_tests)
-					s_tests = g_ptr_array_new_with_free_func (g_free);
-				g_ptr_array_add (s_tests, g_strdup (&debug[strlen ("s=")]));
-			} else if (!g_ascii_strcasecmp (debug, "slow") || !g_ascii_strcasecmp (debug, "thorough")) {
-				test_quick = FALSE;
-				test_quick_set = TRUE;
-			} else if (!g_ascii_strcasecmp (debug, "quick")) {
-				test_quick = TRUE;
-				test_quick_set = TRUE;
-			} else {
-				char *msg = g_strdup_printf (">>> nmtst: ignore unrecognized NMTST_DEBUG option \"%s\"", debug);
-
-				g_array_append_val (debug_messages, msg);
-			}
-		}
-
-		g_free (d_argv);
-		g_free (nmtst_debug_copy);
-	}
-
-	if (__nmtst_internal.orig_argv) {
-		char **a = __nmtst_internal.orig_argv;
-
-		for (; *a; a++) {
-			if (!g_ascii_strcasecmp (*a, "--debug"))
-				is_debug = TRUE;
-			else if (!g_ascii_strcasecmp (*a, "--no-debug"))
-				is_debug = FALSE;
-			else if (   !strcmp (*a, "-m=slow")
-			         || !strcmp (*a, "-m=thorough")
-			         || !strcmp (*a, "-m=quick")
-			         || (!strcmp (*a, "-m") && *(a+1)
-			                                && (   !strcmp (*(a+1), "quick")
-			                                    || !strcmp (*(a+1), "slow")
-			                                    || !strcmp (*(a+1), "thorough"))))
-				test_quick_argv = TRUE;
-			else if (strcmp (*a, "--tap") == 0)
-				__nmtst_internal.test_tap_log = TRUE;
-		}
-	}
-
-	if (!argc || g_test_initialized ()) {
-		if (p_tests || s_tests) {
-			char *msg = g_strdup_printf (">>> nmtst: ignore -p and -s options for test which calls g_test_init() itself");
-
-			g_array_append_val (debug_messages, msg);
-		}
-	} else {
-		/* We're intentionally assigning a value to static variables
-		 * s_tests_x and p_tests_x without using it afterwards, just
-		 * so that valgrind doesn't complain about the leak. */
-		NM_PRAGMA_WARNING_DISABLE("-Wunused-but-set-variable")
-
-		/* g_test_init() is a variadic function, so we cannot pass it
-		 * (variadic) arguments. If you need to pass additional parameters,
-		 * call nmtst_init() with argc==NULL and call g_test_init() yourself. */
-
-		/* g_test_init() sets g_log_set_always_fatal() for G_LOG_LEVEL_WARNING
-		 * and G_LOG_LEVEL_CRITICAL. So, beware that the test will fail if you
-		 * have any WARN or ERR log messages -- unless you g_test_expect_message(). */
-		GPtrArray *arg_array = g_ptr_array_new ();
-		gs_free char **arg_array_c = NULL;
-		int arg_array_n, j;
-		static char **s_tests_x, **p_tests_x;
-
-		if (*argc) {
-			for (i = 0; i < *argc; i++)
-				g_ptr_array_add (arg_array, (*argv)[i]);
-		} else
-			g_ptr_array_add (arg_array, "./test");
-
-		if (test_quick_set && !test_quick_argv)
-			g_ptr_array_add (arg_array, "-m=quick");
-
-		if (!__nmtst_internal.test_tap_log) {
-			for (i = 0; p_tests && i < p_tests->len; i++) {
-				g_ptr_array_add (arg_array, "-p");
-				g_ptr_array_add (arg_array, p_tests->pdata[i]);
-			}
-			for (i = 0; s_tests && i < s_tests->len; i++) {
-				g_ptr_array_add (arg_array, "-s");
-				g_ptr_array_add (arg_array, s_tests->pdata[i]);
-			}
-		} else if (p_tests || s_tests) {
-			char *msg = g_strdup_printf (">>> nmtst: ignore -p and -s options for tap-tests");
-
-			g_array_append_val (debug_messages, msg);
-		}
-
-		g_ptr_array_add (arg_array, NULL);
-
-		arg_array_n = arg_array->len - 1;
-		arg_array_c = (char **) g_ptr_array_free (arg_array, FALSE);
-
-		g_test_init (&arg_array_n, &arg_array_c, NULL);
-
-		if (*argc > 1) {
-			/* collaps argc/argv by removing the arguments detected
-			 * by g_test_init(). */
-			for (i = 1, j = 1; i < *argc; i++) {
-				if ((*argv)[i] == arg_array_c[j])
-					j++;
-				else
-					(*argv)[i] = NULL;
-			}
-			for (i = 1, j = 1; i < *argc; i++) {
-				if ((*argv)[i]) {
-					(*argv)[j++] = (*argv)[i];
-					if (i >= j)
-						(*argv)[i] = NULL;
-				}
-			}
-			*argc = j;
-		}
-
-		/* we must "leak" the test paths because they are not cloned by g_test_init(). */
-		if (!__nmtst_internal.test_tap_log) {
-			if (p_tests) {
-				p_tests_x = (char **) g_ptr_array_free (p_tests, FALSE);
-				p_tests = NULL;
-			}
-			if (s_tests) {
-				s_tests_x = (char **) g_ptr_array_free (s_tests, FALSE);
-				s_tests = NULL;
-			}
-		}
-
-		NM_PRAGMA_WARNING_REENABLE
-	}
-
-	if (test_quick_set)
-		__nmtst_internal.test_quick = test_quick;
-	else if (test_quick_argv)
-		__nmtst_internal.test_quick = g_test_quick ();
-	else {
+    if (argc)
+        __nmtst_internal.orig_argv = g_strdupv(*argv);
+
+    __nmtst_internal.assert_logging = !!assert_logging;
+
+    nm_g_type_init();
+
+    is_debug = g_test_verbose();
+
+    nmtst_debug = g_getenv("NMTST_DEBUG");
+    if (nmtst_debug) {
+        char **d_argv, **i_argv, *nmtst_debug_copy;
+
+        /* By setting then NMTST_DEBUG variable, @is_debug is set automatically.
+         * This can be reverted with no-debug (on command line or environment variable). */
+        is_debug = TRUE;
+
+        nmtst_debug_copy = g_strdup(nmtst_debug);
+        d_argv           = nmtst_str_split(nmtst_debug_copy, ",; \t\r\n");
+
+        for (i_argv = d_argv; *i_argv; i_argv++) {
+            const char *debug = *i_argv;
+
+            if (!g_ascii_strcasecmp(debug, "debug"))
+                is_debug = TRUE;
+            else if (!g_ascii_strcasecmp(debug, "no-debug")) {
+                /* when specifying the NMTST_DEBUG variable, we set is_debug to true. Use this flag to disable this
+                 * (e.g. for only setting the log-level, but not is_debug). */
+                is_debug = FALSE;
+            } else if (!g_ascii_strncasecmp(debug, "log-level=", strlen("log-level="))) {
+                g_free(c_log_level);
+                log_level = c_log_level = g_strdup(&debug[strlen("log-level=")]);
+            } else if (!g_ascii_strcasecmp(debug, "D")) {
+                /* shorthand for "log-level=TRACE,no-expect-message" */
+                g_free(c_log_level);
+                log_level = c_log_level = g_strdup("TRACE");
+                no_expect_message       = TRUE;
+            } else if (!g_ascii_strcasecmp(debug, "TRACE")) {
+                g_free(c_log_level);
+                log_level = c_log_level = g_strdup("TRACE");
+            } else if (!g_ascii_strncasecmp(debug, "log-domains=", strlen("log-domains="))) {
+                g_free(c_log_domains);
+                log_domains = c_log_domains = g_strdup(&debug[strlen("log-domains=")]);
+            } else if (!g_ascii_strncasecmp(debug, "sudo-cmd=", strlen("sudo-cmd="))) {
+                g_free(sudo_cmd);
+                sudo_cmd = g_strdup(&debug[strlen("sudo-cmd=")]);
+            } else if (!g_ascii_strcasecmp(debug, "no-expect-message")) {
+                no_expect_message = TRUE;
+            } else if (!g_ascii_strncasecmp(debug, "p=", strlen("p="))) {
+                if (!p_tests)
+                    p_tests = g_ptr_array_new_with_free_func(g_free);
+                g_ptr_array_add(p_tests, g_strdup(&debug[strlen("p=")]));
+            } else if (!g_ascii_strncasecmp(debug, "s=", strlen("s="))) {
+                if (!s_tests)
+                    s_tests = g_ptr_array_new_with_free_func(g_free);
+                g_ptr_array_add(s_tests, g_strdup(&debug[strlen("s=")]));
+            } else if (!g_ascii_strcasecmp(debug, "slow")
+                       || !g_ascii_strcasecmp(debug, "thorough")) {
+                test_quick     = FALSE;
+                test_quick_set = TRUE;
+            } else if (!g_ascii_strcasecmp(debug, "quick")) {
+                test_quick     = TRUE;
+                test_quick_set = TRUE;
+            } else {
+                char *msg =
+                    g_strdup_printf(">>> nmtst: ignore unrecognized NMTST_DEBUG option \"%s\"",
+                                    debug);
+
+                g_array_append_val(debug_messages, msg);
+            }
+        }
+
+        g_free(d_argv);
+        g_free(nmtst_debug_copy);
+    }
+
+    if (__nmtst_internal.orig_argv) {
+        char **a = __nmtst_internal.orig_argv;
+
+        for (; *a; a++) {
+            if (!g_ascii_strcasecmp(*a, "--debug"))
+                is_debug = TRUE;
+            else if (!g_ascii_strcasecmp(*a, "--no-debug"))
+                is_debug = FALSE;
+            else if (!strcmp(*a, "-m=slow") || !strcmp(*a, "-m=thorough") || !strcmp(*a, "-m=quick")
+                     || (!strcmp(*a, "-m") && *(a + 1)
+                         && (!strcmp(*(a + 1), "quick") || !strcmp(*(a + 1), "slow")
+                             || !strcmp(*(a + 1), "thorough"))))
+                test_quick_argv = TRUE;
+            else if (strcmp(*a, "--tap") == 0)
+                __nmtst_internal.test_tap_log = TRUE;
+        }
+    }
+
+    if (!argc || g_test_initialized()) {
+        if (p_tests || s_tests) {
+            char *msg = g_strdup_printf(
+                ">>> nmtst: ignore -p and -s options for test which calls g_test_init() itself");
+
+            g_array_append_val(debug_messages, msg);
+        }
+    } else {
+        /* We're intentionally assigning a value to static variables
+         * s_tests_x and p_tests_x without using it afterwards, just
+         * so that valgrind doesn't complain about the leak. */
+        NM_PRAGMA_WARNING_DISABLE("-Wunused-but-set-variable")
+
+        /* g_test_init() is a variadic function, so we cannot pass it
+         * (variadic) arguments. If you need to pass additional parameters,
+         * call nmtst_init() with argc==NULL and call g_test_init() yourself. */
+
+        /* g_test_init() sets g_log_set_always_fatal() for G_LOG_LEVEL_WARNING
+         * and G_LOG_LEVEL_CRITICAL. So, beware that the test will fail if you
+         * have any WARN or ERR log messages -- unless you g_test_expect_message(). */
+        GPtrArray *    arg_array   = g_ptr_array_new();
+        gs_free char **arg_array_c = NULL;
+        int            arg_array_n, j;
+        static char ** s_tests_x, **p_tests_x;
+
+        if (*argc) {
+            for (i = 0; i < *argc; i++)
+                g_ptr_array_add(arg_array, (*argv)[i]);
+        } else
+            g_ptr_array_add(arg_array, "./test");
+
+        if (test_quick_set && !test_quick_argv)
+            g_ptr_array_add(arg_array, "-m=quick");
+
+        if (!__nmtst_internal.test_tap_log) {
+            for (i = 0; p_tests && i < p_tests->len; i++) {
+                g_ptr_array_add(arg_array, "-p");
+                g_ptr_array_add(arg_array, p_tests->pdata[i]);
+            }
+            for (i = 0; s_tests && i < s_tests->len; i++) {
+                g_ptr_array_add(arg_array, "-s");
+                g_ptr_array_add(arg_array, s_tests->pdata[i]);
+            }
+        } else if (p_tests || s_tests) {
+            char *msg = g_strdup_printf(">>> nmtst: ignore -p and -s options for tap-tests");
+
+            g_array_append_val(debug_messages, msg);
+        }
+
+        g_ptr_array_add(arg_array, NULL);
+
+        arg_array_n = arg_array->len - 1;
+        arg_array_c = (char **) g_ptr_array_free(arg_array, FALSE);
+
+        g_test_init(&arg_array_n, &arg_array_c, NULL);
+
+        if (*argc > 1) {
+            /* collaps argc/argv by removing the arguments detected
+             * by g_test_init(). */
+            for (i = 1, j = 1; i < *argc; i++) {
+                if ((*argv)[i] == arg_array_c[j])
+                    j++;
+                else
+                    (*argv)[i] = NULL;
+            }
+            for (i = 1, j = 1; i < *argc; i++) {
+                if ((*argv)[i]) {
+                    (*argv)[j++] = (*argv)[i];
+                    if (i >= j)
+                        (*argv)[i] = NULL;
+                }
+            }
+            *argc = j;
+        }
+
+        /* we must "leak" the test paths because they are not cloned by g_test_init(). */
+        if (!__nmtst_internal.test_tap_log) {
+            if (p_tests) {
+                p_tests_x = (char **) g_ptr_array_free(p_tests, FALSE);
+                p_tests   = NULL;
+            }
+            if (s_tests) {
+                s_tests_x = (char **) g_ptr_array_free(s_tests, FALSE);
+                s_tests   = NULL;
+            }
+        }
+
+        NM_PRAGMA_WARNING_REENABLE
+    }
+
+    if (test_quick_set)
+        __nmtst_internal.test_quick = test_quick;
+    else if (test_quick_argv)
+        __nmtst_internal.test_quick = g_test_quick();
+    else {
 #ifdef NMTST_TEST_QUICK
-		__nmtst_internal.test_quick = NMTST_TEST_QUICK;
+        __nmtst_internal.test_quick = NMTST_TEST_QUICK;
 #else
-		__nmtst_internal.test_quick = FALSE;
+        __nmtst_internal.test_quick = FALSE;
 #endif
-	}
+    }
 
-	__nmtst_internal.is_debug = is_debug;
-	__nmtst_internal.rand0 = g_rand_new_with_seed (0);
-	__nmtst_internal.sudo_cmd = sudo_cmd;
-	__nmtst_internal.no_expect_message = no_expect_message;
+    __nmtst_internal.is_debug          = is_debug;
+    __nmtst_internal.rand0             = g_rand_new_with_seed(0);
+    __nmtst_internal.sudo_cmd          = sudo_cmd;
+    __nmtst_internal.no_expect_message = no_expect_message;
 
-	if (!log_level && log_domains) {
-		/* if the log level is not specified (but the domain is), we assume
-		 * the caller wants to set it depending on is_debug */
-		log_level = is_debug ? "DEBUG" : "WARN";
-	}
+    if (!log_level && log_domains) {
+        /* if the log level is not specified (but the domain is), we assume
+         * the caller wants to set it depending on is_debug */
+        log_level = is_debug ? "DEBUG" : "WARN";
+    }
 
-	if (!__nmtst_internal.assert_logging) {
-		gboolean success = TRUE;
+    if (!__nmtst_internal.assert_logging) {
+        gboolean success = TRUE;
 #ifdef _NMTST_INSIDE_CORE
-		success = nm_logging_setup (log_level, log_domains, NULL, NULL);
-		*out_set_logging = TRUE;
+        success          = nm_logging_setup(log_level, log_domains, NULL, NULL);
+        *out_set_logging = TRUE;
 #endif
-		g_assert (success);
-#if GLIB_CHECK_VERSION(2,34,0)
-		if (__nmtst_internal.no_expect_message)
-			g_log_set_always_fatal (G_LOG_FATAL_MASK);
+        g_assert(success);
+#if GLIB_CHECK_VERSION(2, 34, 0)
+        if (__nmtst_internal.no_expect_message)
+            g_log_set_always_fatal(G_LOG_FATAL_MASK);
 #else
-		/* g_test_expect_message() is a NOP, so allow any messages */
-		g_log_set_always_fatal (G_LOG_FATAL_MASK);
+        /* g_test_expect_message() is a NOP, so allow any messages */
+        g_log_set_always_fatal(G_LOG_FATAL_MASK);
 #endif
-	} else if (__nmtst_internal.no_expect_message) {
-		/* We have a test that would be assert_logging, but the user specified no_expect_message.
-		 * This transforms g_test_expect_message() into a NOP, but we also have to relax
-		 * g_log_set_always_fatal(), which was set by g_test_init(). */
-		g_log_set_always_fatal (G_LOG_FATAL_MASK);
+    } else if (__nmtst_internal.no_expect_message) {
+        /* We have a test that would be assert_logging, but the user specified no_expect_message.
+         * This transforms g_test_expect_message() into a NOP, but we also have to relax
+         * g_log_set_always_fatal(), which was set by g_test_init(). */
+        g_log_set_always_fatal(G_LOG_FATAL_MASK);
 #ifdef _NMTST_INSIDE_CORE
-		if (c_log_domains || c_log_level) {
-			/* Normally, tests with assert_logging do not overwrite the logging level/domains because
-			 * the logging statements are part of the assertions. But if the test is run with
-			 * no-expect-message *and* the logging is set explicitly via environment variables,
-			 * we still reset the logging. */
-			gboolean success;
-
-			success = nm_logging_setup (log_level, log_domains, NULL, NULL);
-			*out_set_logging = TRUE;
-			g_assert (success);
-		}
+        if (c_log_domains || c_log_level) {
+            /* Normally, tests with assert_logging do not overwrite the logging level/domains because
+             * the logging statements are part of the assertions. But if the test is run with
+             * no-expect-message *and* the logging is set explicitly via environment variables,
+             * we still reset the logging. */
+            gboolean success;
+
+            success          = nm_logging_setup(log_level, log_domains, NULL, NULL);
+            *out_set_logging = TRUE;
+            g_assert(success);
+        }
 #endif
-	} else {
-#if GLIB_CHECK_VERSION(2,34,0)
-		/* We were called not to set logging levels. This means, that the user
-		 * expects to assert against (all) messages.
-		 * Any uncaught message on >debug level is fatal. */
-		g_log_set_always_fatal (G_LOG_LEVEL_MASK & ~G_LOG_LEVEL_DEBUG);
+    } else {
+#if GLIB_CHECK_VERSION(2, 34, 0)
+        /* We were called not to set logging levels. This means, that the user
+         * expects to assert against (all) messages.
+         * Any uncaught message on >debug level is fatal. */
+        g_log_set_always_fatal(G_LOG_LEVEL_MASK & ~G_LOG_LEVEL_DEBUG);
 #else
-		/* g_test_expect_message() is a NOP, so allow any messages */
-		g_log_set_always_fatal (G_LOG_FATAL_MASK);
+        /* g_test_expect_message() is a NOP, so allow any messages */
+        g_log_set_always_fatal(G_LOG_FATAL_MASK);
 #endif
-	}
-
-	if ((!__nmtst_internal.assert_logging || (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message)) &&
-	    (is_debug || (c_log_level && (!g_ascii_strcasecmp (c_log_level, "DEBUG") || !g_ascii_strcasecmp (c_log_level, "TRACE")))) &&
-	    !g_getenv ("G_MESSAGES_DEBUG"))
-	{
-		/* if we are @is_debug or @log_level=="DEBUG" and
-		 * G_MESSAGES_DEBUG is unset, we set G_MESSAGES_DEBUG=all.
-		 * To disable this default behaviour, set G_MESSAGES_DEBUG='' */
-
-		/* Note that g_setenv is not thread safe, but you should anyway call
-		 * nmtst_init() at the very start. */
-		g_setenv ("G_MESSAGES_DEBUG", "all", TRUE);
-	}
-
-	/* Delay messages until we setup logging. */
-	for (i = 0; i < debug_messages->len; i++)
-		__NMTST_LOG (g_message, "%s", g_array_index (debug_messages, const char *, i));
-
-	g_strfreev ((char **) g_array_free (debug_messages, FALSE));
-	g_free (c_log_level);
-	g_free (c_log_domains);
+    }
+
+    if ((!__nmtst_internal.assert_logging
+         || (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message))
+        && (is_debug
+            || (c_log_level
+                && (!g_ascii_strcasecmp(c_log_level, "DEBUG")
+                    || !g_ascii_strcasecmp(c_log_level, "TRACE"))))
+        && !g_getenv("G_MESSAGES_DEBUG")) {
+        /* if we are @is_debug or @log_level=="DEBUG" and
+         * G_MESSAGES_DEBUG is unset, we set G_MESSAGES_DEBUG=all.
+         * To disable this default behaviour, set G_MESSAGES_DEBUG='' */
+
+        /* Note that g_setenv is not thread safe, but you should anyway call
+         * nmtst_init() at the very start. */
+        g_setenv("G_MESSAGES_DEBUG", "all", TRUE);
+    }
+
+    /* Delay messages until we setup logging. */
+    for (i = 0; i < debug_messages->len; i++)
+        __NMTST_LOG(g_message, "%s", g_array_index(debug_messages, const char *, i));
+
+    g_strfreev((char **) g_array_free(debug_messages, FALSE));
+    g_free(c_log_level);
+    g_free(c_log_domains);
 
 #ifdef __NETWORKMANAGER_UTILS_H__
-	/* ensure that monotonic timestamp is called (because it initially logs a line) */
-	nm_utils_get_monotonic_timestamp_sec ();
+    /* ensure that monotonic timestamp is called (because it initially logs a line) */
+    nm_utils_get_monotonic_timestamp_sec();
 #endif
 
 #ifdef NM_UTILS_H
-	{
-		gs_free_error GError *error = NULL;
+    {
+        gs_free_error GError *error = NULL;
 
-		if (!nm_utils_init (&error))
-			g_assert_not_reached ();
-		g_assert_no_error (error);
-	}
+        if (!nm_utils_init(&error))
+            g_assert_not_reached();
+        g_assert_no_error(error);
+    }
 #endif
 
-	g_log_set_handler (G_LOG_DOMAIN,
-	                   G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
-	                   _nmtst_log_handler,
-	                   NULL);
+    g_log_set_handler(G_LOG_DOMAIN,
+                      G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
+                      _nmtst_log_handler,
+                      NULL);
 }
 
 #ifndef _NMTST_INSIDE_CORE
 static inline void
-nmtst_init (int *argc, char ***argv, gboolean assert_logging)
+nmtst_init(int *argc, char ***argv, gboolean assert_logging)
 {
-	__nmtst_init (argc, argv, assert_logging, NULL, NULL, NULL);
+    __nmtst_init(argc, argv, assert_logging, NULL, NULL, NULL);
 }
 #endif
 
 static inline gboolean
-nmtst_is_debug (void)
+nmtst_is_debug(void)
 {
-	g_assert (nmtst_initialized ());
-	return __nmtst_internal.is_debug;
+    g_assert(nmtst_initialized());
+    return __nmtst_internal.is_debug;
 }
 
 static inline gboolean
-nmtst_test_quick (void)
-{
-	g_assert (nmtst_initialized ());
-	return __nmtst_internal.test_quick;
-}
-
-#if GLIB_CHECK_VERSION(2,34,0)
-#undef g_test_expect_message
-#define g_test_expect_message(...) \
-	G_STMT_START { \
-		g_assert (nmtst_initialized ()); \
-		if (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message) { \
-			g_debug ("nmtst: assert-logging: g_test_expect_message %s", G_STRINGIFY ((__VA_ARGS__))); \
-		} else { \
-			G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
-			g_test_expect_message (__VA_ARGS__); \
-			G_GNUC_END_IGNORE_DEPRECATIONS \
-		} \
-	} G_STMT_END
-#undef g_test_assert_expected_messages_internal
-#define g_test_assert_expected_messages_internal(domain, file, line, func) \
-	G_STMT_START { \
-		const char *_domain = (domain); \
-		const char *_file = (file); \
-		const char *_func = (func); \
-		int _line = (line); \
-		\
-		if (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message) \
-			g_debug ("nmtst: assert-logging: g_test_assert_expected_messages(%s, %s:%d, %s)", _domain?:"", _file?:"", _line, _func?:""); \
-		\
-		G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
-		g_test_assert_expected_messages_internal (_domain, _file, _line, _func); \
-		G_GNUC_END_IGNORE_DEPRECATIONS \
-	} G_STMT_END
+nmtst_test_quick(void)
+{
+    g_assert(nmtst_initialized());
+    return __nmtst_internal.test_quick;
+}
+
+#if GLIB_CHECK_VERSION(2, 34, 0)
+    #undef g_test_expect_message
+    #define g_test_expect_message(...)                                                   \
+        G_STMT_START                                                                     \
+        {                                                                                \
+            g_assert(nmtst_initialized());                                               \
+            if (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message) { \
+                g_debug("nmtst: assert-logging: g_test_expect_message %s",               \
+                        G_STRINGIFY((__VA_ARGS__)));                                     \
+            } else {                                                                     \
+                G_GNUC_BEGIN_IGNORE_DEPRECATIONS                                         \
+                g_test_expect_message(__VA_ARGS__);                                      \
+                G_GNUC_END_IGNORE_DEPRECATIONS                                           \
+            }                                                                            \
+        }                                                                                \
+        G_STMT_END
+    #undef g_test_assert_expected_messages_internal
+    #define g_test_assert_expected_messages_internal(domain, file, line, func)                   \
+        G_STMT_START                                                                             \
+        {                                                                                        \
+            const char *_domain = (domain);                                                      \
+            const char *_file   = (file);                                                        \
+            const char *_func   = (func);                                                        \
+            int         _line   = (line);                                                        \
+                                                                                                 \
+            if (__nmtst_internal.assert_logging && __nmtst_internal.no_expect_message)           \
+                g_debug("nmtst: assert-logging: g_test_assert_expected_messages(%s, %s:%d, %s)", \
+                        _domain ?: "",                                                           \
+                        _file ?: "",                                                             \
+                        _line,                                                                   \
+                        _func ?: "");                                                            \
+                                                                                                 \
+            G_GNUC_BEGIN_IGNORE_DEPRECATIONS                                                     \
+            g_test_assert_expected_messages_internal(_domain, _file, _line, _func);              \
+            G_GNUC_END_IGNORE_DEPRECATIONS                                                       \
+        }                                                                                        \
+        G_STMT_END
 #endif
 
-#define NMTST_EXPECT(domain, level, msg)        g_test_expect_message (domain, level, msg)
+#define NMTST_EXPECT(domain, level, msg) g_test_expect_message(domain, level, msg)
 
-#define NMTST_EXPECT_LIBNM(level, msg)          NMTST_EXPECT ("libnm", level, msg)
+#define NMTST_EXPECT_LIBNM(level, msg) NMTST_EXPECT("libnm", level, msg)
 
-#define NMTST_EXPECT_LIBNM_WARNING(msg)         NMTST_EXPECT_LIBNM (G_LOG_LEVEL_WARNING, msg)
-#define NMTST_EXPECT_LIBNM_CRITICAL(msg)        NMTST_EXPECT_LIBNM (G_LOG_LEVEL_CRITICAL, msg)
+#define NMTST_EXPECT_LIBNM_WARNING(msg)  NMTST_EXPECT_LIBNM(G_LOG_LEVEL_WARNING, msg)
+#define NMTST_EXPECT_LIBNM_CRITICAL(msg) NMTST_EXPECT_LIBNM(G_LOG_LEVEL_CRITICAL, msg)
 
 /*****************************************************************************/
 
 typedef struct _NmtstTestData NmtstTestData;
 
-typedef void (*NmtstTestHandler) (const NmtstTestData *test_data);
+typedef void (*NmtstTestHandler)(const NmtstTestData *test_data);
 
 struct _NmtstTestData {
-	union {
-		const char *testpath;
-		char *_testpath;
-	};
-	gsize n_args;
-	gpointer *args;
-	NmtstTestHandler _func_setup;
-	GTestDataFunc _func_test;
-	NmtstTestHandler _func_teardown;
+    union {
+        const char *testpath;
+        char *      _testpath;
+    };
+    gsize            n_args;
+    gpointer *       args;
+    NmtstTestHandler _func_setup;
+    GTestDataFunc    _func_test;
+    NmtstTestHandler _func_teardown;
 };
 
 static inline void
-_nmtst_test_data_unpack (const NmtstTestData *test_data, gsize n_args, ...)
+_nmtst_test_data_unpack(const NmtstTestData *test_data, gsize n_args, ...)
 {
-	gsize i;
-	va_list ap;
-	gpointer *p;
+    gsize     i;
+    va_list   ap;
+    gpointer *p;
 
-	g_assert (test_data);
-	g_assert_cmpint (n_args, ==, test_data->n_args);
+    g_assert(test_data);
+    g_assert_cmpint(n_args, ==, test_data->n_args);
 
-	va_start (ap, n_args);
-	for (i = 0; i < n_args; i++) {
-		p = va_arg (ap, gpointer *);
+    va_start(ap, n_args);
+    for (i = 0; i < n_args; i++) {
+        p = va_arg(ap, gpointer *);
 
-		if (p)
-			*p = test_data->args[i];
-	}
-	va_end (ap);
+        if (p)
+            *p = test_data->args[i];
+    }
+    va_end(ap);
 }
-#define nmtst_test_data_unpack(test_data, ...) _nmtst_test_data_unpack(test_data, NM_NARG (__VA_ARGS__), ##__VA_ARGS__)
+#define nmtst_test_data_unpack(test_data, ...) \
+    _nmtst_test_data_unpack(test_data, NM_NARG(__VA_ARGS__), ##__VA_ARGS__)
 
 static inline void
-_nmtst_test_data_free (gpointer data)
+_nmtst_test_data_free(gpointer data)
 {
-	NmtstTestData *test_data = data;
+    NmtstTestData *test_data = data;
 
-	g_assert (test_data);
+    g_assert(test_data);
 
-	g_free (test_data->_testpath);
-	g_free (test_data);
+    g_free(test_data->_testpath);
+    g_free(test_data);
 }
 
 static inline void
-_nmtst_test_run (gconstpointer data)
+_nmtst_test_run(gconstpointer data)
 {
-	const NmtstTestData *test_data = data;
+    const NmtstTestData *test_data = data;
 
-	if (test_data->_func_setup)
-		test_data->_func_setup (test_data);
+    if (test_data->_func_setup)
+        test_data->_func_setup(test_data);
 
-	test_data->_func_test (test_data);
+    test_data->_func_test(test_data);
 
-	if (test_data->_func_teardown)
-		test_data->_func_teardown (test_data);
+    if (test_data->_func_teardown)
+        test_data->_func_teardown(test_data);
 }
 
 static inline void
-_nmtst_add_test_func_full (const char *testpath, GTestDataFunc func_test, NmtstTestHandler func_setup, NmtstTestHandler func_teardown, gsize n_args, ...)
-{
-	gsize i;
-	NmtstTestData *data;
-	va_list ap;
-
-	g_assert (testpath && testpath[0]);
-	g_assert (func_test);
-
-	data = g_malloc0 (sizeof (NmtstTestData) + (sizeof (gpointer) * (n_args + 1)));
-
-	data->_testpath = g_strdup (testpath);
-	data->_func_test = func_test;
-	data->_func_setup = func_setup;
-	data->_func_teardown = func_teardown;
-	data->n_args = n_args;
-	data->args = (gpointer) &data[1];
-	va_start (ap, n_args);
-	for (i = 0; i < n_args; i++)
-		data->args[i] = va_arg (ap, gpointer);
-	data->args[i] = NULL;
-	va_end (ap);
-
-	g_test_add_data_func_full (testpath,
-	                           data,
-	                           _nmtst_test_run,
-	                           _nmtst_test_data_free);
-}
-#define nmtst_add_test_func_full(testpath, func_test, func_setup, func_teardown, ...) _nmtst_add_test_func_full(testpath, func_test, func_setup, func_teardown, NM_NARG (__VA_ARGS__), ##__VA_ARGS__)
-#define nmtst_add_test_func(testpath, func_test, ...) nmtst_add_test_func_full(testpath, func_test, NULL, NULL, ##__VA_ARGS__)
+_nmtst_add_test_func_full(const char *     testpath,
+                          GTestDataFunc    func_test,
+                          NmtstTestHandler func_setup,
+                          NmtstTestHandler func_teardown,
+                          gsize            n_args,
+                          ...)
+{
+    gsize          i;
+    NmtstTestData *data;
+    va_list        ap;
+
+    g_assert(testpath && testpath[0]);
+    g_assert(func_test);
+
+    data = g_malloc0(sizeof(NmtstTestData) + (sizeof(gpointer) * (n_args + 1)));
+
+    data->_testpath      = g_strdup(testpath);
+    data->_func_test     = func_test;
+    data->_func_setup    = func_setup;
+    data->_func_teardown = func_teardown;
+    data->n_args         = n_args;
+    data->args           = (gpointer) &data[1];
+    va_start(ap, n_args);
+    for (i = 0; i < n_args; i++)
+        data->args[i] = va_arg(ap, gpointer);
+    data->args[i] = NULL;
+    va_end(ap);
+
+    g_test_add_data_func_full(testpath, data, _nmtst_test_run, _nmtst_test_data_free);
+}
+#define nmtst_add_test_func_full(testpath, func_test, func_setup, func_teardown, ...) \
+    _nmtst_add_test_func_full(testpath,                                               \
+                              func_test,                                              \
+                              func_setup,                                             \
+                              func_teardown,                                          \
+                              NM_NARG(__VA_ARGS__),                                   \
+                              ##__VA_ARGS__)
+#define nmtst_add_test_func(testpath, func_test, ...) \
+    nmtst_add_test_func_full(testpath, func_test, NULL, NULL, ##__VA_ARGS__)
 
 /*****************************************************************************/
 
 static inline GRand *
-nmtst_get_rand0 (void)
+nmtst_get_rand0(void)
 {
-	g_assert (nmtst_initialized ());
-	return __nmtst_internal.rand0;
+    g_assert(nmtst_initialized());
+    return __nmtst_internal.rand0;
 }
 
 static inline GRand *
-nmtst_get_rand (void)
+nmtst_get_rand(void)
 {
-	g_assert (nmtst_initialized ());
+    g_assert(nmtst_initialized());
 
-	if (G_UNLIKELY (!__nmtst_internal.rand)) {
-		guint32 seed;
-		const char *str = g_getenv ("NMTST_SEED_RAND");
+    if (G_UNLIKELY(!__nmtst_internal.rand)) {
+        guint32     seed;
+        const char *str = g_getenv("NMTST_SEED_RAND");
 
-		if (!str) {
-			/* No NMTST_SEED_RAND. Pick a stable one. */
-			seed = 0;
-			__nmtst_internal.rand = g_rand_new_with_seed (seed);
-		} else if (str[0] == '\0') {
-			/* NMTST_SEED_RAND is set but empty. Pick a random one. */
-			__nmtst_internal.rand = g_rand_new ();
+        if (!str) {
+            /* No NMTST_SEED_RAND. Pick a stable one. */
+            seed                  = 0;
+            __nmtst_internal.rand = g_rand_new_with_seed(seed);
+        } else if (str[0] == '\0') {
+            /* NMTST_SEED_RAND is set but empty. Pick a random one. */
+            __nmtst_internal.rand = g_rand_new();
 
-			seed = g_rand_int (__nmtst_internal.rand);
-			g_rand_set_seed (__nmtst_internal.rand, seed);
-		} else {
-			/* NMTST_SEED_RAND is set. Use it as a seed. */
-			char *s;
-			gint64 i;
+            seed = g_rand_int(__nmtst_internal.rand);
+            g_rand_set_seed(__nmtst_internal.rand, seed);
+        } else {
+            /* NMTST_SEED_RAND is set. Use it as a seed. */
+            char * s;
+            gint64 i;
 
-			i = g_ascii_strtoll (str, &s, 0);
-			g_assert (s[0] == '\0' && i >= 0 && i < G_MAXUINT32);
+            i = g_ascii_strtoll(str, &s, 0);
+            g_assert(s[0] == '\0' && i >= 0 && i < G_MAXUINT32);
 
-			seed = i;
-			__nmtst_internal.rand = g_rand_new_with_seed (seed);
-		}
-		__nmtst_internal.rand_seed = seed;
+            seed                  = i;
+            __nmtst_internal.rand = g_rand_new_with_seed(seed);
+        }
+        __nmtst_internal.rand_seed = seed;
 
-		g_print ("\nnmtst: initialize nmtst_get_rand() with NMTST_SEED_RAND=%u\n", seed);
-	}
-	return __nmtst_internal.rand;
+        g_print("\nnmtst: initialize nmtst_get_rand() with NMTST_SEED_RAND=%u\n", seed);
+    }
+    return __nmtst_internal.rand;
 }
 
 static inline guint32
-nmtst_get_rand_uint32 (void)
+nmtst_get_rand_uint32(void)
 {
-	return g_rand_int (nmtst_get_rand ());
+    return g_rand_int(nmtst_get_rand());
 }
 
 static inline guint64
-nmtst_get_rand_uint64 (void)
+nmtst_get_rand_uint64(void)
 {
-	GRand *rand = nmtst_get_rand ();
+    GRand *rand = nmtst_get_rand();
 
-	return   (((guint64) g_rand_int (rand))      )
-	       | (((guint64) g_rand_int (rand)) << 32);
+    return (((guint64) g_rand_int(rand))) | (((guint64) g_rand_int(rand)) << 32);
 }
 
 static inline guint
-nmtst_get_rand_uint (void)
+nmtst_get_rand_uint(void)
 {
-	G_STATIC_ASSERT_EXPR (sizeof (guint32) == sizeof (guint));
-	return nmtst_get_rand_uint32 ();
+    G_STATIC_ASSERT_EXPR(sizeof(guint32) == sizeof(guint));
+    return nmtst_get_rand_uint32();
 }
 
 static inline gsize
-nmtst_get_rand_size (void)
+nmtst_get_rand_size(void)
 {
-	G_STATIC_ASSERT_EXPR (   sizeof (gsize) == sizeof (guint32)
-	                      || sizeof (gsize) == sizeof (guint64));
-	if (sizeof (gsize) == sizeof (guint32))
-		return nmtst_get_rand_uint32 ();
-	return nmtst_get_rand_uint64 ();
+    G_STATIC_ASSERT_EXPR(sizeof(gsize) == sizeof(guint32) || sizeof(gsize) == sizeof(guint64));
+    if (sizeof(gsize) == sizeof(guint32))
+        return nmtst_get_rand_uint32();
+    return nmtst_get_rand_uint64();
 }
 
 static inline gboolean
-nmtst_get_rand_bool (void)
+nmtst_get_rand_bool(void)
 {
-	return nmtst_get_rand_uint32 () % 2;
+    return nmtst_get_rand_uint32() % 2;
 }
 
 static inline gpointer
-nmtst_rand_buf (GRand *rand, gpointer buffer, gsize buffer_length)
+nmtst_rand_buf(GRand *rand, gpointer buffer, gsize buffer_length)
 {
-	guint32 v;
-	guint8 *b = buffer;
+    guint32 v;
+    guint8 *b = buffer;
 
-	if (!buffer_length)
-		return buffer;
+    if (!buffer_length)
+        return buffer;
 
-	g_assert (buffer);
+    g_assert(buffer);
 
-	if (!rand)
-		rand = nmtst_get_rand ();
+    if (!rand)
+        rand = nmtst_get_rand();
 
-	for (; buffer_length >= sizeof (guint32); buffer_length -= sizeof (guint32), b += sizeof (guint32)) {
-		v = g_rand_int (rand);
-		memcpy (b, &v, sizeof (guint32));
-	}
-	if (buffer_length > 0) {
-		v = g_rand_int (rand);
-		do {
-			*(b++) = v & 0xFF;
-			v >>= 8;
-		} while (--buffer_length > 0);
-	}
-	return buffer;
+    for (; buffer_length >= sizeof(guint32);
+         buffer_length -= sizeof(guint32), b += sizeof(guint32)) {
+        v = g_rand_int(rand);
+        memcpy(b, &v, sizeof(guint32));
+    }
+    if (buffer_length > 0) {
+        v = g_rand_int(rand);
+        do {
+            *(b++) = v & 0xFF;
+            v >>= 8;
+        } while (--buffer_length > 0);
+    }
+    return buffer;
 }
 
-#define _nmtst_rand_select(uniq, v0, ...) \
-	({ \
-		typeof (v0) NM_UNIQ_T (UNIQ, uniq)[1 + NM_NARG (__VA_ARGS__)] = { (v0), __VA_ARGS__ }; \
-		\
-		NM_UNIQ_T (UNIQ, uniq)[nmtst_get_rand_uint32 () % G_N_ELEMENTS (NM_UNIQ_T (UNIQ, uniq))]; \
-	})
+#define _nmtst_rand_select(uniq, v0, ...)                                                     \
+    ({                                                                                        \
+        typeof(v0) NM_UNIQ_T(UNIQ, uniq)[1 + NM_NARG(__VA_ARGS__)] = {(v0), __VA_ARGS__};     \
+                                                                                              \
+        NM_UNIQ_T(UNIQ, uniq)[nmtst_get_rand_uint32() % G_N_ELEMENTS(NM_UNIQ_T(UNIQ, uniq))]; \
+    })
 
-#define nmtst_rand_select(...) \
-	_nmtst_rand_select (NM_UNIQ, __VA_ARGS__)
+#define nmtst_rand_select(...) _nmtst_rand_select(NM_UNIQ, __VA_ARGS__)
 
 static inline void *
-nmtst_rand_perm (GRand *rand, void *dst, const void *src, gsize elmt_size, gsize n_elmt)
+nmtst_rand_perm(GRand *rand, void *dst, const void *src, gsize elmt_size, gsize n_elmt)
 {
-	gsize i, j;
-	char *p_, *pj;
-	char *bu;
+    gsize i, j;
+    char *p_, *pj;
+    char *bu;
 
-	g_assert (dst);
-	g_assert (elmt_size > 0);
-	g_assert (n_elmt < G_MAXINT32);
+    g_assert(dst);
+    g_assert(elmt_size > 0);
+    g_assert(n_elmt < G_MAXINT32);
 
-	if (n_elmt == 0)
-		return dst;
+    if (n_elmt == 0)
+        return dst;
 
-	if (src && dst != src)
-		memcpy (dst, src, elmt_size * n_elmt);
+    if (src && dst != src)
+        memcpy(dst, src, elmt_size * n_elmt);
 
-	if (!rand)
-		rand = nmtst_get_rand ();
+    if (!rand)
+        rand = nmtst_get_rand();
 
-	bu = g_slice_alloc (elmt_size);
+    bu = g_slice_alloc(elmt_size);
 
-	p_ = dst;
-	for (i = n_elmt; i > 1; i--) {
-		j = g_rand_int_range (rand, 0, i);
+    p_ = dst;
+    for (i = n_elmt; i > 1; i--) {
+        j = g_rand_int_range(rand, 0, i);
 
-		if (j != 0) {
-			pj = &p_[j * elmt_size];
+        if (j != 0) {
+            pj = &p_[j * elmt_size];
 
-			/* swap */
-			memcpy (bu, p_, elmt_size);
-			memcpy (p_, pj, elmt_size);
-			memcpy (pj, bu, elmt_size);
-		}
-		p_ += elmt_size;
-	}
+            /* swap */
+            memcpy(bu, p_, elmt_size);
+            memcpy(p_, pj, elmt_size);
+            memcpy(pj, bu, elmt_size);
+        }
+        p_ += elmt_size;
+    }
 
-	g_slice_free1 (elmt_size, bu);
-	return dst;
+    g_slice_free1(elmt_size, bu);
+    return dst;
 }
 
 static inline GSList *
-nmtst_rand_perm_gslist (GRand *rand, GSList *list)
+nmtst_rand_perm_gslist(GRand *rand, GSList *list)
 {
-	GSList *result;
-	guint l;
+    GSList *result;
+    guint   l;
 
-	if (!rand)
-		rand = nmtst_get_rand ();
+    if (!rand)
+        rand = nmtst_get_rand();
 
-	/* no need for an efficient implementation :) */
+    /* no need for an efficient implementation :) */
 
-	result = 0;
-	for (l = g_slist_length (list); l > 0; l--) {
-		GSList *tmp;
+    result = 0;
+    for (l = g_slist_length(list); l > 0; l--) {
+        GSList *tmp;
 
-		tmp = g_slist_nth (list, g_rand_int (rand) % l);
-		g_assert (tmp);
+        tmp = g_slist_nth(list, g_rand_int(rand) % l);
+        g_assert(tmp);
 
-		list = g_slist_remove_link (list, tmp);
-		result = g_slist_concat (tmp, result);
-	}
-	g_assert (!list);
-	return result;
+        list   = g_slist_remove_link(list, tmp);
+        result = g_slist_concat(tmp, result);
+    }
+    g_assert(!list);
+    return result;
+}
+
+static inline void
+nmtst_stable_rand(guint64 seed, gpointer buf, gsize len)
+{
+    const guint64 C = 1442695040888963407llu;
+    const guint64 A = 6364136223846793005llu;
+    guint8 *      b;
+    union {
+        guint8  a[sizeof(guint64)];
+        guint64 n;
+    } n;
+
+    /* We want a stable random generator that is in our control and does not
+     * depend on glibc/glib versions.
+     * Use a linear congruential generator (x[n+1] = (A * x[n] + C) % M)
+     * https://en.wikipedia.org/wiki/Linear_congruential_generator
+     *
+     * We choose (Knuth’s LCG MMIX)
+     *   A = 6364136223846793005llu
+     *   C = 1442695040888963407llu
+     *   M = 2^64
+     */
+
+    g_assert(len == 0 || buf);
+
+    n.n = seed;
+    b   = buf;
+    for (; len > 0; len--, b++) {
+        n.n = (A * n.n + C);
+
+        /* let's combine the 64 bits randomness in one byte. By xor-ing, it's
+         * also independent of endianness. */
+        b[0] = n.a[0] ^ n.a[1] ^ n.a[2] ^ n.a[3] ^ n.a[4] ^ n.a[5] ^ n.a[6] ^ n.a[7];
+    }
 }
 
 /*****************************************************************************/
@@ -995,610 +1069,640 @@ nmtst_rand_perm_gslist (GRand *rand, GSList *list)
  * be used when we generate random input for unit tests.
  */
 static inline guint
-nmtst_get_rand_word_length (GRand *rand)
-{
-	guint n;
-
-	if (!rand)
-		rand = nmtst_get_rand ();
-
-	n = 0;
-	while (TRUE) {
-		guint32 rnd = g_rand_int (rand);
-		guint probability;
-
-		/* The following python code implements a random sample with this
-		 * distribution:
-		 *
-		 *    def random_histogram(n_tries, scale = None):
-		 *        def probability(n_tok):
-		 *            import math
-		 *            return max(2, math.floor(100 / (2*(n_tok+1))))
-		 *        def n_tokens():
-		 *            import random
-		 *            n_tok = 0
-		 *            while True:
-		 *                if random.randint(0, 0xFFFFFFFF) % probability(n_tok) == 0:
-		 *                   return n_tok
-		 *                n_tok += 1
-		 *        hist = []
-		 *        i = 0;
-		 *        while i < n_tries:
-		 *            n_tok = n_tokens()
-		 *            while n_tok >= len(hist):
-		 *                hist.append(0)
-		 *            hist[n_tok] = hist[n_tok] + 1
-		 *            i += 1
-		 *        if scale is not None:
-		 *            hist = list([round(x / n_tries * scale) for x in hist])
-		 *        return hist
-		 *
-		 * For example, random_histogram(n_tries = 1000000, scale = 1000) may give
-		 *
-		 *   IDX:  [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
-		 *   SEEN: [20, 39, 59, 73, 80, 91, 92, 90, 91, 73, 73, 54, 55, 36, 24, 16, 16,  8,  4,  2,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0]
-		 *
-		 * which give a sense of the probability with this individual results are returned.
-		 */
-		probability = NM_MAX (2u, (100u / (2u * (n + 1u))));
-		if ((rnd % probability) == 0)
-			return n;
-		n++;
-	}
+nmtst_get_rand_word_length(GRand *rand)
+{
+    guint n;
+
+    if (!rand)
+        rand = nmtst_get_rand();
+
+    n = 0;
+    while (TRUE) {
+        guint32 rnd = g_rand_int(rand);
+        guint   probability;
+
+        /* The following python code implements a random sample with this
+         * distribution:
+         *
+         *    def random_histogram(n_tries, scale = None):
+         *        def probability(n_tok):
+         *            import math
+         *            return max(2, math.floor(100 / (2*(n_tok+1))))
+         *        def n_tokens():
+         *            import random
+         *            n_tok = 0
+         *            while True:
+         *                if random.randint(0, 0xFFFFFFFF) % probability(n_tok) == 0:
+         *                   return n_tok
+         *                n_tok += 1
+         *        hist = []
+         *        i = 0;
+         *        while i < n_tries:
+         *            n_tok = n_tokens()
+         *            while n_tok >= len(hist):
+         *                hist.append(0)
+         *            hist[n_tok] = hist[n_tok] + 1
+         *            i += 1
+         *        if scale is not None:
+         *            hist = list([round(x / n_tries * scale) for x in hist])
+         *        return hist
+         *
+         * For example, random_histogram(n_tries = 1000000, scale = 1000) may give
+         *
+         *   IDX:  [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
+         *   SEEN: [20, 39, 59, 73, 80, 91, 92, 90, 91, 73, 73, 54, 55, 36, 24, 16, 16,  8,  4,  2,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0]
+         *
+         * which give a sense of the probability with this individual results are returned.
+         */
+        probability = NM_MAX(2u, (100u / (2u * (n + 1u))));
+        if ((rnd % probability) == 0)
+            return n;
+        n++;
+    }
 }
 
 /*****************************************************************************/
 
 static inline gboolean
-nmtst_g_source_assert_not_called (gpointer user_data)
+nmtst_g_source_assert_not_called(gpointer user_data)
 {
-	g_assert_not_reached ();
-	return G_SOURCE_CONTINUE;
+    g_assert_not_reached();
+    return G_SOURCE_CONTINUE;
 }
 
 static inline gboolean
-nmtst_g_source_set_boolean_true (gpointer user_data)
+nmtst_g_source_set_boolean_true(gpointer user_data)
 {
-	gboolean *ptr = user_data;
+    gboolean *ptr = user_data;
 
-	g_assert (ptr);
-	g_assert (!*ptr);
-	*ptr = TRUE;
-	return G_SOURCE_CONTINUE;
+    g_assert(ptr);
+    g_assert(!*ptr);
+    *ptr = TRUE;
+    return G_SOURCE_CONTINUE;
 }
 
 /*****************************************************************************/
 
 static inline gboolean
-_nmtst_main_loop_run_timeout (gpointer user_data)
+_nmtst_main_loop_run_timeout(gpointer user_data)
 {
-	GMainLoop **p_loop = user_data;
+    GMainLoop **p_loop = user_data;
 
-	g_assert (p_loop && *p_loop);
-	g_main_loop_quit (g_steal_pointer (p_loop));
-	return G_SOURCE_REMOVE;
+    g_assert(p_loop && *p_loop);
+    g_main_loop_quit(g_steal_pointer(p_loop));
+    return G_SOURCE_REMOVE;
 }
 
 static inline gboolean
-nmtst_main_loop_run (GMainLoop *loop, guint timeout_msec)
+nmtst_main_loop_run(GMainLoop *loop, guint timeout_msec)
 {
-	nm_auto_unref_gsource GSource *source = NULL;
-	GMainLoop *loopx = loop;
+    nm_auto_unref_gsource GSource *source = NULL;
+    GMainLoop *                    loopx  = loop;
 
-	if (timeout_msec > 0) {
-		source = g_timeout_source_new (timeout_msec);
-		g_source_set_callback (source, _nmtst_main_loop_run_timeout, &loopx, NULL);
-		g_source_attach (source, g_main_loop_get_context (loop));
-	}
+    if (timeout_msec > 0) {
+        source = g_timeout_source_new(timeout_msec);
+        g_source_set_callback(source, _nmtst_main_loop_run_timeout, &loopx, NULL);
+        g_source_attach(source, g_main_loop_get_context(loop));
+    }
 
-	g_main_loop_run (loop);
+    g_main_loop_run(loop);
 
-	if (source)
-		g_source_destroy (source);
+    if (source)
+        g_source_destroy(source);
 
-	/* if the timeout was reached, return FALSE. */
-	return loopx != NULL;
+    /* if the timeout was reached, return FALSE. */
+    return loopx != NULL;
 }
 
 static inline void
-_nmtst_main_loop_quit_on_notify (GObject *object, GParamSpec *pspec, gpointer user_data)
+_nmtst_main_loop_quit_on_notify(GObject *object, GParamSpec *pspec, gpointer user_data)
 {
-	GMainLoop *loop = user_data;
+    GMainLoop *loop = user_data;
 
-	g_assert (G_IS_OBJECT (object));
-	g_assert (loop);
+    g_assert(G_IS_OBJECT(object));
+    g_assert(loop);
 
-	g_main_loop_quit (loop);
+    g_main_loop_quit(loop);
 }
 #define nmtst_main_loop_quit_on_notify ((GCallback) _nmtst_main_loop_quit_on_notify)
 
-#define nmtst_main_context_iterate_until(context, timeout_msec, condition) \
-	({ \
-		nm_auto_destroy_and_unref_gsource GSource *_source = NULL; \
-		GMainContext *_context = (context); \
-		gboolean _had_timeout = FALSE; \
-		\
-		_source = g_timeout_source_new (timeout_msec); \
-		g_source_set_callback (_source, nmtst_g_source_set_boolean_true, &_had_timeout, NULL); \
-		g_source_attach (_source, _context); \
-		\
-		while (TRUE) { \
-			if (condition) \
-				break; \
-			g_main_context_iteration (_context, TRUE); \
-			if (_had_timeout) \
-				break; \
-		} \
-		\
-		!_had_timeout; \
-	})
+#define nmtst_main_context_iterate_until(context, timeout_msec, condition)                    \
+    ({                                                                                        \
+        nm_auto_destroy_and_unref_gsource GSource *_source      = NULL;                       \
+        GMainContext *                             _context     = (context);                  \
+        gboolean                                   _had_timeout = FALSE;                      \
+                                                                                              \
+        _source = g_timeout_source_new(timeout_msec);                                         \
+        g_source_set_callback(_source, nmtst_g_source_set_boolean_true, &_had_timeout, NULL); \
+        g_source_attach(_source, _context);                                                   \
+                                                                                              \
+        while (TRUE) {                                                                        \
+            if (condition)                                                                    \
+                break;                                                                        \
+            g_main_context_iteration(_context, TRUE);                                         \
+            if (_had_timeout)                                                                 \
+                break;                                                                        \
+        }                                                                                     \
+                                                                                              \
+        !_had_timeout;                                                                        \
+    })
 
 #define nmtst_main_context_iterate_until_assert(context, timeout_msec, condition) \
-	G_STMT_START { \
-		if (!nmtst_main_context_iterate_until (context, timeout_msec, condition)) \
-			g_assert (FALSE && #condition); \
-	} G_STMT_END
+    G_STMT_START                                                                  \
+    {                                                                             \
+        if (!nmtst_main_context_iterate_until(context, timeout_msec, condition))  \
+            g_assert(FALSE &&#condition);                                         \
+    }                                                                             \
+    G_STMT_END
 
 /*****************************************************************************/
 
 static inline void
-nmtst_main_context_assert_no_dispatch (GMainContext *context,
-                                       guint timeout_msec)
+nmtst_main_context_assert_no_dispatch(GMainContext *context, guint timeout_msec)
 {
-	nm_auto_destroy_and_unref_gsource GSource *source = NULL;
-	gboolean timeout_hit = FALSE;
+    nm_auto_destroy_and_unref_gsource GSource *source      = NULL;
+    gboolean                                   timeout_hit = FALSE;
 
-	source = g_timeout_source_new (timeout_msec);
-	g_source_set_callback (source, nmtst_g_source_set_boolean_true, &timeout_hit, NULL);
-	g_source_attach (source, context);
+    source = g_timeout_source_new(timeout_msec);
+    g_source_set_callback(source, nmtst_g_source_set_boolean_true, &timeout_hit, NULL);
+    g_source_attach(source, context);
 
-	while (g_main_context_iteration (context, TRUE)) {
-		if (timeout_hit)
-			return;
-		g_assert_not_reached ();
-	}
+    while (g_main_context_iteration(context, TRUE)) {
+        if (timeout_hit)
+            return;
+        g_assert_not_reached();
+    }
 }
 
 /*****************************************************************************/
 
 typedef struct {
-	GMainLoop *_main_loop;
-	union {
-		GSList *_list;
-		const void *const is_waiting;
-	};
+    GMainLoop *_main_loop;
+    union {
+        GSList *          _list;
+        const void *const is_waiting;
+    };
 } NMTstContextBusyWatcherData;
 
 static inline void
-_nmtst_context_busy_watcher_add_cb (gpointer data,
-                                    GObject *where_the_object_was)
+_nmtst_context_busy_watcher_add_cb(gpointer data, GObject *where_the_object_was)
 {
-	NMTstContextBusyWatcherData *watcher_data = data;
-	GSList *l;
+    NMTstContextBusyWatcherData *watcher_data = data;
+    GSList *                     l;
 
-	g_assert (watcher_data);
+    g_assert(watcher_data);
 
-	l = g_slist_find (watcher_data->_list, where_the_object_was);
-	g_assert (l);
+    l = g_slist_find(watcher_data->_list, where_the_object_was);
+    g_assert(l);
 
-	watcher_data->_list = g_slist_delete_link (watcher_data->_list, l);
-	if (!watcher_data->_list)
-		g_main_loop_quit (watcher_data->_main_loop);
+    watcher_data->_list = g_slist_delete_link(watcher_data->_list, l);
+    if (!watcher_data->_list)
+        g_main_loop_quit(watcher_data->_main_loop);
 }
 
 static inline void
-nmtst_context_busy_watcher_add (NMTstContextBusyWatcherData *watcher_data,
-                                GObject *object)
+nmtst_context_busy_watcher_add(NMTstContextBusyWatcherData *watcher_data, GObject *object)
 {
-	g_assert (watcher_data);
-	g_assert (G_IS_OBJECT (object));
+    g_assert(watcher_data);
+    g_assert(G_IS_OBJECT(object));
 
-	if (!watcher_data->_main_loop) {
-		watcher_data->_main_loop = g_main_loop_new (g_main_context_get_thread_default (),
-		                                            FALSE);
-		g_assert (!watcher_data->_list);
-	} else {
-		g_assert (   g_main_loop_get_context (watcher_data->_main_loop)
-		          == (g_main_context_get_thread_default () ?: g_main_context_default ()));
-	}
+    if (!watcher_data->_main_loop) {
+        watcher_data->_main_loop = g_main_loop_new(g_main_context_get_thread_default(), FALSE);
+        g_assert(!watcher_data->_list);
+    } else {
+        g_assert(g_main_loop_get_context(watcher_data->_main_loop)
+                 == (g_main_context_get_thread_default() ?: g_main_context_default()));
+    }
 
-	g_object_weak_ref (object,
-	                   _nmtst_context_busy_watcher_add_cb,
-	                   watcher_data);
-	watcher_data->_list = g_slist_prepend (watcher_data->_list, object);
+    g_object_weak_ref(object, _nmtst_context_busy_watcher_add_cb, watcher_data);
+    watcher_data->_list = g_slist_prepend(watcher_data->_list, object);
 }
 
 static inline void
-nmtst_context_busy_watcher_wait (NMTstContextBusyWatcherData *watcher_data)
+nmtst_context_busy_watcher_wait(NMTstContextBusyWatcherData *watcher_data)
 {
-	g_assert (watcher_data);
+    g_assert(watcher_data);
 
-	if (!watcher_data->_main_loop) {
-		g_assert (!watcher_data->_list);
-		return;
-	}
+    if (!watcher_data->_main_loop) {
+        g_assert(!watcher_data->_list);
+        return;
+    }
 
-	if (watcher_data->_list) {
-		if (!nmtst_main_loop_run (watcher_data->_main_loop, 5000))
-			g_error ("timeout running mainloop waiting for GObject to destruct");
-	}
+    if (watcher_data->_list) {
+        if (!nmtst_main_loop_run(watcher_data->_main_loop, 5000))
+            g_error("timeout running mainloop waiting for GObject to destruct");
+    }
 
-	g_assert (!watcher_data->_list);
-	nm_clear_pointer (&watcher_data->_main_loop, g_main_loop_unref);
+    g_assert(!watcher_data->_list);
+    nm_clear_pointer(&watcher_data->_main_loop, g_main_loop_unref);
 }
 
 /*****************************************************************************/
 
 static inline const char *
-nmtst_get_sudo_cmd (void)
+nmtst_get_sudo_cmd(void)
 {
-	g_assert (nmtst_initialized ());
-	return __nmtst_internal.sudo_cmd;
+    g_assert(nmtst_initialized());
+    return __nmtst_internal.sudo_cmd;
 }
 
 static inline void
-nmtst_reexec_sudo (void)
+nmtst_reexec_sudo(void)
 {
-	char *str;
-	char **argv;
-	int i;
-	int errsv;
+    char * str;
+    char **argv;
+    int    i;
+    int    errsv;
 
-	g_assert (nmtst_initialized ());
-	g_assert (__nmtst_internal.orig_argv);
+    g_assert(nmtst_initialized());
+    g_assert(__nmtst_internal.orig_argv);
 
-	if (!__nmtst_internal.sudo_cmd)
-		return;
+    if (!__nmtst_internal.sudo_cmd)
+        return;
 
-	str = g_strjoinv (" ", __nmtst_internal.orig_argv);
-	__NMTST_LOG (g_message, ">> exec %s %s", __nmtst_internal.sudo_cmd, str);
+    str = g_strjoinv(" ", __nmtst_internal.orig_argv);
+    __NMTST_LOG(g_message, ">> exec %s %s", __nmtst_internal.sudo_cmd, str);
 
-	argv = g_new0 (char *, 1 + g_strv_length (__nmtst_internal.orig_argv) + 1);
-	argv[0] = __nmtst_internal.sudo_cmd;
-	for (i = 0; __nmtst_internal.orig_argv[i]; i++)
-		argv[i+1] = __nmtst_internal.orig_argv[i];
+    argv    = g_new0(char *, 1 + g_strv_length(__nmtst_internal.orig_argv) + 1);
+    argv[0] = __nmtst_internal.sudo_cmd;
+    for (i = 0; __nmtst_internal.orig_argv[i]; i++)
+        argv[i + 1] = __nmtst_internal.orig_argv[i];
 
-	execvp (__nmtst_internal.sudo_cmd, argv);
+    execvp(__nmtst_internal.sudo_cmd, argv);
 
-	errsv = errno;
-	g_error (">> exec %s failed: %d - %s", __nmtst_internal.sudo_cmd, errsv, nm_strerror_native (errsv));
+    errsv = errno;
+    g_error(">> exec %s failed: %d - %s",
+            __nmtst_internal.sudo_cmd,
+            errsv,
+            nm_strerror_native(errsv));
 }
 
 /*****************************************************************************/
 
 static inline gsize
-nmtst_find_all_indexes (gpointer *elements,
-                        gsize n_elements,
-                        gpointer *needles,
-                        gsize n_needles,
-                        gboolean (*equal_fcn) (gpointer element, gpointer needle, gpointer user_data),
-                        gpointer user_data,
-                        gssize *out_idx)
-{
-	gsize i, j, k;
-	gsize found = 0;
-
-	for (i = 0; i < n_needles; i++) {
-		gssize idx = -1;
-
-		for (j = 0; j < n_elements; j++) {
-
-			/* no duplicates */
-			for (k = 0; k < i; k++) {
-				if (out_idx[k] == j)
-					goto next;
-			}
-
-			if (equal_fcn (elements[j], needles[i], user_data)) {
-				idx = j;
-				break;
-			}
-next:
-			;
-		}
-
-		out_idx[i] = idx;
-		if (idx >= 0)
-			found++;
-	}
-
-	return found;
+nmtst_find_all_indexes(gpointer *elements,
+                       gsize     n_elements,
+                       gpointer *needles,
+                       gsize     n_needles,
+                       gboolean (*equal_fcn)(gpointer element, gpointer needle, gpointer user_data),
+                       gpointer user_data,
+                       gssize * out_idx)
+{
+    gsize i, j, k;
+    gsize found = 0;
+
+    for (i = 0; i < n_needles; i++) {
+        gssize idx = -1;
+
+        for (j = 0; j < n_elements; j++) {
+            /* no duplicates */
+            for (k = 0; k < i; k++) {
+                if (out_idx[k] == j)
+                    goto next;
+            }
+
+            if (equal_fcn(elements[j], needles[i], user_data)) {
+                idx = j;
+                break;
+            }
+next:;
+        }
+
+        out_idx[i] = idx;
+        if (idx >= 0)
+            found++;
+    }
+
+    return found;
 }
 
 /*****************************************************************************/
 
-#define __define_nmtst_static(NUM,SIZE) \
-static inline const char * \
-nmtst_static_##SIZE##_##NUM (const char *str) \
-{ \
-	gsize l; \
-	static char buf[SIZE]; \
-\
-	if (!str) \
-		return NULL; \
-	l = g_strlcpy (buf, str, sizeof (buf)); \
-	g_assert (l < sizeof (buf)); \
-	return buf; \
-}
-__define_nmtst_static(01, 1024)
-__define_nmtst_static(02, 1024)
-__define_nmtst_static(03, 1024)
+#define __define_nmtst_static(NUM, SIZE)                                   \
+    static inline const char *nmtst_static_##SIZE##_##NUM(const char *str) \
+    {                                                                      \
+        gsize                        l;                                    \
+        static _nm_thread_local char buf[SIZE];                            \
+                                                                           \
+        if (!str)                                                          \
+            return NULL;                                                   \
+        l = g_strlcpy(buf, str, sizeof(buf));                              \
+        g_assert(l < sizeof(buf));                                         \
+        return buf;                                                        \
+    }
+__define_nmtst_static(01, 1024) __define_nmtst_static(02, 1024) __define_nmtst_static(03, 1024)
 #undef __define_nmtst_static
 
-#if defined (__NM_UTILS_H__) || defined (NM_UTILS_H)
+#if defined(__NM_UTILS_H__) || defined(NM_UTILS_H)
 
-#define NMTST_UUID_INIT(uuid) \
-	gs_free char *_nmtst_hidden_##uuid = nm_utils_uuid_generate (); \
-	const char *const uuid = _nmtst_hidden_##uuid
+    #define NMTST_UUID_INIT(uuid)                                          \
+        gs_free char *    _nmtst_hidden_##uuid = nm_utils_uuid_generate(); \
+        const char *const uuid                 = _nmtst_hidden_##uuid
 
-static inline const char *
-nmtst_uuid_generate (void)
+    static inline const char *nmtst_uuid_generate(void)
 {
-	static char u[37];
-	gs_free char *m = NULL;
+    static _nm_thread_local char u[37];
+    gs_free char *               m = NULL;
 
-	m = nm_utils_uuid_generate ();
-	g_assert (m && strlen (m) == sizeof (u) - 1);
-	memcpy (u, m, sizeof (u));
-	return u;
+    m = nm_utils_uuid_generate();
+    g_assert(m && strlen(m) == sizeof(u) - 1);
+    memcpy(u, m, sizeof(u));
+    return u;
 }
 
 #endif
 
-#define nmtst_assert_str_has_substr(str, substr) \
-	G_STMT_START { \
-		const char *__str = (str); \
-		const char *__substr = (substr); \
-		\
-		g_assert (__str); \
-		g_assert (__substr); \
-		if (strstr (__str, __substr) == NULL) \
-			g_error ("%s:%d: Expects \"%s\" but got \"%s\"", __FILE__, __LINE__, __substr, __str); \
-	} G_STMT_END
+#define nmtst_assert_str_has_substr(str, substr)                                                  \
+    G_STMT_START                                                                                  \
+    {                                                                                             \
+        const char *__str    = (str);                                                             \
+        const char *__substr = (substr);                                                          \
+                                                                                                  \
+        g_assert(__str);                                                                          \
+        g_assert(__substr);                                                                       \
+        if (strstr(__str, __substr) == NULL)                                                      \
+            g_error("%s:%d: Expects \"%s\" but got \"%s\"", __FILE__, __LINE__, __substr, __str); \
+    }                                                                                             \
+    G_STMT_END
 
-static inline guint32
-nmtst_inet4_from_string (const char *str)
+static inline in_addr_t
+nmtst_inet4_from_string(const char *str)
 {
-	guint32 addr;
-	int success;
+    in_addr_t addr;
+    int       success;
 
-	if (!str)
-		return 0;
+    if (!str)
+        return 0;
 
-	success = inet_pton (AF_INET, str, &addr);
+    success = inet_pton(AF_INET, str, &addr);
 
-	g_assert (success == 1);
+    g_assert(success == 1);
 
-	return addr;
+    return addr;
 }
 
 static inline const struct in6_addr *
-nmtst_inet6_from_string (const char *str)
+nmtst_inet6_from_string(const char *str)
 {
-	static struct in6_addr addr;
-	int success;
+    static _nm_thread_local struct in6_addr addr;
+    int                                     success;
 
-	if (!str)
-		addr = in6addr_any;
-	else {
-		success = inet_pton (AF_INET6, str, &addr);
-		g_assert (success == 1);
-	}
+    if (!str)
+        addr = in6addr_any;
+    else {
+        success = inet_pton(AF_INET6, str, &addr);
+        g_assert(success == 1);
+    }
 
-	return &addr;
+    return &addr;
 }
 
 static inline gconstpointer
-nmtst_inet_from_string (int addr_family, const char *str)
+nmtst_inet_from_string(int addr_family, const char *str)
 {
-	if (addr_family == AF_INET) {
-		static in_addr_t a;
+    if (addr_family == AF_INET) {
+        static in_addr_t a;
 
-		a = nmtst_inet4_from_string (str);
-		return &a;
-	}
-	if (addr_family == AF_INET6)
-		return nmtst_inet6_from_string (str);
+        a = nmtst_inet4_from_string(str);
+        return &a;
+    }
+    if (addr_family == AF_INET6)
+        return nmtst_inet6_from_string(str);
 
-	g_assert_not_reached ();
-	return NULL;
+    g_assert_not_reached();
+    return NULL;
 }
 
 static inline const char *
-nmtst_inet_to_string (int addr_family, gconstpointer addr)
+nmtst_inet_to_string(int addr_family, gconstpointer addr)
 {
-	static char buf[NM_CONST_MAX (INET6_ADDRSTRLEN, INET_ADDRSTRLEN)];
+    static _nm_thread_local char buf[NM_CONST_MAX(INET6_ADDRSTRLEN, INET_ADDRSTRLEN)];
 
-	g_assert (NM_IN_SET (addr_family, AF_INET, AF_INET6));
-	g_assert (addr);
+    g_assert(NM_IN_SET(addr_family, AF_INET, AF_INET6));
+    g_assert(addr);
 
-	if (inet_ntop (addr_family, addr, buf, sizeof (buf)) != buf)
-		g_assert_not_reached ();
+    if (inet_ntop(addr_family, addr, buf, sizeof(buf)) != buf)
+        g_assert_not_reached();
 
-	return buf;
+    return buf;
 }
 
 static inline const char *
-nmtst_inet4_to_string (in_addr_t addr)
+nmtst_inet4_to_string(in_addr_t addr)
 {
-	return nmtst_inet_to_string (AF_INET, &addr);
+    return nmtst_inet_to_string(AF_INET, &addr);
 }
 
 static inline const char *
-nmtst_inet6_to_string (const struct in6_addr *addr)
+nmtst_inet6_to_string(const struct in6_addr *addr)
 {
-	return nmtst_inet_to_string (AF_INET6, addr);
+    return nmtst_inet_to_string(AF_INET6, addr);
 }
 
 static inline void
-_nmtst_assert_ip4_address (const char *file, int line, in_addr_t addr, const char *str_expected)
+_nmtst_assert_ip4_address(const char *file, int line, in_addr_t addr, const char *str_expected)
 {
-	if (nmtst_inet4_from_string (str_expected) != addr) {
-		char buf[100];
+    if (nmtst_inet4_from_string(str_expected) != addr) {
+        char buf[100];
 
-		g_error ("%s:%d: Unexpected IPv4 address: expected %s, got %s",
-		         file, line, str_expected ?: "0.0.0.0",
-		         inet_ntop (AF_INET, &addr, buf, sizeof (buf)));
-	}
+        g_error("%s:%d: Unexpected IPv4 address: expected %s, got %s",
+                file,
+                line,
+                str_expected ?: "0.0.0.0",
+                inet_ntop(AF_INET, &addr, buf, sizeof(buf)));
+    }
 }
-#define nmtst_assert_ip4_address(addr, str_expected) _nmtst_assert_ip4_address (__FILE__, __LINE__, addr, str_expected)
+#define nmtst_assert_ip4_address(addr, str_expected) \
+    _nmtst_assert_ip4_address(__FILE__, __LINE__, addr, str_expected)
 
 static inline void
-_nmtst_assert_ip6_address (const char *file, int line, const struct in6_addr *addr, const char *str_expected)
-{
-	struct in6_addr any = in6addr_any;
-
-	if (!addr)
-		addr = &any;
-
-	if (memcmp (nmtst_inet6_from_string (str_expected), addr, sizeof (*addr)) != 0) {
-		char buf[100];
-
-		g_error ("%s:%d: Unexpected IPv6 address: expected %s, got %s",
-		         file, line, str_expected ?: "::",
-		         inet_ntop (AF_INET6, addr, buf, sizeof (buf)));
-	}
-}
-#define nmtst_assert_ip6_address(addr, str_expected) _nmtst_assert_ip6_address (__FILE__, __LINE__, addr, str_expected)
+_nmtst_assert_ip6_address(const char *           file,
+                          int                    line,
+                          const struct in6_addr *addr,
+                          const char *           str_expected)
+{
+    struct in6_addr any = in6addr_any;
+
+    if (!addr)
+        addr = &any;
+
+    if (memcmp(nmtst_inet6_from_string(str_expected), addr, sizeof(*addr)) != 0) {
+        char buf[100];
+
+        g_error("%s:%d: Unexpected IPv6 address: expected %s, got %s",
+                file,
+                line,
+                str_expected ?: "::",
+                inet_ntop(AF_INET6, addr, buf, sizeof(buf)));
+    }
+}
+#define nmtst_assert_ip6_address(addr, str_expected) \
+    _nmtst_assert_ip6_address(__FILE__, __LINE__, addr, str_expected)
+
+#define nmtst_assert_ip_address(addr_family, addr, str_expected)                        \
+    G_STMT_START                                                                        \
+    {                                                                                   \
+        if (NM_IS_IPv4(addr_family))                                                    \
+            nmtst_assert_ip4_address(*((const in_addr_t *) (addr)), (str_expected));    \
+        else                                                                            \
+            nmtst_assert_ip6_address((const struct in6_addr *) (addr), (str_expected)); \
+    }                                                                                   \
+    G_STMT_END
 
 #define nmtst_spawn_sync(working_directory, standard_out, standard_err, assert_exit_status, ...) \
-	__nmtst_spawn_sync (working_directory, standard_out, standard_err, assert_exit_status, ##__VA_ARGS__, NULL)
-static inline int
-__nmtst_spawn_sync (const char *working_directory, char **standard_out, char **standard_err, int assert_exit_status, ...) G_GNUC_NULL_TERMINATED;
+    __nmtst_spawn_sync(working_directory,                                                        \
+                       standard_out,                                                             \
+                       standard_err,                                                             \
+                       assert_exit_status,                                                       \
+                       ##__VA_ARGS__,                                                            \
+                       NULL)
+static inline int __nmtst_spawn_sync(const char *working_directory,
+                                     char **     standard_out,
+                                     char **     standard_err,
+                                     int         assert_exit_status,
+                                     ...) G_GNUC_NULL_TERMINATED;
 static inline int
-__nmtst_spawn_sync (const char *working_directory, char **standard_out, char **standard_err, int assert_exit_status, ...)
-{
-	int exit_status = 0;
-	GError *error = NULL;
-	char *arg;
-	va_list va_args;
-	GPtrArray *argv = g_ptr_array_new ();
-	gboolean success;
-
-	va_start (va_args, assert_exit_status);
-	while ((arg = va_arg (va_args, char *)))
-		g_ptr_array_add (argv, arg);
-	va_end (va_args);
-
-	g_assert (argv->len >= 1);
-	g_ptr_array_add (argv, NULL);
-
-	success = g_spawn_sync (working_directory,
-	                        (char**) argv->pdata,
-	                        NULL,
-	                        0 /*G_SPAWN_DEFAULT*/,
-	                        NULL,
-	                        NULL,
-	                        standard_out,
-	                        standard_err,
-	                        &exit_status,
-	                        &error);
-	if (!success)
-		g_error ("nmtst_spawn_sync(%s): %s", ((char **) argv->pdata)[0], error->message);
-	g_assert (!error);
-
-	g_assert (!standard_out || *standard_out);
-	g_assert (!standard_err || *standard_err);
-
-	if (assert_exit_status != -1) {
-		/* exit status is a guint8 on success. Set @assert_exit_status to -1
-		 * not to check for the exit status. */
-		g_assert (WIFEXITED (exit_status));
-		g_assert_cmpint (WEXITSTATUS (exit_status), ==, assert_exit_status);
-	}
-
-	g_ptr_array_free (argv, TRUE);
-	return exit_status;
+__nmtst_spawn_sync(const char *working_directory,
+                   char **     standard_out,
+                   char **     standard_err,
+                   int         assert_exit_status,
+                   ...)
+{
+    int        exit_status = 0;
+    GError *   error       = NULL;
+    char *     arg;
+    va_list    va_args;
+    GPtrArray *argv = g_ptr_array_new();
+    gboolean   success;
+
+    va_start(va_args, assert_exit_status);
+    while ((arg = va_arg(va_args, char *)))
+        g_ptr_array_add(argv, arg);
+    va_end(va_args);
+
+    g_assert(argv->len >= 1);
+    g_ptr_array_add(argv, NULL);
+
+    success = g_spawn_sync(working_directory,
+                           (char **) argv->pdata,
+                           NULL,
+                           0 /*G_SPAWN_DEFAULT*/,
+                           NULL,
+                           NULL,
+                           standard_out,
+                           standard_err,
+                           &exit_status,
+                           &error);
+    if (!success)
+        g_error("nmtst_spawn_sync(%s): %s", ((char **) argv->pdata)[0], error->message);
+    g_assert(!error);
+
+    g_assert(!standard_out || *standard_out);
+    g_assert(!standard_err || *standard_err);
+
+    if (assert_exit_status != -1) {
+        /* exit status is a guint8 on success. Set @assert_exit_status to -1
+         * not to check for the exit status. */
+        g_assert(WIFEXITED(exit_status));
+        g_assert_cmpint(WEXITSTATUS(exit_status), ==, assert_exit_status);
+    }
+
+    g_ptr_array_free(argv, TRUE);
+    return exit_status;
 }
 
 /*****************************************************************************/
 
 static inline char *
-nmtst_file_resolve_relative_path (const char *rel, const char *cwd)
+nmtst_file_resolve_relative_path(const char *rel, const char *cwd)
 {
-	gs_free char *cwd_free = NULL;
+    gs_free char *cwd_free = NULL;
 
-	g_assert (rel && *rel);
+    g_assert(rel && *rel);
 
-	if (g_path_is_absolute (rel))
-		return g_strdup (rel);
+    if (g_path_is_absolute(rel))
+        return g_strdup(rel);
 
-	if (!cwd)
-		cwd = cwd_free = g_get_current_dir ();
-	return g_build_filename (cwd, rel, NULL);
+    if (!cwd)
+        cwd = cwd_free = g_get_current_dir();
+    return g_build_filename(cwd, rel, NULL);
 }
 
 static inline char *
-nmtst_file_get_contents (const char *filename)
-{
-	GError *error = NULL;
-	gboolean success;
-	char *contents = NULL;
-	gsize len;
-
-	success = g_file_get_contents (filename, &contents, &len, &error);
-	nmtst_assert_success (success && contents, error);
-	g_assert_cmpint (strlen (contents), ==, len);
-	return contents;
-}
-
-#define nmtst_file_set_contents_size(filename, content, size) \
-	G_STMT_START { \
-		GError *_error = NULL; \
-		gboolean _success; \
-		const char *_content = (content); \
-		gssize _size = (size); \
-		\
-		g_assert (_content); \
-		\
-		if (_size < 0) { \
-			g_assert (_size == -1); \
-			_size = strlen (_content); \
-		} \
-		\
-		_success = g_file_set_contents ((filename), _content, _size, &_error); \
-		nmtst_assert_success (_success, _error); \
-	} G_STMT_END
+nmtst_file_get_contents(const char *filename)
+{
+    GError * error = NULL;
+    gboolean success;
+    char *   contents = NULL;
+    gsize    len;
+
+    success = g_file_get_contents(filename, &contents, &len, &error);
+    nmtst_assert_success(success && contents, error);
+    g_assert_cmpint(strlen(contents), ==, len);
+    return contents;
+}
+
+#define nmtst_file_set_contents_size(filename, content, size)                 \
+    G_STMT_START                                                              \
+    {                                                                         \
+        GError *    _error = NULL;                                            \
+        gboolean    _success;                                                 \
+        const char *_content = (content);                                     \
+        gssize      _size    = (size);                                        \
+                                                                              \
+        g_assert(_content);                                                   \
+                                                                              \
+        if (_size < 0) {                                                      \
+            g_assert(_size == -1);                                            \
+            _size = strlen(_content);                                         \
+        }                                                                     \
+                                                                              \
+        _success = g_file_set_contents((filename), _content, _size, &_error); \
+        nmtst_assert_success(_success, _error);                               \
+    }                                                                         \
+    G_STMT_END
 
 #define nmtst_file_set_contents(filename, content) \
-	nmtst_file_set_contents_size (filename, content, -1)
+    nmtst_file_set_contents_size(filename, content, -1)
 
 /*****************************************************************************/
 
 static inline void
-nmtst_file_unlink_if_exists (const char *name)
+nmtst_file_unlink_if_exists(const char *name)
 {
-	int errsv;
+    int errsv;
 
-	g_assert (name && name[0]);
+    g_assert(name && name[0]);
 
-	if (unlink (name) != 0) {
-		errsv = errno;
-		if (errsv != ENOENT)
-			g_error ("nmtst_file_unlink_if_exists(%s): failed with %s", name, nm_strerror_native (errsv));
-	}
+    if (unlink(name) != 0) {
+        errsv = errno;
+        if (errsv != ENOENT)
+            g_error("nmtst_file_unlink_if_exists(%s): failed with %s",
+                    name,
+                    nm_strerror_native(errsv));
+    }
 }
 
 static inline void
-nmtst_file_unlink (const char *name)
+nmtst_file_unlink(const char *name)
 {
-	int errsv;
+    int errsv;
 
-	g_assert (name && name[0]);
+    g_assert(name && name[0]);
 
-	if (unlink (name) != 0) {
-		errsv = errno;
-		g_error ("nmtst_file_unlink(%s): failed with %s", name, nm_strerror_native (errsv));
-	}
+    if (unlink(name) != 0) {
+        errsv = errno;
+        g_error("nmtst_file_unlink(%s): failed with %s", name, nm_strerror_native(errsv));
+    }
 }
 
 static inline void
-_nmtst_auto_unlinkfile (char **p_name)
+_nmtst_auto_unlinkfile(char **p_name)
 {
-	if (*p_name) {
-		nmtst_file_unlink (*p_name);
-		nm_clear_g_free (p_name);
-	}
+    if (*p_name) {
+        nmtst_file_unlink(*p_name);
+        nm_clear_g_free(p_name);
+    }
 }
 
 #define nmtst_auto_unlinkfile nm_auto(_nmtst_auto_unlinkfile)
@@ -1606,54 +1710,64 @@ _nmtst_auto_unlinkfile (char **p_name)
 /*****************************************************************************/
 
 static inline void
-_nmtst_assert_resolve_relative_path_equals (const char *f1, const char *f2, const char *file, int line)
-{
-	gs_free char *p1 = NULL, *p2 = NULL;
-
-	p1 = nmtst_file_resolve_relative_path (f1, NULL);
-	p2 = nmtst_file_resolve_relative_path (f2, NULL);
-	g_assert (p1 && *p1);
-
-	/* Fixme: later we might need to coalesce repeated '/', "./", and "../".
-	 * For now, it's good enough. */
-	if (g_strcmp0 (p1, p2) != 0)
-		g_error ("%s:%d : filenames don't match \"%s\" vs. \"%s\" // \"%s\" - \"%s\"", file, line, f1, f2, p1, p2);
-}
-#define nmtst_assert_resolve_relative_path_equals(f1, f2) _nmtst_assert_resolve_relative_path_equals (f1, f2, __FILE__, __LINE__);
+_nmtst_assert_resolve_relative_path_equals(const char *f1,
+                                           const char *f2,
+                                           const char *file,
+                                           int         line)
+{
+    gs_free char *p1 = NULL, *p2 = NULL;
+
+    p1 = nmtst_file_resolve_relative_path(f1, NULL);
+    p2 = nmtst_file_resolve_relative_path(f2, NULL);
+    g_assert(p1 && *p1);
+
+    /* Fixme: later we might need to coalesce repeated '/', "./", and "../".
+     * For now, it's good enough. */
+    if (g_strcmp0(p1, p2) != 0)
+        g_error("%s:%d : filenames don't match \"%s\" vs. \"%s\" // \"%s\" - \"%s\"",
+                file,
+                line,
+                f1,
+                f2,
+                p1,
+                p2);
+}
+#define nmtst_assert_resolve_relative_path_equals(f1, f2) \
+    _nmtst_assert_resolve_relative_path_equals(f1, f2, __FILE__, __LINE__);
 
 /*****************************************************************************/
 
 #ifdef __NETWORKMANAGER_LOGGING_H__
 static inline gpointer
-nmtst_logging_disable (gboolean always)
+nmtst_logging_disable(gboolean always)
 {
-	gpointer p;
+    gpointer p;
 
-	g_assert (nmtst_initialized ());
-	if (!always && __nmtst_internal.no_expect_message) {
-		/* The caller does not want to @always suppress logging. Instead,
-		 * the caller wants to suppress unexpected log messages that would
-		 * fail assertions (since we possibly assert against all unexpected
-		 * log messages).
-		 *
-		 * If the test is run with no-expect-message, then don't suppress
-		 * the loggings, because they also wouldn't fail assertions. */
-		return NULL;
-	}
+    g_assert(nmtst_initialized());
+    if (!always && __nmtst_internal.no_expect_message) {
+        /* The caller does not want to @always suppress logging. Instead,
+         * the caller wants to suppress unexpected log messages that would
+         * fail assertions (since we possibly assert against all unexpected
+         * log messages).
+         *
+         * If the test is run with no-expect-message, then don't suppress
+         * the loggings, because they also wouldn't fail assertions. */
+        return NULL;
+    }
 
-	p = g_memdup (_nm_logging_enabled_state, sizeof (_nm_logging_enabled_state));
-	memset (_nm_logging_enabled_state, 0, sizeof (_nm_logging_enabled_state));
-	return p;
+    p = g_memdup(_nm_logging_enabled_state, sizeof(_nm_logging_enabled_state));
+    memset(_nm_logging_enabled_state, 0, sizeof(_nm_logging_enabled_state));
+    return p;
 }
 
 static inline void
-nmtst_logging_reenable (gpointer old_state)
+nmtst_logging_reenable(gpointer old_state)
 {
-	g_assert (nmtst_initialized ());
-	if (old_state) {
-		memcpy (_nm_logging_enabled_state, old_state, sizeof (_nm_logging_enabled_state));
-		g_free (old_state);
-	}
+    g_assert(nmtst_initialized());
+    if (old_state) {
+        memcpy(_nm_logging_enabled_state, old_state, sizeof(_nm_logging_enabled_state));
+        g_free(old_state);
+    }
 }
 #endif
 
@@ -1661,616 +1775,639 @@ nmtst_logging_reenable (gpointer old_state)
 
 #ifdef NM_SETTING_IP_CONFIG_H
 static inline void
-nmtst_setting_ip_config_add_address (NMSettingIPConfig *s_ip,
-                                     const char *address,
-                                     guint prefix)
+nmtst_setting_ip_config_add_address(NMSettingIPConfig *s_ip, const char *address, guint prefix)
 {
-	NMIPAddress *addr;
-	int family;
+    NMIPAddress *addr;
+    int          family;
 
-	g_assert (s_ip);
+    g_assert(s_ip);
 
-	if (nm_utils_ipaddr_is_valid (AF_INET, address))
-		family = AF_INET;
-	else if (nm_utils_ipaddr_is_valid (AF_INET6, address))
-		family = AF_INET6;
-	else
-		g_assert_not_reached ();
+    if (nm_utils_ipaddr_is_valid(AF_INET, address))
+        family = AF_INET;
+    else if (nm_utils_ipaddr_is_valid(AF_INET6, address))
+        family = AF_INET6;
+    else
+        g_assert_not_reached();
 
-	addr = nm_ip_address_new (family, address, prefix, NULL);
-	g_assert (addr);
-	g_assert (nm_setting_ip_config_add_address (s_ip, addr));
-	nm_ip_address_unref (addr);
+    addr = nm_ip_address_new(family, address, prefix, NULL);
+    g_assert(addr);
+    g_assert(nm_setting_ip_config_add_address(s_ip, addr));
+    nm_ip_address_unref(addr);
 }
 
 static inline void
-nmtst_setting_ip_config_add_route (NMSettingIPConfig *s_ip,
-                                   const char *dest,
-                                   guint prefix,
-                                   const char *next_hop,
-                                   gint64 metric)
+nmtst_setting_ip_config_add_route(NMSettingIPConfig *s_ip,
+                                  const char *       dest,
+                                  guint              prefix,
+                                  const char *       next_hop,
+                                  gint64             metric)
 {
-	NMIPRoute *route;
-	int family;
+    NMIPRoute *route;
+    int        family;
 
-	g_assert (s_ip);
+    g_assert(s_ip);
 
-	if (nm_utils_ipaddr_is_valid (AF_INET, dest))
-		family = AF_INET;
-	else if (nm_utils_ipaddr_is_valid (AF_INET6, dest))
-		family = AF_INET6;
-	else
-		g_assert_not_reached ();
+    if (nm_utils_ipaddr_is_valid(AF_INET, dest))
+        family = AF_INET;
+    else if (nm_utils_ipaddr_is_valid(AF_INET6, dest))
+        family = AF_INET6;
+    else
+        g_assert_not_reached();
 
-	route = nm_ip_route_new (family, dest, prefix, next_hop, metric, NULL);
-	g_assert (route);
-	g_assert (nm_setting_ip_config_add_route (s_ip, route));
-	nm_ip_route_unref (route);
+    route = nm_ip_route_new(family, dest, prefix, next_hop, metric, NULL);
+    g_assert(route);
+    g_assert(nm_setting_ip_config_add_route(s_ip, route));
+    nm_ip_route_unref(route);
 }
 
 static inline void
-nmtst_assert_route_attribute_string (NMIPRoute *route, const char *name, const char *value)
+nmtst_assert_route_attribute_string(NMIPRoute *route, const char *name, const char *value)
 {
-	GVariant *variant;
+    GVariant *variant;
 
-	variant = nm_ip_route_get_attribute (route, name);
-	g_assert (variant);
-	g_assert (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING));
-	g_assert_cmpstr (g_variant_get_string (variant, NULL), ==, value);
+    variant = nm_ip_route_get_attribute(route, name);
+    g_assert(variant);
+    g_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING));
+    g_assert_cmpstr(g_variant_get_string(variant, NULL), ==, value);
 }
 
 static inline void
-nmtst_assert_route_attribute_byte (NMIPRoute *route, const char *name, guchar value)
+nmtst_assert_route_attribute_byte(NMIPRoute *route, const char *name, guchar value)
 {
-	GVariant *variant;
+    GVariant *variant;
 
-	variant = nm_ip_route_get_attribute (route, name);
-	g_assert (variant);
-	g_assert (g_variant_is_of_type (variant, G_VARIANT_TYPE_BYTE));
-	g_assert_cmpint (g_variant_get_byte (variant), ==, value);
+    variant = nm_ip_route_get_attribute(route, name);
+    g_assert(variant);
+    g_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_BYTE));
+    g_assert_cmpint(g_variant_get_byte(variant), ==, value);
 }
 
 static inline void
-nmtst_assert_route_attribute_uint32 (NMIPRoute *route, const char *name, guint32 value)
+nmtst_assert_route_attribute_uint32(NMIPRoute *route, const char *name, guint32 value)
 {
-	GVariant *variant;
+    GVariant *variant;
 
-	variant = nm_ip_route_get_attribute (route, name);
-	g_assert (variant);
-	g_assert (g_variant_is_of_type (variant, G_VARIANT_TYPE_UINT32));
-	g_assert_cmpint (g_variant_get_uint32 (variant), ==, value);
+    variant = nm_ip_route_get_attribute(route, name);
+    g_assert(variant);
+    g_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_UINT32));
+    g_assert_cmpint(g_variant_get_uint32(variant), ==, value);
 }
 
 static inline void
-nmtst_assert_route_attribute_boolean (NMIPRoute *route, const char *name, gboolean value)
+nmtst_assert_route_attribute_boolean(NMIPRoute *route, const char *name, gboolean value)
 {
-	GVariant *variant;
+    GVariant *variant;
 
-	variant = nm_ip_route_get_attribute (route, name);
-	g_assert (variant);
-	g_assert (g_variant_is_of_type (variant, G_VARIANT_TYPE_BOOLEAN));
-	g_assert_cmpint (g_variant_get_boolean (variant), ==, value);
+    variant = nm_ip_route_get_attribute(route, name);
+    g_assert(variant);
+    g_assert(g_variant_is_of_type(variant, G_VARIANT_TYPE_BOOLEAN));
+    g_assert_cmpint(g_variant_get_boolean(variant), ==, value);
 }
 #endif /* NM_SETTING_IP_CONFIG_H */
 
-#if (defined(__NM_SIMPLE_CONNECTION_H__) && defined(__NM_SETTING_CONNECTION_H__)) || (defined(NM_CONNECTION_H))
+#if (defined(__NM_SIMPLE_CONNECTION_H__) && defined(__NM_SETTING_CONNECTION_H__)) \
+    || (defined(NM_CONNECTION_H))
 
 static inline NMConnection *
-nmtst_clone_connection (NMConnection *connection)
+nmtst_clone_connection(NMConnection *connection)
 {
-	g_assert (NM_IS_CONNECTION (connection));
+    g_assert(NM_IS_CONNECTION(connection));
 
-#if defined(__NM_SIMPLE_CONNECTION_H__)
-	return nm_simple_connection_new_clone (connection);
-#else
-	return nm_connection_duplicate (connection);
-#endif
+    #if defined(__NM_SIMPLE_CONNECTION_H__)
+    return nm_simple_connection_new_clone(connection);
+    #else
+    return nm_connection_duplicate(connection);
+    #endif
 }
 
 static inline NMConnection *
-nmtst_create_minimal_connection (const char *id, const char *uuid, const char *type, NMSettingConnection **out_s_con)
+nmtst_create_minimal_connection(const char *          id,
+                                const char *          uuid,
+                                const char *          type,
+                                NMSettingConnection **out_s_con)
 {
-	NMConnection *con;
-	NMSetting *s_base = NULL;
-	NMSettingConnection *s_con;
-	gs_free char *uuid_free = NULL;
+    NMConnection *       con;
+    NMSetting *          s_base = NULL;
+    NMSettingConnection *s_con;
+    gs_free char *       uuid_free = NULL;
 
-	g_assert (id);
+    g_assert(id);
 
-	if (uuid)
-		g_assert (nm_utils_is_uuid (uuid));
-	else
-		uuid = uuid_free = nm_utils_uuid_generate ();
+    if (uuid)
+        g_assert(nm_utils_is_uuid(uuid));
+    else
+        uuid = uuid_free = nm_utils_uuid_generate();
 
-	if (type) {
-		GType type_g;
+    if (type) {
+        GType type_g;
 
-#if defined(__NM_SIMPLE_CONNECTION_H__)
-		type_g = nm_setting_lookup_type (type);
-#else
-		type_g = nm_connection_lookup_setting_type (type);
-#endif
+    #if defined(__NM_SIMPLE_CONNECTION_H__)
+        type_g = nm_setting_lookup_type(type);
+    #else
+        type_g = nm_connection_lookup_setting_type(type);
+    #endif
 
-		g_assert (type_g != G_TYPE_INVALID);
+        g_assert(type_g != G_TYPE_INVALID);
 
-		s_base = g_object_new (type_g, NULL);
-		g_assert (NM_IS_SETTING (s_base));
-	}
+        s_base = g_object_new(type_g, NULL);
+        g_assert(NM_IS_SETTING(s_base));
+    }
 
-#if defined(__NM_SIMPLE_CONNECTION_H__)
-	con = nm_simple_connection_new ();
-#else
-	con = nm_connection_new ();
-#endif
+    #if defined(__NM_SIMPLE_CONNECTION_H__)
+    con = nm_simple_connection_new();
+    #else
+    con = nm_connection_new();
+    #endif
 
-	g_assert (con);
+    g_assert(con);
 
-	s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ());
+    s_con = NM_SETTING_CONNECTION(nm_setting_connection_new());
 
-	g_assert (s_con);
+    g_assert(s_con);
 
-	g_object_set (s_con,
-	              NM_SETTING_CONNECTION_ID, id,
-	              NM_SETTING_CONNECTION_UUID, uuid,
-	              NM_SETTING_CONNECTION_TYPE, type,
-	              NULL);
-	nm_connection_add_setting (con, NM_SETTING (s_con));
+    g_object_set(s_con,
+                 NM_SETTING_CONNECTION_ID,
+                 id,
+                 NM_SETTING_CONNECTION_UUID,
+                 uuid,
+                 NM_SETTING_CONNECTION_TYPE,
+                 type,
+                 NULL);
+    nm_connection_add_setting(con, NM_SETTING(s_con));
 
-	if (s_base)
-		nm_connection_add_setting (con, s_base);
+    if (s_base)
+        nm_connection_add_setting(con, s_base);
 
-	if (out_s_con)
-		*out_s_con = s_con;
-	return con;
+    if (out_s_con)
+        *out_s_con = s_con;
+    return con;
 }
 
 static inline gboolean
-_nmtst_connection_normalize_v (NMConnection *connection, va_list args)
+_nmtst_connection_normalize_v(NMConnection *connection, va_list args)
 {
-	GError *error = NULL;
-	gboolean success;
-	gboolean was_modified = FALSE;
-	GHashTable *parameters = NULL;
-	const char *p_name;
+    GError *    error = NULL;
+    gboolean    success;
+    gboolean    was_modified = FALSE;
+    GHashTable *parameters   = NULL;
+    const char *p_name;
 
-	g_assert (NM_IS_CONNECTION (connection));
+    g_assert(NM_IS_CONNECTION(connection));
 
-	while ((p_name = va_arg (args, const char *))) {
-		if (!parameters)
-			parameters =  g_hash_table_new (g_str_hash, g_str_equal);
-		g_hash_table_insert (parameters, (gpointer *) p_name, va_arg (args, gpointer));
-	}
+    while ((p_name = va_arg(args, const char *))) {
+        if (!parameters)
+            parameters = g_hash_table_new(g_str_hash, g_str_equal);
+        g_hash_table_insert(parameters, (gpointer *) p_name, va_arg(args, gpointer));
+    }
 
-	success = nm_connection_normalize (connection,
-	                                   parameters,
-	                                   &was_modified,
-	                                   &error);
-	g_assert_no_error (error);
-	g_assert (success);
+    success = nm_connection_normalize(connection, parameters, &was_modified, &error);
+    g_assert_no_error(error);
+    g_assert(success);
 
-	if (parameters)
-		g_hash_table_destroy (parameters);
+    if (parameters)
+        g_hash_table_destroy(parameters);
 
-	return was_modified;
+    return was_modified;
 }
 
 static inline gboolean
-_nmtst_connection_normalize (NMConnection *connection, ...)
+_nmtst_connection_normalize(NMConnection *connection, ...)
 {
-	gboolean was_modified;
-	va_list args;
+    gboolean was_modified;
+    va_list  args;
 
-	va_start (args, connection);
-	was_modified = _nmtst_connection_normalize_v (connection, args);
-	va_end (args);
+    va_start(args, connection);
+    was_modified = _nmtst_connection_normalize_v(connection, args);
+    va_end(args);
 
-	return was_modified;
+    return was_modified;
 }
-#define nmtst_connection_normalize(connection, ...) \
-    _nmtst_connection_normalize(connection, ##__VA_ARGS__, NULL)
+    #define nmtst_connection_normalize(connection, ...) \
+        _nmtst_connection_normalize(connection, ##__VA_ARGS__, NULL)
 
 static inline NMConnection *
-_nmtst_connection_duplicate_and_normalize (NMConnection *connection, ...)
+_nmtst_connection_duplicate_and_normalize(NMConnection *connection, ...)
 {
-	va_list args;
+    va_list args;
 
-	connection = nmtst_clone_connection (connection);
+    connection = nmtst_clone_connection(connection);
 
-	va_start (args, connection);
-	_nmtst_connection_normalize_v (connection, args);
-	va_end (args);
+    va_start(args, connection);
+    _nmtst_connection_normalize_v(connection, args);
+    va_end(args);
 
-	return connection;
+    return connection;
 }
-#define nmtst_connection_duplicate_and_normalize(connection, ...) \
-    _nmtst_connection_duplicate_and_normalize(connection, ##__VA_ARGS__, NULL)
+    #define nmtst_connection_duplicate_and_normalize(connection, ...) \
+        _nmtst_connection_duplicate_and_normalize(connection, ##__VA_ARGS__, NULL)
 
 static inline void
-nmtst_assert_connection_equals (NMConnection *a, gboolean normalize_a, NMConnection *b, gboolean normalize_b)
-{
-	gboolean compare;
-	gs_unref_object NMConnection *a2 = NULL;
-	gs_unref_object NMConnection *b2 = NULL;
-	GHashTable *out_settings = NULL;
-
-	g_assert (NM_IS_CONNECTION (a));
-	g_assert (NM_IS_CONNECTION (b));
-
-	if (normalize_a)
-		a = a2 = nmtst_connection_duplicate_and_normalize (a);
-	if (normalize_b)
-		b = b2 = nmtst_connection_duplicate_and_normalize (b);
-
-	compare = nm_connection_diff (a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_settings);
-	if (!compare || out_settings) {
-		const char *name, *pname;
-		GHashTable *setting;
-		GHashTableIter iter, iter2;
-
-		__NMTST_LOG (g_message, ">>> ASSERTION nmtst_assert_connection_equals() fails");
-		if (out_settings) {
-			g_hash_table_iter_init (&iter, out_settings);
-			while (g_hash_table_iter_next (&iter, (gpointer *) &name, (gpointer *) &setting)) {
-				__NMTST_LOG (g_message, ">>> differences in setting '%s':", name);
-
-				g_hash_table_iter_init (&iter2, setting);
-				while (g_hash_table_iter_next (&iter2, (gpointer *) &pname, NULL))
-					__NMTST_LOG (g_message, ">>> differences in setting '%s.%s'", name, pname);
-			}
-		}
-
-#ifdef __NM_KEYFILE_INTERNAL_H__
-		{
-			gs_unref_keyfile GKeyFile *kf_a = NULL, *kf_b = NULL;
-			gs_free char *str_a = NULL, *str_b = NULL;
-
-			kf_a = nm_keyfile_write (a, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
-			kf_b = nm_keyfile_write (b, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
-
-			if (kf_a)
-				str_a = g_key_file_to_data (kf_a, NULL, NULL);
-			if (kf_b)
-				str_b = g_key_file_to_data (kf_b, NULL, NULL);
-
-			__NMTST_LOG (g_message, ">>> Connection A as kf (*WARNING: keyfile representation might not show the difference*):\n%s", str_a);
-			__NMTST_LOG (g_message, ">>> Connection B as kf (*WARNING: keyfile representation might not show the difference*):\n%s", str_b);
-		}
-#endif
-	}
-	g_assert (compare);
-	g_assert (!out_settings);
-
-	compare = nm_connection_compare (a, b, NM_SETTING_COMPARE_FLAG_EXACT);
-	g_assert (compare);
+nmtst_assert_connection_equals(NMConnection *a,
+                               gboolean      normalize_a,
+                               NMConnection *b,
+                               gboolean      normalize_b)
+{
+    gboolean        compare;
+    gs_unref_object NMConnection *a2           = NULL;
+    gs_unref_object NMConnection *b2           = NULL;
+    GHashTable *                  out_settings = NULL;
+
+    g_assert(NM_IS_CONNECTION(a));
+    g_assert(NM_IS_CONNECTION(b));
+
+    if (normalize_a)
+        a = a2 = nmtst_connection_duplicate_and_normalize(a);
+    if (normalize_b)
+        b = b2 = nmtst_connection_duplicate_and_normalize(b);
+
+    compare = nm_connection_diff(a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_settings);
+    if (!compare || out_settings) {
+        const char *   name, *pname;
+        GHashTable *   setting;
+        GHashTableIter iter, iter2;
+
+        __NMTST_LOG(g_message, ">>> ASSERTION nmtst_assert_connection_equals() fails");
+        if (out_settings) {
+            g_hash_table_iter_init(&iter, out_settings);
+            while (g_hash_table_iter_next(&iter, (gpointer *) &name, (gpointer *) &setting)) {
+                __NMTST_LOG(g_message, ">>> differences in setting '%s':", name);
+
+                g_hash_table_iter_init(&iter2, setting);
+                while (g_hash_table_iter_next(&iter2, (gpointer *) &pname, NULL))
+                    __NMTST_LOG(g_message, ">>> differences in setting '%s.%s'", name, pname);
+            }
+        }
+
+    #ifdef __NM_KEYFILE_INTERNAL_H__
+        {
+            nm_auto_unref_keyfile GKeyFile *kf_a = NULL, *kf_b = NULL;
+            gs_free char *                  str_a = NULL, *str_b = NULL;
+
+            kf_a = nm_keyfile_write(a, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
+            kf_b = nm_keyfile_write(b, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
+
+            if (kf_a)
+                str_a = g_key_file_to_data(kf_a, NULL, NULL);
+            if (kf_b)
+                str_b = g_key_file_to_data(kf_b, NULL, NULL);
+
+            __NMTST_LOG(g_message,
+                        ">>> Connection A as kf (*WARNING: keyfile representation might not show "
+                        "the difference*):\n%s",
+                        str_a);
+            __NMTST_LOG(g_message,
+                        ">>> Connection B as kf (*WARNING: keyfile representation might not show "
+                        "the difference*):\n%s",
+                        str_b);
+        }
+    #endif
+    }
+    g_assert(compare);
+    g_assert(!out_settings);
+
+    compare = nm_connection_compare(a, b, NM_SETTING_COMPARE_FLAG_EXACT);
+    g_assert(compare);
 }
 
 static inline void
-nmtst_assert_connection_verifies (NMConnection *con)
+nmtst_assert_connection_verifies(NMConnection *con)
 {
-	/* assert that the connection does verify, it might be normaliziable or not */
-	GError *error = NULL;
-	gboolean success;
+    /* assert that the connection does verify, it might be normaliziable or not */
+    GError * error = NULL;
+    gboolean success;
 
-	g_assert (NM_IS_CONNECTION (con));
+    g_assert(NM_IS_CONNECTION(con));
 
-	success = nm_connection_verify (con, &error);
-	g_assert_no_error (error);
-	g_assert (success);
+    success = nm_connection_verify(con, &error);
+    g_assert_no_error(error);
+    g_assert(success);
 }
 
 static inline void
-nmtst_assert_connection_verifies_without_normalization (NMConnection *con)
+nmtst_assert_connection_verifies_without_normalization(NMConnection *con)
 {
-	/* assert that the connection verifies and does not need any normalization */
-	GError *error = NULL;
-	gboolean success;
-	gboolean was_modified = FALSE;
-	gs_unref_object NMConnection *clone = NULL;
+    /* assert that the connection verifies and does not need any normalization */
+    GError *        error = NULL;
+    gboolean        success;
+    gboolean        was_modified        = FALSE;
+    gs_unref_object NMConnection *clone = NULL;
 
-	clone = nmtst_clone_connection (con);
+    clone = nmtst_clone_connection(con);
 
-	nmtst_assert_connection_verifies (con);
+    nmtst_assert_connection_verifies(con);
 
-	success = nm_connection_normalize (clone, NULL, &was_modified, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	nmtst_assert_connection_equals (con, FALSE, clone, FALSE);
-	g_assert (!was_modified);
+    success = nm_connection_normalize(clone, NULL, &was_modified, &error);
+    g_assert_no_error(error);
+    g_assert(success);
+    nmtst_assert_connection_equals(con, FALSE, clone, FALSE);
+    g_assert(!was_modified);
 }
 
 static inline void
-nmtst_assert_connection_verifies_and_normalizable (NMConnection *con)
+nmtst_assert_connection_verifies_and_normalizable(NMConnection *con)
 {
-	/* assert that the connection does verify, but normalization still modifies it */
-	GError *error = NULL;
-	gboolean success;
-	gboolean was_modified = FALSE;
-	gs_unref_object NMConnection *clone = NULL;
+    /* assert that the connection does verify, but normalization still modifies it */
+    GError *        error = NULL;
+    gboolean        success;
+    gboolean        was_modified        = FALSE;
+    gs_unref_object NMConnection *clone = NULL;
 
-	clone = nmtst_clone_connection (con);
+    clone = nmtst_clone_connection(con);
 
-	nmtst_assert_connection_verifies (con);
+    nmtst_assert_connection_verifies(con);
 
-	success = nm_connection_normalize (clone, NULL, &was_modified, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_assert (was_modified);
+    success = nm_connection_normalize(clone, NULL, &was_modified, &error);
+    g_assert_no_error(error);
+    g_assert(success);
+    g_assert(was_modified);
 
-	/* again! */
-	nmtst_assert_connection_verifies_without_normalization (clone);
+    /* again! */
+    nmtst_assert_connection_verifies_without_normalization(clone);
 }
 
 static inline void
-nmtst_assert_connection_verifies_after_normalization (NMConnection *con,
-                                                      GQuark expect_error_domain,
-                                                      int expect_error_code)
+nmtst_assert_connection_verifies_after_normalization(NMConnection *con,
+                                                     GQuark        expect_error_domain,
+                                                     int           expect_error_code)
 {
-	/* assert that the connection does not verify, but normalization does fix it */
-	GError *error = NULL;
-	gboolean success;
-	gboolean was_modified = FALSE;
-	gs_unref_object NMConnection *clone = NULL;
+    /* assert that the connection does not verify, but normalization does fix it */
+    GError *        error = NULL;
+    gboolean        success;
+    gboolean        was_modified        = FALSE;
+    gs_unref_object NMConnection *clone = NULL;
 
-	clone = nmtst_clone_connection (con);
+    clone = nmtst_clone_connection(con);
 
-	success = nm_connection_verify (con, &error);
-	nmtst_assert_error (error, expect_error_domain, expect_error_code, NULL);
-	g_assert (!success);
-	g_clear_error (&error);
+    success = nm_connection_verify(con, &error);
+    nmtst_assert_error(error, expect_error_domain, expect_error_code, NULL);
+    g_assert(!success);
+    g_clear_error(&error);
 
-	success = nm_connection_normalize (clone, NULL, &was_modified, &error);
-	g_assert_no_error (error);
-	g_assert (success);
-	g_assert (was_modified);
+    success = nm_connection_normalize(clone, NULL, &was_modified, &error);
+    g_assert_no_error(error);
+    g_assert(success);
+    g_assert(was_modified);
 
-	/* again! */
-	nmtst_assert_connection_verifies_without_normalization (clone);
+    /* again! */
+    nmtst_assert_connection_verifies_without_normalization(clone);
 }
 
 static inline void
-nmtst_assert_connection_unnormalizable (NMConnection *con,
-                                        GQuark expect_error_domain,
-                                        int expect_error_code)
+nmtst_assert_connection_unnormalizable(NMConnection *con,
+                                       GQuark        expect_error_domain,
+                                       int           expect_error_code)
 {
-	/* assert that the connection does not verify, and it cannot be fixed by normalization */
+    /* assert that the connection does not verify, and it cannot be fixed by normalization */
 
-	GError *error = NULL;
-	gboolean success;
-	gboolean was_modified = FALSE;
-	gs_unref_object NMConnection *clone = NULL;
+    GError *        error = NULL;
+    gboolean        success;
+    gboolean        was_modified        = FALSE;
+    gs_unref_object NMConnection *clone = NULL;
 
-	clone = nmtst_clone_connection (con);
+    clone = nmtst_clone_connection(con);
 
-	success = nm_connection_verify (con, &error);
-	nmtst_assert_error (error, expect_error_domain, expect_error_code, NULL);
-	g_assert (!success);
-	g_clear_error (&error);
+    success = nm_connection_verify(con, &error);
+    nmtst_assert_error(error, expect_error_domain, expect_error_code, NULL);
+    g_assert(!success);
+    g_clear_error(&error);
 
-	success = nm_connection_normalize (clone, NULL, &was_modified, &error);
-	nmtst_assert_error (error, expect_error_domain, expect_error_code, NULL);
-	g_assert (!success);
-	g_assert (!was_modified);
-	nmtst_assert_connection_equals (con, FALSE, clone, FALSE);
-	g_clear_error (&error);
+    success = nm_connection_normalize(clone, NULL, &was_modified, &error);
+    nmtst_assert_error(error, expect_error_domain, expect_error_code, NULL);
+    g_assert(!success);
+    g_assert(!was_modified);
+    nmtst_assert_connection_equals(con, FALSE, clone, FALSE);
+    g_clear_error(&error);
 }
 
 static inline void
-nmtst_assert_setting_verifies (NMSetting *setting)
+nmtst_assert_setting_verifies(NMSetting *setting)
 {
-	/* assert that the setting verifies without an error */
+    /* assert that the setting verifies without an error */
 
-	GError *error = NULL;
-	gboolean success;
+    GError * error = NULL;
+    gboolean success;
 
-	g_assert (NM_IS_SETTING (setting));
+    g_assert(NM_IS_SETTING(setting));
 
-	success = nm_setting_verify (setting, NULL, &error);
-	g_assert_no_error (error);
-	g_assert (success);
+    success = nm_setting_verify(setting, NULL, &error);
+    g_assert_no_error(error);
+    g_assert(success);
 }
 
-#if defined(__NM_SIMPLE_CONNECTION_H__) && NM_CHECK_VERSION (1, 10, 0) && (!defined (NM_VERSION_MAX_ALLOWED) || NM_VERSION_MAX_ALLOWED >= NM_VERSION_1_10)
+    #if defined(__NM_SIMPLE_CONNECTION_H__) && NM_CHECK_VERSION(1, 10, 0) \
+        && (!defined(NM_VERSION_MAX_ALLOWED) || NM_VERSION_MAX_ALLOWED >= NM_VERSION_1_10)
 static inline void
-_nmtst_assert_connection_has_settings (NMConnection *connection, gboolean has_at_least, gboolean has_at_most, ...)
-{
-	gs_unref_hashtable GHashTable *names = NULL;
-	gs_free NMSetting **settings = NULL;
-	va_list ap;
-	const char *name;
-	guint i, len;
-	gs_unref_ptrarray GPtrArray *names_arr = NULL;
-
-	g_assert (NM_IS_CONNECTION (connection));
-
-	names = g_hash_table_new (g_str_hash, g_str_equal);
-	names_arr = g_ptr_array_new ();
-
-	va_start (ap, has_at_most);
-	while ((name = va_arg (ap, const char *))) {
-		if (!nm_g_hash_table_add (names, (gpointer) name))
-			g_assert_not_reached ();
-		g_ptr_array_add (names_arr, (gpointer) name);
-	}
-	va_end (ap);
-
-	g_ptr_array_add (names_arr, NULL);
-
-	settings = nm_connection_get_settings (connection, &len);
-	for (i = 0; i < len; i++) {
-		if (   !g_hash_table_remove (names, nm_setting_get_name (settings[i]))
-		    && has_at_most) {
-			g_error ("nmtst_assert_connection_has_settings(): has setting \"%s\" which is not expected",
-			         nm_setting_get_name (settings[i]));
-		}
-	}
-	if (   g_hash_table_size (names) > 0
-	    && has_at_least) {
-		gs_free char *expected_str = g_strjoinv (" ", (char **) names_arr->pdata);
-		gs_free const char **settings_names = NULL;
-		gs_free char *has_str = NULL;
-
-		settings_names = g_new0 (const char *, len + 1);
-		for (i = 0; i < len; i++)
-			settings_names[i] = nm_setting_get_name (settings[i]);
-		has_str = g_strjoinv (" ", (char **) settings_names);
-
-		g_error ("nmtst_assert_connection_has_settings(): the setting lacks %u expected settings (expected: [%s] vs. has: [%s])",
-		         g_hash_table_size (names),
-		         expected_str,
-		         has_str);
-	}
-}
-#define nmtst_assert_connection_has_settings(connection, ...)          _nmtst_assert_connection_has_settings ((connection), TRUE,  TRUE,  __VA_ARGS__, NULL)
-#define nmtst_assert_connection_has_settings_at_least(connection, ...) _nmtst_assert_connection_has_settings ((connection), TRUE,  FALSE, __VA_ARGS__, NULL)
-#define nmtst_assert_connection_has_settings_at_most(connection, ...)  _nmtst_assert_connection_has_settings ((connection), FALSE, TRUE,  __VA_ARGS__, NULL)
-#endif
+_nmtst_assert_connection_has_settings(NMConnection *connection,
+                                      gboolean      has_at_least,
+                                      gboolean      has_at_most,
+                                      ...)
+{
+    gs_unref_hashtable GHashTable *names = NULL;
+    gs_free NMSetting **settings         = NULL;
+    va_list             ap;
+    const char *        name;
+    guint               i, len;
+    gs_unref_ptrarray GPtrArray *names_arr = NULL;
+
+    g_assert(NM_IS_CONNECTION(connection));
+
+    names     = g_hash_table_new(g_str_hash, g_str_equal);
+    names_arr = g_ptr_array_new();
+
+    va_start(ap, has_at_most);
+    while ((name = va_arg(ap, const char *))) {
+        if (!nm_g_hash_table_add(names, (gpointer) name))
+            g_assert_not_reached();
+        g_ptr_array_add(names_arr, (gpointer) name);
+    }
+    va_end(ap);
+
+    g_ptr_array_add(names_arr, NULL);
+
+    settings = nm_connection_get_settings(connection, &len);
+    for (i = 0; i < len; i++) {
+        if (!g_hash_table_remove(names, nm_setting_get_name(settings[i])) && has_at_most) {
+            g_error(
+                "nmtst_assert_connection_has_settings(): has setting \"%s\" which is not expected",
+                nm_setting_get_name(settings[i]));
+        }
+    }
+    if (g_hash_table_size(names) > 0 && has_at_least) {
+        gs_free char *       expected_str   = g_strjoinv(" ", (char **) names_arr->pdata);
+        gs_free const char **settings_names = NULL;
+        gs_free char *       has_str        = NULL;
+
+        settings_names = g_new0(const char *, len + 1);
+        for (i = 0; i < len; i++)
+            settings_names[i] = nm_setting_get_name(settings[i]);
+        has_str = g_strjoinv(" ", (char **) settings_names);
+
+        g_error("nmtst_assert_connection_has_settings(): the setting lacks %u expected settings "
+                "(expected: [%s] vs. has: [%s])",
+                g_hash_table_size(names),
+                expected_str,
+                has_str);
+    }
+}
+        #define nmtst_assert_connection_has_settings(connection, ...) \
+            _nmtst_assert_connection_has_settings((connection), TRUE, TRUE, __VA_ARGS__, NULL)
+        #define nmtst_assert_connection_has_settings_at_least(connection, ...) \
+            _nmtst_assert_connection_has_settings((connection), TRUE, FALSE, __VA_ARGS__, NULL)
+        #define nmtst_assert_connection_has_settings_at_most(connection, ...) \
+            _nmtst_assert_connection_has_settings((connection), FALSE, TRUE, __VA_ARGS__, NULL)
+    #endif
 
 static inline void
-nmtst_assert_setting_verify_fails (NMSetting *setting,
-                                   GQuark expect_error_domain,
-                                   int expect_error_code)
+nmtst_assert_setting_verify_fails(NMSetting *setting,
+                                  GQuark     expect_error_domain,
+                                  int        expect_error_code)
 {
-	/* assert that the setting verification fails */
+    /* assert that the setting verification fails */
 
-	GError *error = NULL;
-	gboolean success;
+    GError * error = NULL;
+    gboolean success;
 
-	g_assert (NM_IS_SETTING (setting));
+    g_assert(NM_IS_SETTING(setting));
 
-	success = nm_setting_verify (setting, NULL, &error);
-	nmtst_assert_error (error, expect_error_domain, expect_error_code, NULL);
-	g_assert (!success);
-	g_clear_error (&error);
+    success = nm_setting_verify(setting, NULL, &error);
+    nmtst_assert_error(error, expect_error_domain, expect_error_code, NULL);
+    g_assert(!success);
+    g_clear_error(&error);
 }
 
 static inline void
-nmtst_assert_setting_is_equal (gconstpointer /* const NMSetting * */ a,
-                               gconstpointer /* const NMSetting * */ b,
-                               NMSettingCompareFlags flags)
+nmtst_assert_setting_is_equal(gconstpointer /* const NMSetting * */ a,
+                              gconstpointer /* const NMSetting * */ b,
+                              NMSettingCompareFlags                 flags)
 {
-	gs_unref_hashtable GHashTable *hash = NULL;
-	guint32 r = nmtst_get_rand_uint32 ();
+    gs_unref_hashtable GHashTable *hash = NULL;
+    guint32                        r    = nmtst_get_rand_uint32();
 
-	g_assert (NM_IS_SETTING (a));
-	g_assert (NM_IS_SETTING (b));
+    g_assert(NM_IS_SETTING(a));
+    g_assert(NM_IS_SETTING(b));
 
-	if (NM_FLAGS_HAS (r, 0x4))
-		NM_SWAP (a, b);
+    if (NM_FLAGS_HAS(r, 0x4))
+        NM_SWAP(&a, &b);
 
-	g_assert (nm_setting_compare ((NMSetting *) a,
-	                              (NMSetting *) b,
-	                              flags));
+    g_assert(nm_setting_compare((NMSetting *) a, (NMSetting *) b, flags));
 
-	if (NM_FLAGS_HAS (r, 0x8))
-		NM_SWAP (a, b);
+    if (NM_FLAGS_HAS(r, 0x8))
+        NM_SWAP(&a, &b);
 
-	g_assert (nm_setting_diff ((NMSetting *) a,
-	                           (NMSetting *) b,
-	                           flags,
-	                           NM_FLAGS_HAS (r, 0x1),
-	                           &hash));
-	g_assert (!hash);
+    g_assert(nm_setting_diff((NMSetting *) a, (NMSetting *) b, flags, NM_FLAGS_HAS(r, 0x1), &hash));
+    g_assert(!hash);
 }
 #endif
 
 #ifdef __NM_SETTING_PRIVATE_H__
 static inline NMSetting *
-nmtst_assert_setting_dbus_new (GType gtype, GVariant *variant)
+nmtst_assert_setting_dbus_new(GType gtype, GVariant *variant)
 {
-	NMSetting *setting;
-	gs_free_error GError *error = NULL;
+    NMSetting *   setting;
+    gs_free_error GError *error = NULL;
 
-	g_assert (g_type_is_a (gtype, NM_TYPE_SETTING));
-	g_assert (gtype != NM_TYPE_SETTING);
-	g_assert (variant);
-	g_assert (g_variant_is_of_type (variant, NM_VARIANT_TYPE_SETTING));
+    g_assert(g_type_is_a(gtype, NM_TYPE_SETTING));
+    g_assert(gtype != NM_TYPE_SETTING);
+    g_assert(variant);
+    g_assert(g_variant_is_of_type(variant, NM_VARIANT_TYPE_SETTING));
 
-	setting = _nm_setting_new_from_dbus (gtype,
-	                                     variant,
-	                                     NULL,
-	                                     NM_SETTING_PARSE_FLAGS_STRICT,
-	                                     &error);
-	nmtst_assert_success (setting, error);
-	return setting;
+    setting =
+        _nm_setting_new_from_dbus(gtype, variant, NULL, NM_SETTING_PARSE_FLAGS_STRICT, &error);
+    nmtst_assert_success(setting, error);
+    return setting;
 }
 
 static inline void
-nmtst_assert_setting_dbus_roundtrip (gconstpointer /* const NMSetting * */ setting)
+nmtst_assert_setting_dbus_roundtrip(gconstpointer /* const NMSetting * */ setting)
 {
-	gs_unref_object NMSetting *setting2 = NULL;
-	gs_unref_variant GVariant *variant = NULL;
+    gs_unref_object NMSetting *setting2 = NULL;
+    gs_unref_variant GVariant *variant  = NULL;
 
-	g_assert (NM_IS_SETTING (setting));
+    g_assert(NM_IS_SETTING(setting));
 
-	variant = _nm_setting_to_dbus ((NMSetting *) setting, NULL, NM_CONNECTION_SERIALIZE_ALL, NULL);
-	setting2 = nmtst_assert_setting_dbus_new (G_OBJECT_TYPE (setting), variant);
-	nmtst_assert_setting_is_equal (setting, setting2, NM_SETTING_COMPARE_FLAG_EXACT);
+    variant  = _nm_setting_to_dbus((NMSetting *) setting, NULL, NM_CONNECTION_SERIALIZE_ALL, NULL);
+    setting2 = nmtst_assert_setting_dbus_new(G_OBJECT_TYPE(setting), variant);
+    nmtst_assert_setting_is_equal(setting, setting2, NM_SETTING_COMPARE_FLAG_EXACT);
 }
 #endif
 
 #ifdef __NM_UTILS_H__
 static inline void
-nmtst_assert_hwaddr_equals (gconstpointer hwaddr1, gssize hwaddr1_len, const char *expected, const char *file, int line)
-{
-	guint8 buf2[NM_UTILS_HWADDR_LEN_MAX];
-	gsize hwaddr2_len = 1;
-	const char *p;
-	gboolean success;
-
-	g_assert (hwaddr1_len > 0 && hwaddr1_len <= NM_UTILS_HWADDR_LEN_MAX);
-
-	g_assert (expected);
-	for (p = expected; *p; p++) {
-		if (*p == ':' || *p == '-')
-			hwaddr2_len++;
-	}
-	g_assert (hwaddr2_len <= NM_UTILS_HWADDR_LEN_MAX);
-	g_assert (nm_utils_hwaddr_aton (expected, buf2, hwaddr2_len));
-
-	/* Manually check the entire hardware address instead of using
-	 * nm_utils_hwaddr_matches() because that function doesn't compare
-	 * entire InfiniBand addresses for various (legitimate) reasons.
-	 */
-	success = (hwaddr1_len == hwaddr2_len);
-	if (success)
-		success = !memcmp (hwaddr1, buf2, hwaddr1_len);
-	if (!success) {
-		g_error ("assert: %s:%d: hwaddr '%s' (%zd) expected, but got %s (%zd)",
-		         file, line, expected, hwaddr2_len, nm_utils_hwaddr_ntoa (hwaddr1, hwaddr1_len), hwaddr1_len);
-	}
-}
-#define nmtst_assert_hwaddr_equals(hwaddr1, hwaddr1_len, expected) \
-    nmtst_assert_hwaddr_equals (hwaddr1, hwaddr1_len, expected, __FILE__, __LINE__)
+nmtst_assert_hwaddr_equals(gconstpointer hwaddr1,
+                           gssize        hwaddr1_len,
+                           const char *  expected,
+                           const char *  file,
+                           int           line)
+{
+    guint8      buf2[NM_UTILS_HWADDR_LEN_MAX];
+    gsize       hwaddr2_len = 1;
+    const char *p;
+    gboolean    success;
+
+    g_assert(hwaddr1_len > 0 && hwaddr1_len <= NM_UTILS_HWADDR_LEN_MAX);
+
+    g_assert(expected);
+    for (p = expected; *p; p++) {
+        if (*p == ':' || *p == '-')
+            hwaddr2_len++;
+    }
+    g_assert(hwaddr2_len <= NM_UTILS_HWADDR_LEN_MAX);
+    g_assert(nm_utils_hwaddr_aton(expected, buf2, hwaddr2_len));
+
+    /* Manually check the entire hardware address instead of using
+     * nm_utils_hwaddr_matches() because that function doesn't compare
+     * entire InfiniBand addresses for various (legitimate) reasons.
+     */
+    success = (hwaddr1_len == hwaddr2_len);
+    if (success)
+        success = !memcmp(hwaddr1, buf2, hwaddr1_len);
+    if (!success) {
+        g_error("assert: %s:%d: hwaddr '%s' (%zd) expected, but got %s (%zd)",
+                file,
+                line,
+                expected,
+                hwaddr2_len,
+                nm_utils_hwaddr_ntoa(hwaddr1, hwaddr1_len),
+                hwaddr1_len);
+    }
+}
+    #define nmtst_assert_hwaddr_equals(hwaddr1, hwaddr1_len, expected) \
+        nmtst_assert_hwaddr_equals(hwaddr1, hwaddr1_len, expected, __FILE__, __LINE__)
 #endif
 
-#if defined(__NM_SIMPLE_CONNECTION_H__) && defined(__NM_SETTING_CONNECTION_H__) && defined(__NM_KEYFILE_INTERNAL_H__)
+#if defined(__NM_SIMPLE_CONNECTION_H__) && defined(__NM_SETTING_CONNECTION_H__) \
+    && defined(__NM_KEYFILE_INTERNAL_H__)
 
 static inline NMConnection *
-nmtst_create_connection_from_keyfile (const char *keyfile_str, const char *full_filename)
+nmtst_create_connection_from_keyfile(const char *keyfile_str, const char *full_filename)
 {
-	gs_unref_keyfile GKeyFile *keyfile = NULL;
-	gs_free_error GError *error = NULL;
-	gboolean success;
-	NMConnection *con;
-	gs_free char *filename = g_path_get_basename (full_filename);
-	gs_free char *base_dir = g_path_get_dirname (full_filename);
+    nm_auto_unref_keyfile GKeyFile *keyfile = NULL;
+    gs_free_error GError *error             = NULL;
+    gboolean              success;
+    NMConnection *        con;
+    gs_free char *        filename = g_path_get_basename(full_filename);
+    gs_free char *        base_dir = g_path_get_dirname(full_filename);
 
-	g_assert (keyfile_str);
-	g_assert (full_filename && full_filename[0] == '/');
+    g_assert(keyfile_str);
+    g_assert(full_filename && full_filename[0] == '/');
 
-	keyfile =  g_key_file_new ();
-	success = g_key_file_load_from_data (keyfile, keyfile_str, strlen (keyfile_str), G_KEY_FILE_NONE, &error);
-	nmtst_assert_success (success, error);
+    keyfile = g_key_file_new();
+    success = g_key_file_load_from_data(keyfile,
+                                        keyfile_str,
+                                        strlen(keyfile_str),
+                                        G_KEY_FILE_NONE,
+                                        &error);
+    nmtst_assert_success(success, error);
 
-	con = nm_keyfile_read (keyfile, base_dir, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
-	nmtst_assert_success (NM_IS_CONNECTION (con), error);
+    con = nm_keyfile_read(keyfile, base_dir, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
+    nmtst_assert_success(NM_IS_CONNECTION(con), error);
 
-	nm_keyfile_read_ensure_id (con, filename);
-	nm_keyfile_read_ensure_uuid (con, full_filename);
+    nm_keyfile_read_ensure_id(con, filename);
+    nm_keyfile_read_ensure_uuid(con, full_filename);
 
-	nmtst_connection_normalize (con);
+    nmtst_connection_normalize(con);
 
-	return con;
+    return con;
 }
 
 #endif
@@ -2278,268 +2415,305 @@ nmtst_create_connection_from_keyfile (const char *keyfile_str, const char *full_
 #ifdef __NM_CONNECTION_H__
 
 static inline GVariant *
-_nmtst_variant_new_vardict (int dummy, ...)
-{
-	GVariantBuilder builder;
-	va_list ap;
-	const char *name;
-	GVariant *variant;
-
-	g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
-
-	va_start (ap, dummy);
-	while ((name = va_arg (ap, const char *))) {
-		variant = va_arg (ap, GVariant *);
-		g_variant_builder_add (&builder, "{sv}", name, variant);
-	}
-	va_end (ap);
-
-	return g_variant_builder_end (&builder);
-}
-#define nmtst_variant_new_vardict(...) _nmtst_variant_new_vardict (0, __VA_ARGS__, NULL)
-
-#define nmtst_assert_variant_is_of_type(variant, type) \
-	G_STMT_START { \
-		GVariant *_variantx = (variant); \
-		\
-		g_assert (_variantx); \
-		g_assert (g_variant_is_of_type (_variantx, (type))); \
-	} G_STMT_END
-
-#define nmtst_assert_variant_uint32(variant, val) \
-	G_STMT_START { \
-		GVariant *_variant = (variant); \
-		\
-		nmtst_assert_variant_is_of_type (_variant, G_VARIANT_TYPE_UINT32); \
-		g_assert_cmpint (g_variant_get_uint32 (_variant), ==, (val)); \
-	} G_STMT_END
-
-#define nmtst_assert_variant_string(variant, str) \
-	G_STMT_START { \
-		gsize _l; \
-		GVariant *_variant = (variant); \
-		const char *_str = (str); \
-		\
-		nmtst_assert_variant_is_of_type (_variant, G_VARIANT_TYPE_STRING); \
-		g_assert (_str); \
-		g_assert_cmpstr (g_variant_get_string (_variant, &_l), ==, _str); \
-		g_assert_cmpint (_l, ==, strlen (_str)); \
-	} G_STMT_END
-
-#ifdef __NM_SHARED_UTILS_H__
-#define _nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len) \
-	G_STMT_START { \
-		if (memcmp (_ptr2, _ptr, _len) != 0) { \
-			gs_free char *_x1 = NULL; \
-			gs_free char *_x2 = NULL; \
-			const char *_xx1; \
-			const char *_xx2; \
-			\
-			_xx1 = nm_utils_buf_utf8safe_escape (_ptr, _len, NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL, &_x1); \
-			_xx2 = nm_utils_buf_utf8safe_escape (_ptr2, _len, NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL, &_x2); \
-			g_assert_cmpstr (_xx1, ==, _xx2); \
-			g_assert_not_reached (); \
-		} \
-	} G_STMT_END
-#else
-#define _nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len) G_STMT_START { } G_STMT_END
-#endif
-
-#define nmtst_assert_variant_bytestring(variant, ptr, len) \
-	G_STMT_START { \
-		GVariant *_variant = (variant); \
-		gconstpointer _ptr = (ptr); \
-		gconstpointer _ptr2; \
-		gsize _len = (len); \
-		gsize _len2; \
-		\
-		nmtst_assert_variant_is_of_type (_variant, G_VARIANT_TYPE_BYTESTRING); \
-		_ptr2 = g_variant_get_fixed_array (_variant, &_len2, 1); \
-		g_assert_cmpint (_len2, ==, _len); \
-		if (   _len != 0 \
-		    && _ptr) { \
-			_nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len); \
-			g_assert_cmpmem (_ptr2, _len2, _ptr, _len); \
-		} \
-	} G_STMT_END
+_nmtst_variant_new_vardict(int dummy, ...)
+{
+    GVariantBuilder builder;
+    va_list         ap;
+    const char *    name;
+    GVariant *      variant;
+
+    g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+
+    va_start(ap, dummy);
+    while ((name = va_arg(ap, const char *))) {
+        variant = va_arg(ap, GVariant *);
+        g_variant_builder_add(&builder, "{sv}", name, variant);
+    }
+    va_end(ap);
+
+    return g_variant_builder_end(&builder);
+}
+    #define nmtst_variant_new_vardict(...) _nmtst_variant_new_vardict(0, __VA_ARGS__, NULL)
+
+    #define nmtst_assert_variant_is_of_type(variant, type)     \
+        G_STMT_START                                           \
+        {                                                      \
+            GVariant *_variantx = (variant);                   \
+                                                               \
+            g_assert(_variantx);                               \
+            g_assert(g_variant_is_of_type(_variantx, (type))); \
+        }                                                      \
+        G_STMT_END
+
+    #define nmtst_assert_variant_uint32(variant, val)                         \
+        G_STMT_START                                                          \
+        {                                                                     \
+            GVariant *_variant = (variant);                                   \
+                                                                              \
+            nmtst_assert_variant_is_of_type(_variant, G_VARIANT_TYPE_UINT32); \
+            g_assert_cmpint(g_variant_get_uint32(_variant), ==, (val));       \
+        }                                                                     \
+        G_STMT_END
+
+    #define nmtst_assert_variant_string(variant, str)                         \
+        G_STMT_START                                                          \
+        {                                                                     \
+            gsize       _l;                                                   \
+            GVariant *  _variant = (variant);                                 \
+            const char *_str     = (str);                                     \
+                                                                              \
+            nmtst_assert_variant_is_of_type(_variant, G_VARIANT_TYPE_STRING); \
+            g_assert(_str);                                                   \
+            g_assert_cmpstr(g_variant_get_string(_variant, &_l), ==, _str);   \
+            g_assert_cmpint(_l, ==, strlen(_str));                            \
+        }                                                                     \
+        G_STMT_END
+
+    #ifdef __NM_SHARED_UTILS_H__
+        #define _nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len)                      \
+            G_STMT_START                                                                         \
+            {                                                                                    \
+                if (memcmp(_ptr2, _ptr, _len) != 0) {                                            \
+                    gs_free char *_x1 = NULL;                                                    \
+                    gs_free char *_x2 = NULL;                                                    \
+                    const char *  _xx1;                                                          \
+                    const char *  _xx2;                                                          \
+                                                                                                 \
+                    _xx1 = nm_utils_buf_utf8safe_escape(_ptr,                                    \
+                                                        _len,                                    \
+                                                        NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL, \
+                                                        &_x1);                                   \
+                    _xx2 = nm_utils_buf_utf8safe_escape(_ptr2,                                   \
+                                                        _len,                                    \
+                                                        NM_UTILS_STR_UTF8_SAFE_FLAG_ESCAPE_CTRL, \
+                                                        &_x2);                                   \
+                    g_assert_cmpstr(_xx1, ==, _xx2);                                             \
+                    g_assert_not_reached();                                                      \
+                }                                                                                \
+            }                                                                                    \
+            G_STMT_END
+    #else
+        #define _nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len) \
+            G_STMT_START {}                                                 \
+            G_STMT_END
+    #endif
+
+    #define nmtst_assert_variant_bytestring(variant, ptr, len)                    \
+        G_STMT_START                                                              \
+        {                                                                         \
+            GVariant *    _variant = (variant);                                   \
+            gconstpointer _ptr     = (ptr);                                       \
+            gconstpointer _ptr2;                                                  \
+            gsize         _len = (len);                                           \
+            gsize         _len2;                                                  \
+                                                                                  \
+            nmtst_assert_variant_is_of_type(_variant, G_VARIANT_TYPE_BYTESTRING); \
+            _ptr2 = g_variant_get_fixed_array(_variant, &_len2, 1);               \
+            g_assert_cmpint(_len2, ==, _len);                                     \
+            if (_len != 0 && _ptr) {                                              \
+                _nmtst_assert_variant_bytestring_cmp_str(_ptr, _ptr2, _len);      \
+                g_assert_cmpmem(_ptr2, _len2, _ptr, _len);                        \
+            }                                                                     \
+        }                                                                         \
+        G_STMT_END
 
 typedef enum {
-	NMTST_VARIANT_EDITOR_CONNECTION,
-	NMTST_VARIANT_EDITOR_SETTING,
-	NMTST_VARIANT_EDITOR_PROPERTY
+    NMTST_VARIANT_EDITOR_CONNECTION,
+    NMTST_VARIANT_EDITOR_SETTING,
+    NMTST_VARIANT_EDITOR_PROPERTY
 } NmtstVariantEditorPhase;
 
-#define NMTST_VARIANT_EDITOR(__connection_variant, __code) \
-	G_STMT_START { \
-		GVariantIter __connection_iter, *__setting_iter; \
-		GVariantBuilder __connection_builder, __setting_builder; \
-		const char *__cur_setting_name, *__cur_property_name; \
-		GVariant *__property_val; \
-		NmtstVariantEditorPhase __phase; \
-                                                                        \
-		g_variant_builder_init (&__connection_builder, NM_VARIANT_TYPE_CONNECTION); \
-		g_variant_iter_init (&__connection_iter, __connection_variant); \
-		 \
-		__phase = NMTST_VARIANT_EDITOR_CONNECTION; \
-		__cur_setting_name = NULL; \
-		__cur_property_name = NULL; \
-		__code; \
-		while (g_variant_iter_next (&__connection_iter, "{&sa{sv}}", &__cur_setting_name, &__setting_iter)) { \
-			g_variant_builder_init (&__setting_builder, NM_VARIANT_TYPE_SETTING); \
-			__phase = NMTST_VARIANT_EDITOR_SETTING; \
-			__cur_property_name = NULL; \
-			__code; \
-			 \
-			while (   __cur_setting_name \
-			       && g_variant_iter_next (__setting_iter, "{&sv}", &__cur_property_name, &__property_val)) { \
-				__phase = NMTST_VARIANT_EDITOR_PROPERTY; \
-				__code; \
-				 \
-				if (__cur_property_name) { \
-					g_variant_builder_add (&__setting_builder, "{sv}", \
-					                       __cur_property_name, \
-					                       __property_val); \
-				} \
-				g_variant_unref (__property_val); \
-			} \
-			 \
-			if (__cur_setting_name) \
-				g_variant_builder_add (&__connection_builder, "{sa{sv}}", __cur_setting_name, &__setting_builder); \
-			else \
-				g_variant_builder_clear (&__setting_builder); \
-			g_variant_iter_free (__setting_iter); \
-		} \
-		 \
-		g_variant_unref (__connection_variant); \
-		 \
-		__connection_variant = g_variant_builder_end (&__connection_builder); \
-	} G_STMT_END;
-
-#define NMTST_VARIANT_ADD_SETTING(__setting_name, __setting_variant) \
-	G_STMT_START { \
-		if (__phase == NMTST_VARIANT_EDITOR_CONNECTION) \
-			g_variant_builder_add (&__connection_builder, "{s@a{sv}}", __setting_name, __setting_variant); \
-	} G_STMT_END
-
-#define NMTST_VARIANT_DROP_SETTING(__setting_name) \
-	G_STMT_START { \
-		if (__phase == NMTST_VARIANT_EDITOR_SETTING && __cur_setting_name) { \
-			if (!strcmp (__cur_setting_name, __setting_name)) \
-				__cur_setting_name = NULL; \
-		} \
-	} G_STMT_END
-
-#define NMTST_VARIANT_ADD_PROPERTY(__setting_name, __property_name, __format_string, __value) \
-	G_STMT_START { \
-		if (__phase == NMTST_VARIANT_EDITOR_SETTING) { \
-			if (!strcmp (__cur_setting_name, __setting_name)) { \
-				g_variant_builder_add (&__setting_builder, "{sv}", __property_name, \
-				                       g_variant_new (__format_string, __value)); \
-			} \
-		} \
-	} G_STMT_END
-
-#define NMTST_VARIANT_DROP_PROPERTY(__setting_name, __property_name) \
-	G_STMT_START { \
-		if (__phase == NMTST_VARIANT_EDITOR_PROPERTY && __cur_property_name) { \
-			if (   !strcmp (__cur_setting_name, __setting_name) \
-			    && !strcmp (__cur_property_name, __property_name)) \
-				__cur_property_name = NULL; \
-		} \
-	} G_STMT_END
-
-#define NMTST_VARIANT_CHANGE_PROPERTY(__setting_name, __property_name, __format_string, __value) \
-	G_STMT_START { \
-		NMTST_VARIANT_DROP_PROPERTY (__setting_name, __property_name); \
-		NMTST_VARIANT_ADD_PROPERTY (__setting_name, __property_name, __format_string, __value); \
-	} G_STMT_END
+    #define NMTST_VARIANT_EDITOR(__connection_variant, __code)                         \
+        G_STMT_START                                                                   \
+        {                                                                              \
+            GVariantIter            __connection_iter, *__setting_iter;                \
+            GVariantBuilder         __connection_builder, __setting_builder;           \
+            const char *            __cur_setting_name, *__cur_property_name;          \
+            GVariant *              __property_val;                                    \
+            NmtstVariantEditorPhase __phase;                                           \
+                                                                                       \
+            g_variant_builder_init(&__connection_builder, NM_VARIANT_TYPE_CONNECTION); \
+            g_variant_iter_init(&__connection_iter, __connection_variant);             \
+                                                                                       \
+            __phase             = NMTST_VARIANT_EDITOR_CONNECTION;                     \
+            __cur_setting_name  = NULL;                                                \
+            __cur_property_name = NULL;                                                \
+            __code;                                                                    \
+            while (g_variant_iter_next(&__connection_iter,                             \
+                                       "{&sa{sv}}",                                    \
+                                       &__cur_setting_name,                            \
+                                       &__setting_iter)) {                             \
+                g_variant_builder_init(&__setting_builder, NM_VARIANT_TYPE_SETTING);   \
+                __phase             = NMTST_VARIANT_EDITOR_SETTING;                    \
+                __cur_property_name = NULL;                                            \
+                __code;                                                                \
+                                                                                       \
+                while (__cur_setting_name                                              \
+                       && g_variant_iter_next(__setting_iter,                          \
+                                              "{&sv}",                                 \
+                                              &__cur_property_name,                    \
+                                              &__property_val)) {                      \
+                    __phase = NMTST_VARIANT_EDITOR_PROPERTY;                           \
+                    __code;                                                            \
+                                                                                       \
+                    if (__cur_property_name) {                                         \
+                        g_variant_builder_add(&__setting_builder,                      \
+                                              "{sv}",                                  \
+                                              __cur_property_name,                     \
+                                              __property_val);                         \
+                    }                                                                  \
+                    g_variant_unref(__property_val);                                   \
+                }                                                                      \
+                                                                                       \
+                if (__cur_setting_name)                                                \
+                    g_variant_builder_add(&__connection_builder,                       \
+                                          "{sa{sv}}",                                  \
+                                          __cur_setting_name,                          \
+                                          &__setting_builder);                         \
+                else                                                                   \
+                    g_variant_builder_clear(&__setting_builder);                       \
+                g_variant_iter_free(__setting_iter);                                   \
+            }                                                                          \
+                                                                                       \
+            g_variant_unref(__connection_variant);                                     \
+                                                                                       \
+            __connection_variant = g_variant_builder_end(&__connection_builder);       \
+        }                                                                              \
+        G_STMT_END;
+
+    #define NMTST_VARIANT_ADD_SETTING(__setting_name, __setting_variant) \
+        G_STMT_START                                                     \
+        {                                                                \
+            if (__phase == NMTST_VARIANT_EDITOR_CONNECTION)              \
+                g_variant_builder_add(&__connection_builder,             \
+                                      "{s@a{sv}}",                       \
+                                      __setting_name,                    \
+                                      __setting_variant);                \
+        }                                                                \
+        G_STMT_END
+
+    #define NMTST_VARIANT_DROP_SETTING(__setting_name)                           \
+        G_STMT_START                                                             \
+        {                                                                        \
+            if (__phase == NMTST_VARIANT_EDITOR_SETTING && __cur_setting_name) { \
+                if (!strcmp(__cur_setting_name, __setting_name))                 \
+                    __cur_setting_name = NULL;                                   \
+            }                                                                    \
+        }                                                                        \
+        G_STMT_END
+
+    #define NMTST_VARIANT_ADD_PROPERTY(__setting_name, __property_name, __format_string, __value) \
+        G_STMT_START                                                                              \
+        {                                                                                         \
+            if (__phase == NMTST_VARIANT_EDITOR_SETTING) {                                        \
+                if (!strcmp(__cur_setting_name, __setting_name)) {                                \
+                    g_variant_builder_add(&__setting_builder,                                     \
+                                          "{sv}",                                                 \
+                                          __property_name,                                        \
+                                          g_variant_new(__format_string, __value));               \
+                }                                                                                 \
+            }                                                                                     \
+        }                                                                                         \
+        G_STMT_END
+
+    #define NMTST_VARIANT_DROP_PROPERTY(__setting_name, __property_name)           \
+        G_STMT_START                                                               \
+        {                                                                          \
+            if (__phase == NMTST_VARIANT_EDITOR_PROPERTY && __cur_property_name) { \
+                if (!strcmp(__cur_setting_name, __setting_name)                    \
+                    && !strcmp(__cur_property_name, __property_name))              \
+                    __cur_property_name = NULL;                                    \
+            }                                                                      \
+        }                                                                          \
+        G_STMT_END
+
+    #define NMTST_VARIANT_CHANGE_PROPERTY(__setting_name,                                          \
+                                          __property_name,                                         \
+                                          __format_string,                                         \
+                                          __value)                                                 \
+        G_STMT_START                                                                               \
+        {                                                                                          \
+            NMTST_VARIANT_DROP_PROPERTY(__setting_name, __property_name);                          \
+            NMTST_VARIANT_ADD_PROPERTY(__setting_name, __property_name, __format_string, __value); \
+        }                                                                                          \
+        G_STMT_END
 
 #endif /* __NM_CONNECTION_H__ */
 
 static inline GVariant *
-nmtst_variant_from_string (const GVariantType *variant_type,
-                           const char *variant_str)
+nmtst_variant_from_string(const GVariantType *variant_type, const char *variant_str)
 {
-	GVariant *variant;
-	GError *error = NULL;
+    GVariant *variant;
+    GError *  error = NULL;
 
-	g_assert (variant_type);
-	g_assert (variant_str);
+    g_assert(variant_type);
+    g_assert(variant_str);
 
-	variant = g_variant_parse (variant_type,
-	                           variant_str,
-	                           NULL,
-	                           NULL,
-	                           &error);
-	nmtst_assert_success (variant, error);
-	return variant;
+    variant = g_variant_parse(variant_type, variant_str, NULL, NULL, &error);
+    nmtst_assert_success(variant, error);
+    return variant;
 }
 
 /*****************************************************************************/
 
 static inline void
-nmtst_keyfile_assert_data (GKeyFile *kf, const char *data, gssize data_len)
+nmtst_keyfile_assert_data(GKeyFile *kf, const char *data, gssize data_len)
 {
-	gs_unref_keyfile GKeyFile *kf2 = NULL;
-	gs_free_error GError *error = NULL;
-	gs_free char *d1 = NULL;
-	gs_free char *d2 = NULL;
-	gboolean success;
-	gsize d1_len;
-	gsize d2_len;
+    nm_auto_unref_keyfile GKeyFile *kf2 = NULL;
+    gs_free_error GError *error         = NULL;
+    gs_free char *        d1            = NULL;
+    gs_free char *        d2            = NULL;
+    gboolean              success;
+    gsize                 d1_len;
+    gsize                 d2_len;
 
-	g_assert (kf);
-	g_assert (data || data_len == 0);
-	g_assert (data_len >= -1);
+    g_assert(kf);
+    g_assert(data || data_len == 0);
+    g_assert(data_len >= -1);
 
-	d1 = g_key_file_to_data (kf, &d1_len, &error);
-	nmtst_assert_success (d1, error);
+    d1 = g_key_file_to_data(kf, &d1_len, &error);
+    nmtst_assert_success(d1, error);
 
-	if (data_len == -1) {
-		g_assert_cmpint (strlen (d1), ==, d1_len);
-		data_len = strlen (data);
-		g_assert_cmpstr (d1, ==, data);
-	}
+    if (data_len == -1) {
+        g_assert_cmpint(strlen(d1), ==, d1_len);
+        data_len = strlen(data);
+        g_assert_cmpstr(d1, ==, data);
+    }
 
-	g_assert_cmpmem (d1, d1_len, data, (gsize) data_len);
+    g_assert_cmpmem(d1, d1_len, data, (gsize) data_len);
 
-	/* also check that we can re-generate the same keyfile from the data. */
+    /* also check that we can re-generate the same keyfile from the data. */
 
-	kf2 = g_key_file_new ();
-	success = g_key_file_load_from_data (kf2,
-	                                     d1,
-	                                     d1_len,
-	                                     G_KEY_FILE_NONE,
-	                                     &error);
-	nmtst_assert_success (success, error);
+    kf2     = g_key_file_new();
+    success = g_key_file_load_from_data(kf2, d1, d1_len, G_KEY_FILE_NONE, &error);
+    nmtst_assert_success(success, error);
 
-	d2 = g_key_file_to_data (kf2, &d2_len, &error);
-	nmtst_assert_success (d2, error);
+    d2 = g_key_file_to_data(kf2, &d2_len, &error);
+    nmtst_assert_success(d2, error);
 
-	g_assert_cmpmem (d2, d2_len, d1, d1_len);
+    g_assert_cmpmem(d2, d2_len, d1, d1_len);
 }
 
 static inline gssize
-nmtst_keyfile_get_num_keys (GKeyFile *keyfile,
-                            const char *group_name)
+nmtst_keyfile_get_num_keys(GKeyFile *keyfile, const char *group_name)
 {
-	gs_strfreev char **keys = NULL;
-	gs_free_error GError *error = NULL;
-	gsize l;
+    gs_strfreev char **keys     = NULL;
+    gs_free_error GError *error = NULL;
+    gsize                 l;
 
-	g_assert (keyfile);
-	g_assert (group_name);
+    g_assert(keyfile);
+    g_assert(group_name);
 
-	if (!g_key_file_has_group (keyfile, group_name))
-		return -1;
+    if (!g_key_file_has_group(keyfile, group_name))
+        return -1;
 
-	keys = g_key_file_get_keys (keyfile, group_name, &l, &error);
+    keys = g_key_file_get_keys(keyfile, group_name, &l, &error);
 
-	nmtst_assert_success (keys, error);
+    nmtst_assert_success(keys, error);
 
-	g_assert_cmpint (NM_PTRARRAY_LEN (keys), ==, l);
+    g_assert_cmpint(NM_PTRARRAY_LEN(keys), ==, l);
 
-	return l;
+    return l;
 }
 
 /*****************************************************************************/
diff --git a/shared/nm-utils/nm-vpn-editor-plugin-call.h b/shared/nm-utils/nm-vpn-editor-plugin-call.h
index b2c39e29..780ef193 100644
--- a/shared/nm-utils/nm-vpn-editor-plugin-call.h
+++ b/shared/nm-utils/nm-vpn-editor-plugin-call.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2016 Red Hat, Inc.
  */
@@ -28,27 +28,26 @@
  *   add a new connection for the given service-type.
  **/
 typedef enum { /*< skip >*/
-	NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_NONE     = 0x00,
-	NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_CAN_ADD  = 0x01,
+               NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_NONE    = 0x00,
+               NM_VPN_EDITOR_PLUGIN_SERVICE_FLAGS_CAN_ADD = 0x01,
 } NMVpnEditorPluginServiceFlags;
 
 struct _NMVpnEditorPluginVT {
-	gboolean (*fcn_get_service_info) (NMVpnEditorPlugin *plugin,
-	                                  const char *service_type,
-	                                  char **out_short_name,
-	                                  char **out_pretty_name,
-	                                  char **out_description,
-	                                  NMVpnEditorPluginServiceFlags *out_flags);
-	char **(*fcn_get_service_add_details) (NMVpnEditorPlugin *plugin,
-	                                       const char *service_name);
-	gboolean (*fcn_get_service_add_detail) (NMVpnEditorPlugin *plugin,
-	                                        const char *service_type,
-	                                        const char *add_detail,
-	                                        char **out_pretty_name,
-	                                        char **out_description,
-	                                        char **out_add_detail_key,
-	                                        char **out_add_detail_val,
-	                                        guint *out_flags);
+    gboolean (*fcn_get_service_info)(NMVpnEditorPlugin *            plugin,
+                                     const char *                   service_type,
+                                     char **                        out_short_name,
+                                     char **                        out_pretty_name,
+                                     char **                        out_description,
+                                     NMVpnEditorPluginServiceFlags *out_flags);
+    char **(*fcn_get_service_add_details)(NMVpnEditorPlugin *plugin, const char *service_name);
+    gboolean (*fcn_get_service_add_detail)(NMVpnEditorPlugin *plugin,
+                                           const char *       service_type,
+                                           const char *       add_detail,
+                                           char **            out_pretty_name,
+                                           char **            out_description,
+                                           char **            out_add_detail_key,
+                                           char **            out_add_detail_val,
+                                           guint *            out_flags);
 };
 
 /*****************************************************************************
@@ -59,94 +58,93 @@ struct _NMVpnEditorPluginVT {
  *****************************************************************************/
 
 static inline gboolean
-nm_vpn_editor_plugin_get_service_info (NMVpnEditorPlugin *plugin,
-                                       const char *service_type,
-                                       char **out_short_name,
-                                       char **out_pretty_name,
-                                       char **out_description,
-                                       NMVpnEditorPluginServiceFlags *out_flags)
+nm_vpn_editor_plugin_get_service_info(NMVpnEditorPlugin *            plugin,
+                                      const char *                   service_type,
+                                      char **                        out_short_name,
+                                      char **                        out_pretty_name,
+                                      char **                        out_description,
+                                      NMVpnEditorPluginServiceFlags *out_flags)
 {
-	NMVpnEditorPluginVT vt;
-	gs_free char *short_name_local = NULL;
-	gs_free char *pretty_name_local = NULL;
-	gs_free char *description_local = NULL;
-	guint flags_local = 0;
-
-	g_return_val_if_fail (NM_IS_VPN_EDITOR_PLUGIN (plugin), FALSE);
-	g_return_val_if_fail (service_type, FALSE);
-
-	nm_vpn_editor_plugin_get_vt (plugin, &vt, sizeof (vt));
-	if (   !vt.fcn_get_service_info
-	    || !vt.fcn_get_service_info (plugin,
-	                                 service_type,
-	                                 out_short_name  ? &short_name_local : NULL,
-	                                 out_pretty_name ? &pretty_name_local : NULL,
-	                                 out_description ? &description_local : NULL,
-	                                 out_flags       ? &flags_local : NULL))
-		return FALSE;
-	NM_SET_OUT (out_short_name, g_steal_pointer (&short_name_local));
-	NM_SET_OUT (out_pretty_name, g_steal_pointer (&pretty_name_local));
-	NM_SET_OUT (out_description, g_steal_pointer (&description_local));
-	NM_SET_OUT (out_flags, flags_local);
-	return TRUE;
+    NMVpnEditorPluginVT vt;
+    gs_free char *      short_name_local  = NULL;
+    gs_free char *      pretty_name_local = NULL;
+    gs_free char *      description_local = NULL;
+    guint               flags_local       = 0;
+
+    g_return_val_if_fail(NM_IS_VPN_EDITOR_PLUGIN(plugin), FALSE);
+    g_return_val_if_fail(service_type, FALSE);
+
+    nm_vpn_editor_plugin_get_vt(plugin, &vt, sizeof(vt));
+    if (!vt.fcn_get_service_info
+        || !vt.fcn_get_service_info(plugin,
+                                    service_type,
+                                    out_short_name ? &short_name_local : NULL,
+                                    out_pretty_name ? &pretty_name_local : NULL,
+                                    out_description ? &description_local : NULL,
+                                    out_flags ? &flags_local : NULL))
+        return FALSE;
+    NM_SET_OUT(out_short_name, g_steal_pointer(&short_name_local));
+    NM_SET_OUT(out_pretty_name, g_steal_pointer(&pretty_name_local));
+    NM_SET_OUT(out_description, g_steal_pointer(&description_local));
+    NM_SET_OUT(out_flags, flags_local);
+    return TRUE;
 }
 
 static inline char **
-nm_vpn_editor_plugin_get_service_add_details (NMVpnEditorPlugin *plugin,
-                                              const char *service_name)
+nm_vpn_editor_plugin_get_service_add_details(NMVpnEditorPlugin *plugin, const char *service_name)
 {
-	NMVpnEditorPluginVT vt;
-	char **details = NULL;
-
-	g_return_val_if_fail (NM_IS_VPN_EDITOR_PLUGIN (plugin), NULL);
-	g_return_val_if_fail (service_name, NULL);
-
-	nm_vpn_editor_plugin_get_vt (plugin, &vt, sizeof (vt));
-	if (vt.fcn_get_service_add_details)
-		details = vt.fcn_get_service_add_details (plugin, service_name);
-	if (!details)
-		return g_new0 (char *, 1);
-	return details;
+    NMVpnEditorPluginVT vt;
+    char **             details = NULL;
+
+    g_return_val_if_fail(NM_IS_VPN_EDITOR_PLUGIN(plugin), NULL);
+    g_return_val_if_fail(service_name, NULL);
+
+    nm_vpn_editor_plugin_get_vt(plugin, &vt, sizeof(vt));
+    if (vt.fcn_get_service_add_details)
+        details = vt.fcn_get_service_add_details(plugin, service_name);
+    if (!details)
+        return g_new0(char *, 1);
+    return details;
 }
 
 static inline gboolean
-nm_vpn_editor_plugin_get_service_add_detail (NMVpnEditorPlugin *plugin,
-                                             const char *service_type,
-                                             const char *add_detail,
-                                             char **out_pretty_name,
-                                             char **out_description,
-                                             char **out_add_detail_key,
-                                             char **out_add_detail_val,
-                                             guint *out_flags)
+nm_vpn_editor_plugin_get_service_add_detail(NMVpnEditorPlugin *plugin,
+                                            const char *       service_type,
+                                            const char *       add_detail,
+                                            char **            out_pretty_name,
+                                            char **            out_description,
+                                            char **            out_add_detail_key,
+                                            char **            out_add_detail_val,
+                                            guint *            out_flags)
 {
-	NMVpnEditorPluginVT vt;
-	gs_free char *pretty_name_local = NULL;
-	gs_free char *description_local = NULL;
-	gs_free char *add_detail_key_local = NULL;
-	gs_free char *add_detail_val_local = NULL;
-	guint flags_local = 0;
-
-	g_return_val_if_fail (NM_IS_VPN_EDITOR_PLUGIN (plugin), FALSE);
-	g_return_val_if_fail (service_type, FALSE);
-	g_return_val_if_fail (add_detail, FALSE);
-
-	nm_vpn_editor_plugin_get_vt (plugin, &vt, sizeof (vt));
-	if (   !vt.fcn_get_service_add_detail
-	    || !vt.fcn_get_service_add_detail (plugin,
-	                                       service_type,
-	                                       add_detail,
-	                                       out_pretty_name    ? &pretty_name_local : NULL,
-	                                       out_description    ? &description_local : NULL,
-	                                       out_add_detail_key ? &add_detail_key_local : NULL,
-	                                       out_add_detail_val ? &add_detail_val_local : NULL,
-	                                       out_flags          ? &flags_local : NULL))
-		return FALSE;
-	NM_SET_OUT (out_pretty_name, g_steal_pointer (&pretty_name_local));
-	NM_SET_OUT (out_description, g_steal_pointer (&description_local));
-	NM_SET_OUT (out_add_detail_key, g_steal_pointer (&add_detail_key_local));
-	NM_SET_OUT (out_add_detail_val, g_steal_pointer (&add_detail_val_local));
-	NM_SET_OUT (out_flags, flags_local);
-	return TRUE;
+    NMVpnEditorPluginVT vt;
+    gs_free char *      pretty_name_local    = NULL;
+    gs_free char *      description_local    = NULL;
+    gs_free char *      add_detail_key_local = NULL;
+    gs_free char *      add_detail_val_local = NULL;
+    guint               flags_local          = 0;
+
+    g_return_val_if_fail(NM_IS_VPN_EDITOR_PLUGIN(plugin), FALSE);
+    g_return_val_if_fail(service_type, FALSE);
+    g_return_val_if_fail(add_detail, FALSE);
+
+    nm_vpn_editor_plugin_get_vt(plugin, &vt, sizeof(vt));
+    if (!vt.fcn_get_service_add_detail
+        || !vt.fcn_get_service_add_detail(plugin,
+                                          service_type,
+                                          add_detail,
+                                          out_pretty_name ? &pretty_name_local : NULL,
+                                          out_description ? &description_local : NULL,
+                                          out_add_detail_key ? &add_detail_key_local : NULL,
+                                          out_add_detail_val ? &add_detail_val_local : NULL,
+                                          out_flags ? &flags_local : NULL))
+        return FALSE;
+    NM_SET_OUT(out_pretty_name, g_steal_pointer(&pretty_name_local));
+    NM_SET_OUT(out_description, g_steal_pointer(&description_local));
+    NM_SET_OUT(out_add_detail_key, g_steal_pointer(&add_detail_key_local));
+    NM_SET_OUT(out_add_detail_val, g_steal_pointer(&add_detail_val_local));
+    NM_SET_OUT(out_flags, flags_local);
+    return TRUE;
 }
 
 /*****************************************************************************
@@ -155,19 +153,15 @@ nm_vpn_editor_plugin_get_service_add_detail (NMVpnEditorPlugin *plugin,
  * The following glue code can be used to implement calls in a VPN plugin.
  *****************************************************************************/
 
-#define NM_VPN_EDITOR_PLUGIN_VT_DEFINE(vt_name, get_vt, ...) \
-static const NMVpnEditorPluginVT vt_name = { \
-		__VA_ARGS__ \
-	}; \
-static const NMVpnEditorPluginVT * \
-get_vt (NMVpnEditorPlugin *plugin, \
-        gsize *out_vt_size) \
-{ \
-	nm_assert (NM_IS_VPN_EDITOR_PLUGIN (plugin)); \
-	nm_assert (out_vt_size); \
-	\
-	*out_vt_size = sizeof (vt_name); \
-	return &vt_name; \
-}
+#define NM_VPN_EDITOR_PLUGIN_VT_DEFINE(vt_name, get_vt, ...)                                \
+    static const NMVpnEditorPluginVT  vt_name = {__VA_ARGS__};                              \
+    static const NMVpnEditorPluginVT *get_vt(NMVpnEditorPlugin *plugin, gsize *out_vt_size) \
+    {                                                                                       \
+        nm_assert(NM_IS_VPN_EDITOR_PLUGIN(plugin));                                         \
+        nm_assert(out_vt_size);                                                             \
+                                                                                            \
+        *out_vt_size = sizeof(vt_name);                                                     \
+        return &vt_name;                                                                    \
+    }
 
 #endif /* __NM_VPN_EDITOR_PLUGIN_CALL_H__ */
diff --git a/shared/nm-utils/nm-vpn-plugin-macros.h b/shared/nm-utils/nm-vpn-plugin-macros.h
index f154147f..2fec94e5 100644
--- a/shared/nm-utils/nm-vpn-plugin-macros.h
+++ b/shared/nm-utils/nm-vpn-plugin-macros.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2016 Red Hat, Inc.
  */
@@ -9,50 +9,50 @@
 #include <syslog.h>
 
 static inline int
-nm_utils_syslog_coerce_from_nm (int syslog_level)
+nm_utils_syslog_coerce_from_nm(int syslog_level)
 {
-	/* NetworkManager uses internally NMLogLevel levels. When spawning
-	 * the VPN plugin, it maps those levels to syslog levels as follows:
-	 *
-	 *  LOGL_INFO = LOG_NOTICE,
-	 *  LOGL_DEBUG = LOG_INFO,
-	 *  LOGL_TRACE = LOG_DEBUG,
-	 *
-	 * However, when actually printing to syslog, we don't want to print messages
-	 * with LOGL_INFO level as LOG_NOTICE, because they are *not* to be highlighted.
-	 *
-	 * In other words: NetworkManager has 3 levels that should not require highlighting:
-	 * LOGL_INFO, LOGL_DEBUG, LOGL_TRACE. syslog on the other hand has only LOG_INFO and LOG_DEBUG.
-	 *
-	 * So, coerce those values before printing to syslog. When you receive the syslog_level
-	 * from NetworkManager, instead of calling
-	 *   syslog(syslog_level, ...)
-	 * you should call
-	 *   syslog(nm_utils_syslog_coerce_from_nm(syslog_level), ...)
-	 */
-	switch (syslog_level) {
-	case LOG_INFO:
-		return LOG_DEBUG;
-	case LOG_NOTICE:
-		return LOG_INFO;
-	default:
-		return syslog_level;
-	}
+    /* NetworkManager uses internally NMLogLevel levels. When spawning
+     * the VPN plugin, it maps those levels to syslog levels as follows:
+     *
+     *  LOGL_INFO = LOG_NOTICE,
+     *  LOGL_DEBUG = LOG_INFO,
+     *  LOGL_TRACE = LOG_DEBUG,
+     *
+     * However, when actually printing to syslog, we don't want to print messages
+     * with LOGL_INFO level as LOG_NOTICE, because they are *not* to be highlighted.
+     *
+     * In other words: NetworkManager has 3 levels that should not require highlighting:
+     * LOGL_INFO, LOGL_DEBUG, LOGL_TRACE. syslog on the other hand has only LOG_INFO and LOG_DEBUG.
+     *
+     * So, coerce those values before printing to syslog. When you receive the syslog_level
+     * from NetworkManager, instead of calling
+     *   syslog(syslog_level, ...)
+     * you should call
+     *   syslog(nm_utils_syslog_coerce_from_nm(syslog_level), ...)
+     */
+    switch (syslog_level) {
+    case LOG_INFO:
+        return LOG_DEBUG;
+    case LOG_NOTICE:
+        return LOG_INFO;
+    default:
+        return syslog_level;
+    }
 }
 
 static inline const char *
-nm_utils_syslog_to_str (int syslog_level)
+nm_utils_syslog_to_str(int syslog_level)
 {
-	/* Maps the levels the same way as NetworkManager's nm-logging.c does */
-	if (syslog_level >= LOG_DEBUG)
-		return "<trace>";
-	if (syslog_level >= LOG_INFO)
-		return "<debug>";
-	if (syslog_level >= LOG_NOTICE)
-		return "<info>";
-	if (syslog_level >= LOG_WARNING)
-		return "<warn>";
-	return "<error>";
+    /* Maps the levels the same way as NetworkManager's nm-logging.c does */
+    if (syslog_level >= LOG_DEBUG)
+        return "<trace>";
+    if (syslog_level >= LOG_INFO)
+        return "<debug>";
+    if (syslog_level >= LOG_NOTICE)
+        return "<info>";
+    if (syslog_level >= LOG_WARNING)
+        return "<warn>";
+    return "<error>";
 }
 
 /*****************************************************************************/
@@ -60,18 +60,17 @@ nm_utils_syslog_to_str (int syslog_level)
 /* possibly missing defines from newer libnm API. */
 
 #ifndef NM_VPN_PLUGIN_CONFIG_PROXY_PAC
-#define NM_VPN_PLUGIN_CONFIG_PROXY_PAC "pac"
+    #define NM_VPN_PLUGIN_CONFIG_PROXY_PAC "pac"
 #endif
 
 #ifndef NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES
-#define NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES "preserve-routes"
+    #define NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES "preserve-routes"
 #endif
 
 #ifndef NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES
-#define NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES "preserve-routes"
+    #define NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES "preserve-routes"
 #endif
 
 /*****************************************************************************/
 
 #endif /* __NM_VPN_PLUGIN_MACROS_H__ */
-
diff --git a/shared/nm-utils/nm-vpn-plugin-utils.c b/shared/nm-utils/nm-vpn-plugin-utils.c
index 8616ae5f..1af640da 100644
--- a/shared/nm-utils/nm-vpn-plugin-utils.c
+++ b/shared/nm-utils/nm-vpn-plugin-utils.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2016, 2018 Red Hat, Inc.
  */
@@ -12,125 +12,127 @@
 /*****************************************************************************/
 
 NMVpnEditor *
-nm_vpn_plugin_utils_load_editor (const char *module_name,
-                                 const char *factory_name,
-                                 NMVpnPluginUtilsEditorFactory editor_factory,
-                                 NMVpnEditorPlugin *editor_plugin,
-                                 NMConnection *connection,
-                                 gpointer user_data,
-                                 GError **error)
+nm_vpn_plugin_utils_load_editor(const char *                  module_name,
+                                const char *                  factory_name,
+                                NMVpnPluginUtilsEditorFactory editor_factory,
+                                NMVpnEditorPlugin *           editor_plugin,
+                                NMConnection *                connection,
+                                gpointer                      user_data,
+                                GError **                     error)
 
 {
-	static struct {
-		gpointer factory;
-		void *dl_module;
-		char *module_name;
-		char *factory_name;
-	} cached = { 0 };
-	NMVpnEditor *editor;
-	gs_free char *module_path = NULL;
-	gs_free char *dirname = NULL;
-	Dl_info plugin_info;
+    static struct {
+        gpointer factory;
+        void *   dl_module;
+        char *   module_name;
+        char *   factory_name;
+    } cached = {0};
+    NMVpnEditor * editor;
+    gs_free char *module_path = NULL;
+    gs_free char *dirname     = NULL;
+    Dl_info       plugin_info;
 
-	g_return_val_if_fail (module_name, NULL);
-	g_return_val_if_fail (factory_name && factory_name[0], NULL);
-	g_return_val_if_fail (editor_factory, NULL);
-	g_return_val_if_fail (NM_IS_VPN_EDITOR_PLUGIN (editor_plugin), NULL);
-	g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
-	g_return_val_if_fail (!error || !*error, NULL);
+    g_return_val_if_fail(module_name, NULL);
+    g_return_val_if_fail(factory_name && factory_name[0], NULL);
+    g_return_val_if_fail(editor_factory, NULL);
+    g_return_val_if_fail(NM_IS_VPN_EDITOR_PLUGIN(editor_plugin), NULL);
+    g_return_val_if_fail(NM_IS_CONNECTION(connection), NULL);
+    g_return_val_if_fail(!error || !*error, NULL);
 
-	if (!g_path_is_absolute (module_name)) {
-		/*
-		 * Load an editor from the same directory this plugin is in.
-		 * Ideally, we'd get our .so name from the NMVpnEditorPlugin if it
-		 * would just have a property with it...
-		 */
-		if (!dladdr(nm_vpn_plugin_utils_load_editor, &plugin_info)) {
-			/* Really a "can not happen" scenario. */
-			g_set_error (error,
-			             NM_VPN_PLUGIN_ERROR,
-			             NM_VPN_PLUGIN_ERROR_FAILED,
-			             _("unable to get editor plugin name: %s"), dlerror ());
-		}
+    if (!g_path_is_absolute(module_name)) {
+        /*
+         * Load an editor from the same directory this plugin is in.
+         * Ideally, we'd get our .so name from the NMVpnEditorPlugin if it
+         * would just have a property with it...
+         */
+        if (!dladdr(nm_vpn_plugin_utils_load_editor, &plugin_info)) {
+            /* Really a "can not happen" scenario. */
+            g_set_error(error,
+                        NM_VPN_PLUGIN_ERROR,
+                        NM_VPN_PLUGIN_ERROR_FAILED,
+                        _("unable to get editor plugin name: %s"),
+                        dlerror());
+        }
 
-		dirname = g_path_get_dirname (plugin_info.dli_fname);
-		module_path = g_build_filename (dirname, module_name, NULL);
-	} else {
-		module_path = g_strdup (module_name);
-	}
+        dirname     = g_path_get_dirname(plugin_info.dli_fname);
+        module_path = g_build_filename(dirname, module_name, NULL);
+    } else {
+        module_path = g_strdup(module_name);
+    }
 
-	/* we really expect this function to be called with unchanging @module_name
-	 * and @factory_name. And we only want to load the module once, hence it would
-	 * be more complicated to accept changing @module_name/@factory_name arguments.
-	 *
-	 * The reason for only loading once is that due to glib types, we cannot create a
-	 * certain type-name more then once, so loading the same module or another version
-	 * of the same module will fail horribly as both try to create a GType with the same
-	 * name.
-	 *
-	 * Only support loading once, any future calls will reuse the handle. To simplify
-	 * that, we enforce that the @factory_name and @module_name is the same. */
-	if (cached.factory) {
-		g_return_val_if_fail (cached.dl_module, NULL);
-		g_return_val_if_fail (cached.factory_name && nm_streq0 (cached.factory_name, factory_name), NULL);
-		g_return_val_if_fail (cached.module_name && nm_streq0 (cached.module_name, module_name), NULL);
-	} else {
-		gpointer factory;
-		void *dl_module;
+    /* we really expect this function to be called with unchanging @module_name
+     * and @factory_name. And we only want to load the module once, hence it would
+     * be more complicated to accept changing @module_name/@factory_name arguments.
+     *
+     * The reason for only loading once is that due to glib types, we cannot create a
+     * certain type-name more then once, so loading the same module or another version
+     * of the same module will fail horribly as both try to create a GType with the same
+     * name.
+     *
+     * Only support loading once, any future calls will reuse the handle. To simplify
+     * that, we enforce that the @factory_name and @module_name is the same. */
+    if (cached.factory) {
+        g_return_val_if_fail(cached.dl_module, NULL);
+        g_return_val_if_fail(cached.factory_name && nm_streq0(cached.factory_name, factory_name),
+                             NULL);
+        g_return_val_if_fail(cached.module_name && nm_streq0(cached.module_name, module_name),
+                             NULL);
+    } else {
+        gpointer factory;
+        void *   dl_module;
 
-		dl_module = dlopen (module_path, RTLD_LAZY | RTLD_LOCAL);
-		if (!dl_module) {
-			if (!g_file_test (module_path, G_FILE_TEST_EXISTS)) {
-				g_set_error (error,
-				             G_FILE_ERROR,
-				             G_FILE_ERROR_NOENT,
-				             _("missing plugin file \"%s\""), module_path);
-				return NULL;
-			}
-			g_set_error (error,
-			             NM_VPN_PLUGIN_ERROR,
-			             NM_VPN_PLUGIN_ERROR_FAILED,
-			             _("cannot load editor plugin: %s"), dlerror ());
-			return NULL;
-		}
+        dl_module = dlopen(module_path, RTLD_LAZY | RTLD_LOCAL);
+        if (!dl_module) {
+            if (!g_file_test(module_path, G_FILE_TEST_EXISTS)) {
+                g_set_error(error,
+                            G_FILE_ERROR,
+                            G_FILE_ERROR_NOENT,
+                            _("missing plugin file \"%s\""),
+                            module_path);
+                return NULL;
+            }
+            g_set_error(error,
+                        NM_VPN_PLUGIN_ERROR,
+                        NM_VPN_PLUGIN_ERROR_FAILED,
+                        _("cannot load editor plugin: %s"),
+                        dlerror());
+            return NULL;
+        }
 
-		factory = dlsym (dl_module, factory_name);
-		if (!factory) {
-			g_set_error (error,
-			             NM_VPN_PLUGIN_ERROR,
-			             NM_VPN_PLUGIN_ERROR_FAILED,
-			             _("cannot load factory %s from plugin: %s"),
-			             factory_name, dlerror ());
-			dlclose (dl_module);
-			return NULL;
-		}
+        factory = dlsym(dl_module, factory_name);
+        if (!factory) {
+            g_set_error(error,
+                        NM_VPN_PLUGIN_ERROR,
+                        NM_VPN_PLUGIN_ERROR_FAILED,
+                        _("cannot load factory %s from plugin: %s"),
+                        factory_name,
+                        dlerror());
+            dlclose(dl_module);
+            return NULL;
+        }
 
-		/* we cannot ever unload the module because it creates glib types, which
-		 * cannot be unregistered.
-		 *
-		 * Thus we just leak the dl_module handle indefinitely. */
-		cached.factory = factory;
-		cached.dl_module = dl_module;
-		cached.module_name = g_strdup (module_name);
-		cached.factory_name = g_strdup (factory_name);
-	}
+        /* we cannot ever unload the module because it creates glib types, which
+         * cannot be unregistered.
+         *
+         * Thus we just leak the dl_module handle indefinitely. */
+        cached.factory      = factory;
+        cached.dl_module    = dl_module;
+        cached.module_name  = g_strdup(module_name);
+        cached.factory_name = g_strdup(factory_name);
+    }
 
-	editor = editor_factory (cached.factory,
-	                         editor_plugin,
-	                         connection,
-	                         user_data,
-	                         error);
-	if (!editor) {
-		if (error && !*error ) {
-			g_set_error_literal (error,
-			                     NM_VPN_PLUGIN_ERROR,
-			                     NM_VPN_PLUGIN_ERROR_FAILED,
-			                     _("unknown error creating editor instance"));
-			g_return_val_if_reached (NULL);
-		}
-		return NULL;
-	}
+    editor = editor_factory(cached.factory, editor_plugin, connection, user_data, error);
+    if (!editor) {
+        if (error && !*error) {
+            g_set_error_literal(error,
+                                NM_VPN_PLUGIN_ERROR,
+                                NM_VPN_PLUGIN_ERROR_FAILED,
+                                _("unknown error creating editor instance"));
+            g_return_val_if_reached(NULL);
+        }
+        return NULL;
+    }
 
-	g_return_val_if_fail (NM_IS_VPN_EDITOR (editor), NULL);
-	return editor;
+    g_return_val_if_fail(NM_IS_VPN_EDITOR(editor), NULL);
+    return editor;
 }
diff --git a/shared/nm-utils/nm-vpn-plugin-utils.h b/shared/nm-utils/nm-vpn-plugin-utils.h
index 2a31b677..0e5e1dab 100644
--- a/shared/nm-utils/nm-vpn-plugin-utils.h
+++ b/shared/nm-utils/nm-vpn-plugin-utils.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2016 Red Hat, Inc.
  */
@@ -8,19 +8,18 @@
 
 #include <NetworkManager.h>
 
-typedef NMVpnEditor *(NMVpnPluginUtilsEditorFactory) (gpointer factory,
-                                                      NMVpnEditorPlugin *editor_plugin,
-                                                      NMConnection *connection,
-                                                      gpointer user_data,
-                                                      GError **error);
+typedef NMVpnEditor *(NMVpnPluginUtilsEditorFactory)(gpointer           factory,
+                                                     NMVpnEditorPlugin *editor_plugin,
+                                                     NMConnection *     connection,
+                                                     gpointer           user_data,
+                                                     GError **          error);
 
-NMVpnEditor *nm_vpn_plugin_utils_load_editor (const char *module_name,
-                                              const char *factory_name,
-                                              NMVpnPluginUtilsEditorFactory editor_factory,
-                                              NMVpnEditorPlugin *editor_plugin,
-                                              NMConnection *connection,
-                                              gpointer user_data,
-                                              GError **error);
+NMVpnEditor *nm_vpn_plugin_utils_load_editor(const char *                  module_name,
+                                             const char *                  factory_name,
+                                             NMVpnPluginUtilsEditorFactory editor_factory,
+                                             NMVpnEditorPlugin *           editor_plugin,
+                                             NMConnection *                connection,
+                                             gpointer                      user_data,
+                                             GError **                     error);
 
 #endif /* __NM_VPN_PLUGIN_UTILS_H__ */
-