summaryrefslogtreecommitdiff
path: root/src/devices/nm-device-logging.h
blob: ff3d4180dcaece3a5a0dd36fe571b99d077faac9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2014 Red Hat, Inc.
 */

#ifndef __NETWORKMANAGER_DEVICE_LOGGING_H__
#define __NETWORKMANAGER_DEVICE_LOGGING_H__

#include "nm-device.h"

#if !_NM_CC_SUPPORT_GENERIC
    #define _NM_DEVICE_CAST(self) ((NMDevice *) (self))
#elif !defined(_NMLOG_DEVICE_TYPE)
    #define _NM_DEVICE_CAST(self) _NM_ENSURE_TYPE(NMDevice *, self)
#else
    #define _NM_DEVICE_CAST(self)                    \
        _Generic((self), _NMLOG_DEVICE_TYPE *        \
                 : ((NMDevice *) (self)), NMDevice * \
                 : ((NMDevice *) (self)))
#endif

#undef _NMLOG_ENABLED
#define _NMLOG_ENABLED(level, domain) (nm_logging_enabled((level), (domain)))
#define _NMLOG(level, domain, ...)                                                       \
    G_STMT_START                                                                         \
    {                                                                                    \
        const NMLogLevel  _level  = (level);                                             \
        const NMLogDomain _domain = (domain);                                            \
                                                                                         \
        if (nm_logging_enabled(_level, _domain)) {                                       \
            typeof(*self) *const _self   = (self);                                       \
            const char *const    _ifname = _nm_device_get_iface(_NM_DEVICE_CAST(_self)); \
                                                                                         \
            nm_log_obj(_level,                                                           \
                       _domain,                                                          \
                       _ifname,                                                          \
                       NULL,                                                             \
                       _self,                                                            \
                       "device",                                                         \
                       "%s%s%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__),                    \
                       NM_PRINT_FMT_QUOTED(_ifname, "(", _ifname, ")", "[null]")         \
                           _NM_UTILS_MACRO_REST(__VA_ARGS__));                           \
        }                                                                                \
    }                                                                                    \
    G_STMT_END

#endif /* __NETWORKMANAGER_DEVICE_LOGGING_H__ */