mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-30 07:20:11 +01:00
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:
parent
2d860b3f05
commit
7d440b7006
4 changed files with 32 additions and 26 deletions
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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__)
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue