summary refs log tree commit diff
path: root/src/nm-default-route-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-default-route-manager.c')
-rw-r--r--src/nm-default-route-manager.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/nm-default-route-manager.c b/src/nm-default-route-manager.c
index fbb07ce3..96a8c855 100644
--- a/src/nm-default-route-manager.c
+++ b/src/nm-default-route-manager.c
@@ -21,10 +21,9 @@
 
 #include "config.h"
 
-#include "nm-default-route-manager.h"
-
-#include "string.h"
+#include <string.h>
 
+#include "nm-default-route-manager.h"
 #include "nm-logging.h"
 #include "nm-device.h"
 #include "nm-vpn-connection.h"
@@ -62,7 +61,17 @@ G_DEFINE_TYPE (NMDefaultRouteManager, nm_default_route_manager, G_TYPE_OBJECT)
 
 NM_DEFINE_SINGLETON_GETTER (NMDefaultRouteManager, nm_default_route_manager_get, NM_TYPE_DEFAULT_ROUTE_MANAGER);
 
-#define _LOG(level, addr_family, ...) \
+#define _NMLOG_PREFIX_NAME   "default-route"
+#undef  _NMLOG_ENABLED
+#define _NMLOG_ENABLED(level, addr_family) \
+    ({ \
+        const int __addr_family = (addr_family); \
+        const NMLogLevel __level = (level); \
+        const NMLogDomain __domain = __addr_family == AF_INET ? LOGD_IP4 : (__addr_family == AF_INET6 ? LOGD_IP6 : LOGD_IP); \
+        \
+        nm_logging_enabled (__level, __domain); \
+    })
+#define _NMLOG(level, addr_family, ...) \
     G_STMT_START { \
         const int __addr_family = (addr_family); \
         const NMLogLevel __level = (level); \
@@ -70,23 +79,18 @@ NM_DEFINE_SINGLETON_GETTER (NMDefaultRouteManager, nm_default_route_manager_get,
         \
         if (nm_logging_enabled (__level, __domain)) { \
             char __ch = __addr_family == AF_INET ? '4' : (__addr_family == AF_INET6 ? '6' : '-'); \
-            char __prefix[30] = "default-route"; \
+            char __prefix[30] = _NMLOG_PREFIX_NAME; \
             \
             if ((self) != singleton_instance) \
-                g_snprintf (__prefix, sizeof (__prefix), "default-route%c[%p]", __ch, (self)); \
+                g_snprintf (__prefix, sizeof (__prefix), ""_NMLOG_PREFIX_NAME"%c[%p]", __ch, (self)); \
             else \
-                __prefix[STRLEN ("default-route")] = __ch; \
+                __prefix[STRLEN (_NMLOG_PREFIX_NAME)] = __ch; \
             _nm_log (__level, __domain, 0, \
                      "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
                      __prefix _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
         } \
     } G_STMT_END
 
-#define _LOGD(addr_family, ...)      _LOG (LOGL_DEBUG, addr_family, __VA_ARGS__)
-#define _LOGI(addr_family, ...)      _LOG (LOGL_INFO , addr_family, __VA_ARGS__)
-#define _LOGW(addr_family, ...)      _LOG (LOGL_WARN , addr_family, __VA_ARGS__)
-#define _LOGE(addr_family, ...)      _LOG (LOGL_ERR  , addr_family, __VA_ARGS__)
-
 #define LOG_ENTRY_FMT  "entry[%u/%s:%p:%s:%c:%csync]"
 #define LOG_ENTRY_ARGS(entry_idx, entry) \
 		(entry_idx), \
@@ -1290,7 +1294,9 @@ _resync_idle_reschedule (NMDefaultRouteManager *self)
 			g_source_remove (priv->resync.idle_handle);
 		else
 			_LOGD (0, "resync: schedule on idle");
-		priv->resync.idle_handle = g_idle_add ((GSourceFunc) _resync_idle_now, self);
+		/* Schedule this at low priority so that on an external change to platform
+		 * a NMDevice has a chance to picks up the changes first. */
+		priv->resync.idle_handle = g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) _resync_idle_now, self, NULL);
 	} else if (!priv->resync.idle_handle) {
 		priv->resync.idle_handle =  g_timeout_add (priv->resync.backoff_wait_time_ms, (GSourceFunc) _resync_idle_now, self);
 		_LOGD (0, "resync: schedule in %u.%03u seconds (%u)", priv->resync.backoff_wait_time_ms/1000,