summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-01-10 14:51:41 +0100
committerThomas Haller <thaller@redhat.com>2015-03-03 11:13:51 +0100
commit7d440b700688f81f6e3f54b3220930131ade2d1b (patch)
tree136fd3ad70779f5e845857026bf4adfeed597d6e
parent2d860b3f05a458232a81832ca75e09afd6e2017d (diff)
downloadNetworkManager-7d440b700688f81f6e3f54b3220930131ade2d1b.tar.gz
dhcp: add systemd's 'log.h' to provide logging macros
The 'log.h' header from systemd implements most logging commands based on a few fundamental logging commands. Reuse 'log.h' for most parts and let the adapter only redefine the necessary commands.
-rw-r--r--src/Makefile.am1
-rw-r--r--src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h47
-rw-r--r--src/dhcp-manager/systemd-dhcp/src/shared/log.h4
-rw-r--r--src/dhcp-manager/systemd-dhcp/src/shared/macro.h2
4 files changed, 30 insertions, 24 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index eb8984f538..f51d57da28 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -96,6 +96,7 @@ libsystemd_dhcp_la_SOURCES = \
dhcp-manager/systemd-dhcp/src/shared/util.h \
dhcp-manager/systemd-dhcp/src/shared/in-addr-util.h \
dhcp-manager/systemd-dhcp/src/shared/list.h \
+ dhcp-manager/systemd-dhcp/src/shared/log.h \
dhcp-manager/systemd-dhcp/src/shared/fileio.h \
dhcp-manager/systemd-dhcp/src/shared/fileio.c \
dhcp-manager/systemd-dhcp/src/shared/strv.h \
diff --git a/src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h b/src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h
index a95f5bfb42..5d8e4e6e4f 100644
--- a/src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h
+++ b/src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h
@@ -38,12 +38,15 @@
#include "nm-logging.h"
-static inline guint32
+/*****************************************************************************/
+
+static inline NMLogLevel
_slog_level_to_nm (int slevel)
{
switch (slevel) {
case LOG_DEBUG: return LOGL_DEBUG;
case LOG_WARNING: return LOGL_WARN;
+ case LOG_CRIT:
case LOG_ERR: return LOGL_ERR;
case LOG_INFO:
case LOG_NOTICE:
@@ -51,39 +54,37 @@ _slog_level_to_nm (int slevel)
}
}
-#define log_meta(level, file, line, func, format, ...) \
-G_STMT_START { \
- guint32 _l = _slog_level_to_nm ((level)); \
- if (nm_logging_enabled (_l, LOGD_DHCP)) { \
- const char *_location = strrchr (file "", '/'); \
+#define log_internal(level, error, file, line, func, format, ...) \
+({ \
+ int _nm_e = (error); \
+ NMLogLevel _nm_l = _slog_level_to_nm ((level)); \
+ if (nm_logging_enabled (_nm_l, LOGD_DHCP)) { \
+ const char *_nm_location = strrchr ((""file), '/'); \
\
- _nm_log (_location ? _location + 1 : file, line, func, _l, LOGD_DHCP, 0, format, ## __VA_ARGS__); \
+ _nm_log (_nm_location ? _nm_location + 1 : (""file), (line), (func), _nm_l, LOGD_DHCP, _nm_e, (""format), ## __VA_ARGS__); \
} \
-} G_STMT_END
+ (_nm_e > 0 ? -_nm_e : _nm_e); \
+})
-#define log_debug(...) log_full(LOG_DEBUG, __VA_ARGS__)
-#define log_error(...) log_full(LOG_ERR, __VA_ARGS__)
-#define log_full(level, ...) log_meta((level), __FILE__, __LINE__, __func__, __VA_ARGS__);
+#define log_full_errno(level, error, ...) \
+({ \
+ log_internal(level, error, __FILE__, __LINE__, __func__, __VA_ARGS__); \
+})
-#define log_dhcp_client(client, fmt, ...) \
- log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP CLIENT (0x%x): " fmt, client->xid, ##__VA_ARGS__)
-
-#define log_assert_failed(e, file, line, func) \
+#define log_assert_failed(text, file, line, func) \
G_STMT_START { \
- nm_log_err (LOGD_DHCP, #file ":" #line "(" #func "): assertion failed: " # e); \
- g_assert (FALSE); \
+ log_internal (LOG_CRIT, 0, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.", text, file, line, func); \
+ g_assert_not_reached (); \
} G_STMT_END
-#define log_assert_failed_unreachable(t, file, line, func) \
+#define log_assert_failed_return(text, file, line, func) \
G_STMT_START { \
- nm_log_err (LOGD_DHCP, #file ":" #line "(" #func "): assert unreachable: " # t); \
- g_assert_not_reached (); \
+ log_internal (LOG_DEBUG, 0, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Ignoring.", text, file, line, func); \
+ g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, text); \
} G_STMT_END
-#define log_assert_failed_return(e, file, line, func) \
- nm_log_err (LOGD_DHCP, #file ":" #line "(" #func "): assert return: " # e); \
-#define log_oom nm_log_err(LOGD_CORE, "%s:%s/%s: OOM", __FILE__, __LINE__, __func__)
+/*****************************************************************************/
/* Can't include both net/if.h and linux/if.h; so have to define this here */
#ifndef IFNAMSIZ
diff --git a/src/dhcp-manager/systemd-dhcp/src/shared/log.h b/src/dhcp-manager/systemd-dhcp/src/shared/log.h
index 2dedfa3fd1..ee276922a2 100644
--- a/src/dhcp-manager/systemd-dhcp/src/shared/log.h
+++ b/src/dhcp-manager/systemd-dhcp/src/shared/log.h
@@ -21,6 +21,8 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include "nm-sd-adapt.h"
+
#include <stdbool.h>
#include <stdarg.h>
#include <syslog.h>
@@ -74,6 +76,7 @@ void log_close_console(void);
void log_parse_environment(void);
+#if 0 /* NM_IGNORED */
int log_internal(
int level,
int error,
@@ -161,6 +164,7 @@ void log_assert_failed_return(
? log_internal(_level, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \
: -abs(_e); \
})
+#endif /* NM_IGNORED */
#define log_full(level, ...) log_full_errno(level, 0, __VA_ARGS__)
diff --git a/src/dhcp-manager/systemd-dhcp/src/shared/macro.h b/src/dhcp-manager/systemd-dhcp/src/shared/macro.h
index c495587b91..bd302918c5 100644
--- a/src/dhcp-manager/systemd-dhcp/src/shared/macro.h
+++ b/src/dhcp-manager/systemd-dhcp/src/shared/macro.h
@@ -453,6 +453,7 @@ do { \
#define UID_INVALID ((uid_t) -1)
#define GID_INVALID ((gid_t) -1)
#define MODE_INVALID ((mode_t) -1)
+#endif /* NM_IGNORED */
#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \
static inline void func##p(type *p) { \
@@ -462,4 +463,3 @@ do { \
struct __useless_struct_to_allow_trailing_semicolon__
#include "log.h"
-#endif /* NM_IGNORED */