diff options
author | Thomas Haller <thaller@redhat.com> | 2015-01-10 14:51:41 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-03-03 11:13:51 +0100 |
commit | 7d440b700688f81f6e3f54b3220930131ade2d1b (patch) | |
tree | 136fd3ad70779f5e845857026bf4adfeed597d6e | |
parent | 2d860b3f05a458232a81832ca75e09afd6e2017d (diff) | |
download | NetworkManager-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.am | 1 | ||||
-rw-r--r-- | src/dhcp-manager/systemd-dhcp/nm-sd-adapt.h | 47 | ||||
-rw-r--r-- | src/dhcp-manager/systemd-dhcp/src/shared/log.h | 4 | ||||
-rw-r--r-- | src/dhcp-manager/systemd-dhcp/src/shared/macro.h | 2 |
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 */ |