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.
This commit is contained in:
Thomas Haller 2015-01-10 14:51:41 +01:00
parent 2d860b3f05
commit 7d440b7006
4 changed files with 32 additions and 26 deletions

View file

@ -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 \

View file

@ -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); \
} G_STMT_END
#define log_assert_failed_unreachable(t, file, line, func) \
G_STMT_START { \
nm_log_err (LOGD_DHCP, #file ":" #line "(" #func "): assert unreachable: " # t); \
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_return(e, file, line, func) \
nm_log_err (LOGD_DHCP, #file ":" #line "(" #func "): assert return: " # e); \
#define log_assert_failed_return(text, file, line, func) \
G_STMT_START { \
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_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

View file

@ -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__)

View file

@ -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 */