mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 07:30:10 +01:00
logging: merge branch 'th/logging-bgo754332'
https://bugzilla.gnome.org/show_bug.cgi?id=754332
This commit is contained in:
commit
aecc6627d2
12 changed files with 244 additions and 135 deletions
|
|
@ -379,7 +379,11 @@ endif
|
|||
GLIB_GENERATED = nm-enum-types.h nm-enum-types.c
|
||||
GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM --fhead '\#include <nm-core-enum-types.h>\n'
|
||||
GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM
|
||||
nm_enum_types_sources = $(libNetworkManager_la_SOURCES)
|
||||
nm_enum_types_sources = $(filter-out \
|
||||
%/nm-device-private.h \
|
||||
%/nm-rdisc-private.h \
|
||||
%/wifi-utils-private.h \
|
||||
, $(libNetworkManager_la_SOURCES))
|
||||
|
||||
BUILT_SOURCES = $(GLIB_GENERATED)
|
||||
|
||||
|
|
|
|||
|
|
@ -194,11 +194,43 @@ void nm_logging_syslog_openlog (const char *logging_backend);
|
|||
#define _LOGT_ENABLED(...) _NMLOG_ENABLED (LOGL_TRACE, ##__VA_ARGS__)
|
||||
#define _LOGT(...) _NMLOG (LOGL_TRACE, __VA_ARGS__)
|
||||
#else
|
||||
/* still call the logging macros to get compile time checks, but they will be optimize out. */
|
||||
/* still call the logging macros to get compile time checks, but they will be optimized out. */
|
||||
#define _LOGT_ENABLED(...) ( FALSE && (_NMLOG_ENABLED (LOGL_TRACE, ##__VA_ARGS__)) )
|
||||
#define _LOGT(...) G_STMT_START { if (FALSE) { _NMLOG (LOGL_TRACE, __VA_ARGS__); } } G_STMT_END
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Some implementation define a second set of logging macros, for a separate
|
||||
* use. As with the _LOGD() macro familiy above, the exact implementation
|
||||
* depends on the file that uses them.
|
||||
* Still, it encourages a common pattern to have the common set of macros
|
||||
* like _LOG2D(), _LOG2I(), etc. and have _LOG2T() which by default
|
||||
* is disabled at compile time. */
|
||||
|
||||
#define _NMLOG2_ENABLED(level) ( nm_logging_enabled ((level), (_NMLOG2_DOMAIN)) )
|
||||
|
||||
#define _LOG2t(...) _NMLOG2 (LOGL_TRACE, __VA_ARGS__)
|
||||
#define _LOG2D(...) _NMLOG2 (LOGL_DEBUG, __VA_ARGS__)
|
||||
#define _LOG2I(...) _NMLOG2 (LOGL_INFO , __VA_ARGS__)
|
||||
#define _LOG2W(...) _NMLOG2 (LOGL_WARN , __VA_ARGS__)
|
||||
#define _LOG2E(...) _NMLOG2 (LOGL_ERR , __VA_ARGS__)
|
||||
|
||||
#define _LOG2t_ENABLED(...) _NMLOG2_ENABLED (LOGL_TRACE, ##__VA_ARGS__)
|
||||
#define _LOG2D_ENABLED(...) _NMLOG2_ENABLED (LOGL_DEBUG, ##__VA_ARGS__)
|
||||
#define _LOG2I_ENABLED(...) _NMLOG2_ENABLED (LOGL_INFO , ##__VA_ARGS__)
|
||||
#define _LOG2W_ENABLED(...) _NMLOG2_ENABLED (LOGL_WARN , ##__VA_ARGS__)
|
||||
#define _LOG2E_ENABLED(...) _NMLOG2_ENABLED (LOGL_ERR , ##__VA_ARGS__)
|
||||
|
||||
#ifdef NM_MORE_LOGGING
|
||||
#define _LOG2T_ENABLED(...) _NMLOG2_ENABLED (LOGL_TRACE, ##__VA_ARGS__)
|
||||
#define _LOG2T(...) _NMLOG2 (LOGL_TRACE, __VA_ARGS__)
|
||||
#else
|
||||
/* still call the logging macros to get compile time checks, but they will be optimized out. */
|
||||
#define _LOG2T_ENABLED(...) ( FALSE && (_NMLOG2_ENABLED (LOGL_TRACE, ##__VA_ARGS__)) )
|
||||
#define _LOG2T(...) G_STMT_START { if (FALSE) { _NMLOG2 (LOGL_TRACE, __VA_ARGS__); } } G_STMT_END
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#endif /* __NETWORKMANAGER_LOGGING_H__ */
|
||||
|
|
|
|||
|
|
@ -33,7 +33,33 @@
|
|||
|
||||
#include "nm-test-utils.h"
|
||||
|
||||
#define debug(format, ...) nm_log_dbg (LOGD_PLATFORM, format, __VA_ARGS__)
|
||||
/*********************************************************************************************/
|
||||
|
||||
#define _NMLOG_PREFIX_NAME "platform-fake"
|
||||
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, platform, __VA_ARGS__)
|
||||
|
||||
#define _LOG(level, domain, self, ...) \
|
||||
G_STMT_START { \
|
||||
const NMLogLevel __level = (level); \
|
||||
const NMLogDomain __domain = (domain); \
|
||||
\
|
||||
if (nm_logging_enabled (__level, __domain)) { \
|
||||
char __prefix[32]; \
|
||||
const char *__p_prefix = _NMLOG_PREFIX_NAME; \
|
||||
const void *const __self = (self); \
|
||||
\
|
||||
if (__self && __self != nm_platform_try_get ()) { \
|
||||
g_snprintf (__prefix, sizeof (__prefix), "%s[%p]", _NMLOG_PREFIX_NAME, __self); \
|
||||
__p_prefix = __prefix; \
|
||||
} \
|
||||
_nm_log (__level, __domain, 0, \
|
||||
"%s: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \
|
||||
__p_prefix _NM_UTILS_MACRO_REST (__VA_ARGS__)); \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
GHashTable *options;
|
||||
|
|
@ -156,7 +182,7 @@ link_get (NMPlatform *platform, int ifindex)
|
|||
|
||||
return device;
|
||||
not_found:
|
||||
debug ("link not found: %d", ifindex);
|
||||
_LOGD ("link not found: %d", ifindex);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,9 +66,11 @@
|
|||
|
||||
/*********************************************************************************************/
|
||||
|
||||
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG_PREFIX_NAME "platform-linux"
|
||||
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, platform, __VA_ARGS__)
|
||||
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG2_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, platform, __VA_ARGS__)
|
||||
#define _NMLOG2(level, ...) _LOG(level, _NMLOG2_DOMAIN, NULL, __VA_ARGS__)
|
||||
|
||||
#define _LOG(level, domain, self, ...) \
|
||||
G_STMT_START { \
|
||||
|
|
@ -90,12 +92,6 @@
|
|||
} \
|
||||
} G_STMT_END
|
||||
|
||||
#define trace(...) _LOG (LOGL_TRACE, _NMLOG_DOMAIN, NULL, __VA_ARGS__)
|
||||
#define debug(...) _LOG (LOGL_DEBUG, _NMLOG_DOMAIN, NULL, __VA_ARGS__)
|
||||
#define info(...) _LOG (LOGL_INFO, _NMLOG_DOMAIN, NULL, __VA_ARGS__)
|
||||
#define warning(...) _LOG (LOGL_WARN , _NMLOG_DOMAIN, NULL, __VA_ARGS__)
|
||||
#define error(...) _LOG (LOGL_ERR , _NMLOG_DOMAIN, NULL, __VA_ARGS__)
|
||||
|
||||
/******************************************************************
|
||||
* Forward declarations and enums
|
||||
******************************************************************/
|
||||
|
|
@ -167,7 +163,7 @@ _nl_get_vtable (void)
|
|||
if (!vtable.f_nl_has_capability)
|
||||
vtable.f_nl_has_capability = &_nl_f_nl_has_capability;
|
||||
|
||||
trace ("libnl: rtnl_link_get_link_netnsid() %s", vtable.f_rtnl_link_get_link_netnsid ? "supported" : "not supported");
|
||||
_LOG2t ("libnl: rtnl_link_get_link_netnsid() %s", vtable.f_rtnl_link_get_link_netnsid ? "supported" : "not supported");
|
||||
|
||||
g_return_val_if_fail (vtable.handle, &vtable);
|
||||
g_return_val_if_fail (vtable.handle_route, &vtable);
|
||||
|
|
@ -529,7 +525,7 @@ _support_user_ipv6ll_get (void)
|
|||
#if HAVE_LIBNL_INET6_ADDR_GEN_MODE
|
||||
if (_support_user_ipv6ll_still_undecided ()) {
|
||||
_support_user_ipv6ll = -1;
|
||||
nm_log_warn (LOGD_PLATFORM, "kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "failed to detect; assume no support");
|
||||
_LOG2W ("kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "failed to detect; assume no support");
|
||||
} else
|
||||
return _support_user_ipv6ll > 0;
|
||||
#endif
|
||||
|
|
@ -549,10 +545,10 @@ _support_user_ipv6ll_detect (const struct rtnl_link *rtnl_link)
|
|||
|
||||
if (rtnl_link_inet6_get_addr_gen_mode ((struct rtnl_link *) rtnl_link, &mode) == 0) {
|
||||
_support_user_ipv6ll = 1;
|
||||
nm_log_dbg (LOGD_PLATFORM, "kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "detected");
|
||||
_LOG2D ("kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "detected");
|
||||
} else {
|
||||
_support_user_ipv6ll = -1;
|
||||
nm_log_dbg (LOGD_PLATFORM, "kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "not detected");
|
||||
_LOG2D ("kernel support for IFLA_INET6_ADDR_GEN_MODE %s", "not detected");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -593,7 +589,7 @@ static gboolean
|
|||
_support_kernel_extended_ifa_flags_get (void)
|
||||
{
|
||||
if (_support_kernel_extended_ifa_flags_still_undecided ()) {
|
||||
nm_log_warn (LOGD_PLATFORM, "Unable to detect kernel support for extended IFA_FLAGS. Assume no kernel support.");
|
||||
_LOG2W ("Unable to detect kernel support for extended IFA_FLAGS. Assume no kernel support.");
|
||||
_support_kernel_extended_ifa_flags = -1;
|
||||
}
|
||||
return _support_kernel_extended_ifa_flags > 0;
|
||||
|
|
@ -735,6 +731,8 @@ struct _NMLinuxPlatformPrivate {
|
|||
GIOChannel *event_channel;
|
||||
guint event_id;
|
||||
|
||||
GHashTable *sysctl_get_prev_values;
|
||||
|
||||
GUdevClient *udev_client;
|
||||
|
||||
struct {
|
||||
|
|
@ -923,8 +921,8 @@ link_extract_type (NMPlatform *platform, struct rtnl_link *rtnllink, gboolean *c
|
|||
}
|
||||
flags = rtnl_link_get_flags (rtnllink);
|
||||
|
||||
nm_log_dbg (LOGD_PLATFORM, "Failed to read tun properties for interface %d (link flags: %X)",
|
||||
rtnl_link_get_ifindex (rtnllink), flags);
|
||||
_LOGD ("Failed to read tun properties for interface %d (link flags: %X)",
|
||||
rtnl_link_get_ifindex (rtnllink), flags);
|
||||
|
||||
/* try guessing the type using the link flags instead... */
|
||||
if (flags & IFF_POINTOPOINT)
|
||||
|
|
@ -2394,32 +2392,32 @@ event_notification (struct nl_msg *msg, gpointer user_data)
|
|||
/******************************************************************/
|
||||
|
||||
static void
|
||||
_log_dbg_sysctl_set_impl (const char *path, const char *value)
|
||||
_log_dbg_sysctl_set_impl (NMPlatform *platform, const char *path, const char *value)
|
||||
{
|
||||
GError *error = NULL;
|
||||
char *contents, *contents_escaped;
|
||||
char *value_escaped = g_strescape (value, NULL);
|
||||
|
||||
if (!g_file_get_contents (path, &contents, NULL, &error)) {
|
||||
debug ("sysctl: setting '%s' to '%s' (current value cannot be read: %s)", path, value_escaped, error->message);
|
||||
_LOGD ("sysctl: setting '%s' to '%s' (current value cannot be read: %s)", path, value_escaped, error->message);
|
||||
g_clear_error (&error);
|
||||
} else {
|
||||
g_strstrip (contents);
|
||||
contents_escaped = g_strescape (contents, NULL);
|
||||
if (strcmp (contents, value) == 0)
|
||||
debug ("sysctl: setting '%s' to '%s' (current value is identical)", path, value_escaped);
|
||||
_LOGD ("sysctl: setting '%s' to '%s' (current value is identical)", path, value_escaped);
|
||||
else
|
||||
debug ("sysctl: setting '%s' to '%s' (current value is '%s')", path, value_escaped, contents_escaped);
|
||||
_LOGD ("sysctl: setting '%s' to '%s' (current value is '%s')", path, value_escaped, contents_escaped);
|
||||
g_free (contents);
|
||||
g_free (contents_escaped);
|
||||
}
|
||||
g_free (value_escaped);
|
||||
}
|
||||
|
||||
#define _log_dbg_sysctl_set(path, value) \
|
||||
#define _log_dbg_sysctl_set(platform, path, value) \
|
||||
G_STMT_START { \
|
||||
if (nm_logging_enabled (LOGL_DEBUG, LOGD_PLATFORM)) { \
|
||||
_log_dbg_sysctl_set_impl (path, value); \
|
||||
if (_LOGD_ENABLED ()) { \
|
||||
_log_dbg_sysctl_set_impl (platform, path, value); \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
|
|
@ -2441,16 +2439,16 @@ sysctl_set (NMPlatform *platform, const char *path, const char *value)
|
|||
fd = open (path, O_WRONLY | O_TRUNC);
|
||||
if (fd == -1) {
|
||||
if (errno == ENOENT) {
|
||||
debug ("sysctl: failed to open '%s': (%d) %s",
|
||||
_LOGD ("sysctl: failed to open '%s': (%d) %s",
|
||||
path, errno, strerror (errno));
|
||||
} else {
|
||||
error ("sysctl: failed to open '%s': (%d) %s",
|
||||
_LOGE ("sysctl: failed to open '%s': (%d) %s",
|
||||
path, errno, strerror (errno));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_log_dbg_sysctl_set (path, value);
|
||||
_log_dbg_sysctl_set (platform, path, value);
|
||||
|
||||
/* Most sysfs and sysctl options don't care about a trailing LF, while some
|
||||
* (like infiniband) do. So always add the LF. Also, neither sysfs nor
|
||||
|
|
@ -2465,17 +2463,17 @@ sysctl_set (NMPlatform *platform, const char *path, const char *value)
|
|||
nwrote = write (fd, actual, len);
|
||||
if (nwrote == -1) {
|
||||
if (errno == EINTR) {
|
||||
debug ("sysctl: interrupted, will try again");
|
||||
_LOGD ("sysctl: interrupted, will try again");
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (nwrote == -1 && errno != EEXIST) {
|
||||
error ("sysctl: failed to set '%s' to '%s': (%d) %s",
|
||||
_LOGE ("sysctl: failed to set '%s' to '%s': (%d) %s",
|
||||
path, value, errno, strerror (errno));
|
||||
} else if (nwrote < len) {
|
||||
error ("sysctl: failed to set '%s' to '%s' after three attempts",
|
||||
_LOGE ("sysctl: failed to set '%s' to '%s' after three attempts",
|
||||
path, value);
|
||||
}
|
||||
|
||||
|
|
@ -2484,44 +2482,47 @@ sysctl_set (NMPlatform *platform, const char *path, const char *value)
|
|||
return (nwrote == len);
|
||||
}
|
||||
|
||||
static GHashTable *sysctl_get_prev_values;
|
||||
|
||||
static void
|
||||
_log_dbg_sysctl_get_impl (const char *path, const char *contents)
|
||||
_log_dbg_sysctl_get_impl (NMPlatform *platform, const char *path, const char *contents)
|
||||
{
|
||||
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
|
||||
const char *prev_value = NULL;
|
||||
|
||||
if (!sysctl_get_prev_values)
|
||||
sysctl_get_prev_values = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
|
||||
if (!priv->sysctl_get_prev_values)
|
||||
priv->sysctl_get_prev_values = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
|
||||
else
|
||||
prev_value = g_hash_table_lookup (sysctl_get_prev_values, path);
|
||||
prev_value = g_hash_table_lookup (priv->sysctl_get_prev_values, path);
|
||||
|
||||
if (prev_value) {
|
||||
if (strcmp (prev_value, contents) != 0) {
|
||||
char *contents_escaped = g_strescape (contents, NULL);
|
||||
char *prev_value_escaped = g_strescape (prev_value, NULL);
|
||||
|
||||
debug ("sysctl: reading '%s': '%s' (changed from '%s' on last read)", path, contents_escaped, prev_value_escaped);
|
||||
_LOGD ("sysctl: reading '%s': '%s' (changed from '%s' on last read)", path, contents_escaped, prev_value_escaped);
|
||||
g_free (contents_escaped);
|
||||
g_free (prev_value_escaped);
|
||||
g_hash_table_insert (sysctl_get_prev_values, g_strdup (path), g_strdup (contents));
|
||||
g_hash_table_insert (priv->sysctl_get_prev_values, g_strdup (path), g_strdup (contents));
|
||||
}
|
||||
} else {
|
||||
char *contents_escaped = g_strescape (contents, NULL);
|
||||
|
||||
debug ("sysctl: reading '%s': '%s'", path, contents_escaped);
|
||||
_LOGD ("sysctl: reading '%s': '%s'", path, contents_escaped);
|
||||
g_free (contents_escaped);
|
||||
g_hash_table_insert (sysctl_get_prev_values, g_strdup (path), g_strdup (contents));
|
||||
g_hash_table_insert (priv->sysctl_get_prev_values, g_strdup (path), g_strdup (contents));
|
||||
}
|
||||
}
|
||||
|
||||
#define _log_dbg_sysctl_get(path, contents) \
|
||||
#define _log_dbg_sysctl_get(platform, path, contents) \
|
||||
G_STMT_START { \
|
||||
if (nm_logging_enabled (LOGL_DEBUG, LOGD_PLATFORM)) { \
|
||||
_log_dbg_sysctl_get_impl (path, contents); \
|
||||
} else if (sysctl_get_prev_values) { \
|
||||
g_hash_table_destroy (sysctl_get_prev_values); \
|
||||
sysctl_get_prev_values = NULL; \
|
||||
if (_LOGD_ENABLED ()) { \
|
||||
_log_dbg_sysctl_get_impl (platform, path, contents); \
|
||||
} else { \
|
||||
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform); \
|
||||
\
|
||||
if (priv->sysctl_get_prev_values) { \
|
||||
g_hash_table_destroy (priv->sysctl_get_prev_values); \
|
||||
priv->sysctl_get_prev_values = NULL; \
|
||||
} \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
|
|
@ -2541,16 +2542,16 @@ sysctl_get (NMPlatform *platform, const char *path)
|
|||
/* We assume FAILED means EOPNOTSUP */
|
||||
if ( g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)
|
||||
|| g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_FAILED))
|
||||
debug ("error reading %s: %s", path, error->message);
|
||||
_LOGD ("error reading %s: %s", path, error->message);
|
||||
else
|
||||
error ("error reading %s: %s", path, error->message);
|
||||
_LOGE ("error reading %s: %s", path, error->message);
|
||||
g_clear_error (&error);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_strstrip (contents);
|
||||
|
||||
_log_dbg_sysctl_get (path, contents);
|
||||
_log_dbg_sysctl_get (platform, path, contents);
|
||||
|
||||
return contents;
|
||||
}
|
||||
|
|
@ -2847,7 +2848,7 @@ link_add (NMPlatform *platform,
|
|||
nm_utils_modprobe (NULL, TRUE, "bonding", "max_bonds=0", NULL);
|
||||
}
|
||||
|
||||
debug ("link: add link '%s' of type '%s' (%d)",
|
||||
_LOGD ("link: add link '%s' of type '%s' (%d)",
|
||||
name, nm_link_type_to_string (type), (int) type);
|
||||
|
||||
l = build_rtnl_link (0, name, type);
|
||||
|
|
@ -3014,7 +3015,7 @@ link_set_user_ipv6ll_enabled (NMPlatform *platform, int ifindex, gboolean enable
|
|||
char buf[32];
|
||||
|
||||
rtnl_link_inet6_set_addr_gen_mode (nlo, mode);
|
||||
debug ("link: change %d: set IPv6 address generation mode to %s",
|
||||
_LOGD ("link: change %d: set IPv6 address generation mode to %s",
|
||||
ifindex, rtnl_link_inet6_addrgenmode2str (mode, buf, sizeof (buf)));
|
||||
return do_change_link (platform, nlo, TRUE) == NM_PLATFORM_ERROR_SUCCESS;
|
||||
}
|
||||
|
|
@ -3081,7 +3082,7 @@ link_set_mtu (NMPlatform *platform, int ifindex, guint32 mtu)
|
|||
auto_nl_object struct rtnl_link *change = _nl_rtnl_link_alloc (ifindex, NULL);
|
||||
|
||||
rtnl_link_set_mtu (change, mtu);
|
||||
debug ("link: change %d: mtu %lu", ifindex, (unsigned long)mtu);
|
||||
_LOGD ("link: change %d: mtu %lu", ifindex, (unsigned long)mtu);
|
||||
|
||||
return do_change_link (platform, change, TRUE) == NM_PLATFORM_ERROR_SUCCESS;
|
||||
}
|
||||
|
|
@ -3152,7 +3153,7 @@ vlan_add (NMPlatform *platform,
|
|||
rtnl_link_vlan_set_id (rtnllink, vlan_id);
|
||||
rtnl_link_vlan_set_flags (rtnllink, kernel_flags);
|
||||
|
||||
debug ("link: add vlan '%s', parent %d, vlan id %d, flags %X (native: %X)",
|
||||
_LOGD ("link: add vlan '%s', parent %d, vlan id %d, flags %X (native: %X)",
|
||||
name, parent, vlan_id, (unsigned int) vlan_flags, kernel_flags);
|
||||
|
||||
return do_add_link_with_lookup (platform, name, rtnllink, NM_LINK_TYPE_VLAN, out_link);
|
||||
|
|
@ -3183,7 +3184,7 @@ vlan_set_ingress_map (NMPlatform *platform, int ifindex, int from, int to)
|
|||
rtnl_link_set_type (change, "vlan");
|
||||
rtnl_link_vlan_set_ingress_map (change, from, to);
|
||||
|
||||
debug ("link: change %d: vlan ingress map %d -> %d", ifindex, from, to);
|
||||
_LOGD ("link: change %d: vlan ingress map %d -> %d", ifindex, from, to);
|
||||
|
||||
return do_change_link (platform, change, TRUE) == NM_PLATFORM_ERROR_SUCCESS;
|
||||
}
|
||||
|
|
@ -3196,7 +3197,7 @@ vlan_set_egress_map (NMPlatform *platform, int ifindex, int from, int to)
|
|||
rtnl_link_set_type (change, "vlan");
|
||||
rtnl_link_vlan_set_egress_map (change, from, to);
|
||||
|
||||
debug ("link: change %d: vlan egress map %d -> %d", ifindex, from, to);
|
||||
_LOGD ("link: change %d: vlan egress map %d -> %d", ifindex, from, to);
|
||||
|
||||
return do_change_link (platform, change, TRUE) == NM_PLATFORM_ERROR_SUCCESS;
|
||||
}
|
||||
|
|
@ -3207,7 +3208,7 @@ link_enslave (NMPlatform *platform, int master, int slave)
|
|||
auto_nl_object struct rtnl_link *change = _nl_rtnl_link_alloc (slave, NULL);
|
||||
|
||||
rtnl_link_set_master (change, master);
|
||||
debug ("link: change %d: enslave to master %d", slave, master);
|
||||
_LOGD ("link: change %d: enslave to master %d", slave, master);
|
||||
|
||||
return do_change_link (platform, change, TRUE) == NM_PLATFORM_ERROR_SUCCESS;
|
||||
}
|
||||
|
|
@ -3587,8 +3588,8 @@ macvlan_get_properties (NMPlatform *platform, int ifindex, NMPlatformMacvlanProp
|
|||
err = _nl_link_parse_info_data (priv->nlh, ifindex,
|
||||
macvlan_info_data_parser, props);
|
||||
if (err != 0) {
|
||||
warning ("(%s) could not read properties: %s",
|
||||
obj->link.name, nl_geterror (err));
|
||||
_LOGW ("(%s) could not read properties: %s",
|
||||
obj->link.name, nl_geterror (err));
|
||||
}
|
||||
return (err == 0);
|
||||
}
|
||||
|
|
@ -3718,8 +3719,8 @@ vxlan_get_properties (NMPlatform *platform, int ifindex, NMPlatformVxlanProperti
|
|||
err = _nl_link_parse_info_data (priv->nlh, ifindex,
|
||||
vxlan_info_data_parser, props);
|
||||
if (err != 0) {
|
||||
warning ("(%s) could not read vxlan properties: %s",
|
||||
nm_platform_link_get_name (platform, ifindex), nl_geterror (err));
|
||||
_LOGW ("(%s) could not read vxlan properties: %s",
|
||||
nm_platform_link_get_name (platform, ifindex), nl_geterror (err));
|
||||
}
|
||||
return (err == 0);
|
||||
}
|
||||
|
|
@ -3772,8 +3773,8 @@ gre_get_properties (NMPlatform *platform, int ifindex, NMPlatformGreProperties *
|
|||
err = _nl_link_parse_info_data (priv->nlh, ifindex,
|
||||
gre_info_data_parser, props);
|
||||
if (err != 0) {
|
||||
warning ("(%s) could not read gre properties: %s",
|
||||
nm_platform_link_get_name (platform, ifindex), nl_geterror (err));
|
||||
_LOGW ("(%s) could not read gre properties: %s",
|
||||
nm_platform_link_get_name (platform, ifindex), nl_geterror (err));
|
||||
}
|
||||
return (err == 0);
|
||||
}
|
||||
|
|
@ -4035,7 +4036,7 @@ build_rtnl_addr (NMPlatform *platform,
|
|||
/* IP address */
|
||||
nle = rtnl_addr_set_local (rtnladdr, nladdr);
|
||||
if (nle) {
|
||||
error ("build_rtnl_addr(): rtnl_addr_set_local failed with %s (%d)", nl_geterror (nle), nle);
|
||||
_LOGE ("build_rtnl_addr(): rtnl_addr_set_local failed with %s (%d)", nl_geterror (nle), nle);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -4061,7 +4062,7 @@ build_rtnl_addr (NMPlatform *platform,
|
|||
nle = rtnl_addr_set_peer (rtnladdr, nlpeer);
|
||||
if (nle && nle != -NLE_AF_NOSUPPORT) {
|
||||
/* IPv6 doesn't support peer addresses yet */
|
||||
error ("build_rtnl_addr(): rtnl_addr_set_peer failed with %s (%d)", nl_geterror (nle), nle);
|
||||
_LOGE ("build_rtnl_addr(): rtnl_addr_set_peer failed with %s (%d)", nl_geterror (nle), nle);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -4540,15 +4541,15 @@ ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, int p
|
|||
#define DISCONNECT_CONDITIONS ((GIOCondition) (G_IO_HUP))
|
||||
|
||||
static int
|
||||
verify_source (struct nl_msg *msg, gpointer user_data)
|
||||
verify_source (struct nl_msg *msg, NMPlatform *platform)
|
||||
{
|
||||
struct ucred *creds = nlmsg_get_creds (msg);
|
||||
|
||||
if (!creds || creds->pid) {
|
||||
if (creds)
|
||||
warning ("netlink: received non-kernel message (pid %d)", creds->pid);
|
||||
_LOGW ("netlink: received non-kernel message (pid %d)", creds->pid);
|
||||
else
|
||||
warning ("netlink: received message without credentials");
|
||||
_LOGW ("netlink: received message without credentials");
|
||||
return NL_STOP;
|
||||
}
|
||||
|
||||
|
|
@ -4581,10 +4582,10 @@ event_handler_read_netlink_one (NMPlatform *platform)
|
|||
case -NLE_AGAIN:
|
||||
return FALSE;
|
||||
case -NLE_DUMP_INTR:
|
||||
debug ("Uncritical failure to retrieve incoming events: %s (%d)", nl_geterror (nle), nle);
|
||||
_LOGD ("Uncritical failure to retrieve incoming events: %s (%d)", nl_geterror (nle), nle);
|
||||
break;
|
||||
case -NLE_NOMEM:
|
||||
info ("Too many netlink events. Need to resynchronize platform cache");
|
||||
_LOGI ("Too many netlink events. Need to resynchronize platform cache");
|
||||
/* Drain the event queue, we've lost events and are out of sync anyway and we'd
|
||||
* like to free up some space. We'll read in the status synchronously. */
|
||||
_nl_sock_flush_data (priv->nlh_event);
|
||||
|
|
@ -4598,7 +4599,7 @@ event_handler_read_netlink_one (NMPlatform *platform)
|
|||
NULL);
|
||||
break;
|
||||
default:
|
||||
error ("Failed to retrieve incoming events: %s (%d)", nl_geterror (nle), nle);
|
||||
_LOGE ("Failed to retrieve incoming events: %s (%d)", nl_geterror (nle), nle);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
@ -4670,7 +4671,7 @@ event_handler_read_netlink_all (NMPlatform *platform, gboolean wait_for_acks)
|
|||
}
|
||||
|
||||
static struct nl_sock *
|
||||
setup_socket (gboolean event, gpointer user_data)
|
||||
setup_socket (NMPlatform *platform, gboolean event)
|
||||
{
|
||||
struct nl_sock *sock;
|
||||
int nle;
|
||||
|
|
@ -4679,14 +4680,14 @@ setup_socket (gboolean event, gpointer user_data)
|
|||
g_return_val_if_fail (sock, NULL);
|
||||
|
||||
/* Only ever accept messages from kernel */
|
||||
nle = nl_socket_modify_cb (sock, NL_CB_MSG_IN, NL_CB_CUSTOM, verify_source, user_data);
|
||||
nle = nl_socket_modify_cb (sock, NL_CB_MSG_IN, NL_CB_CUSTOM, (nl_recvmsg_msg_cb_t) verify_source, platform);
|
||||
g_assert (!nle);
|
||||
|
||||
/* Dispatch event messages (event socket only) */
|
||||
if (event) {
|
||||
nl_socket_modify_cb (sock, NL_CB_VALID, NL_CB_CUSTOM, event_notification, user_data);
|
||||
nl_socket_modify_cb (sock, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, event_seq_check, user_data);
|
||||
nl_socket_modify_err_cb (sock, NL_CB_CUSTOM, event_err, user_data);
|
||||
nl_socket_modify_cb (sock, NL_CB_VALID, NL_CB_CUSTOM, event_notification, platform);
|
||||
nl_socket_modify_cb (sock, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, event_seq_check, platform);
|
||||
nl_socket_modify_err_cb (sock, NL_CB_CUSTOM, event_err, platform);
|
||||
}
|
||||
|
||||
nle = nl_connect (sock, NETLINK_ROUTE);
|
||||
|
|
@ -4726,23 +4727,23 @@ udev_device_added (NMPlatform *platform,
|
|||
|
||||
ifname = g_udev_device_get_name (udev_device);
|
||||
if (!ifname) {
|
||||
debug ("udev-add: failed to get device's interface");
|
||||
_LOGD ("udev-add: failed to get device's interface");
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_udev_device_get_property (udev_device, "IFINDEX"))
|
||||
ifindex = g_udev_device_get_property_as_int (udev_device, "IFINDEX");
|
||||
else {
|
||||
warning ("(%s): udev-add: failed to get device's ifindex", ifname);
|
||||
_LOGW ("(%s): udev-add: failed to get device's ifindex", ifname);
|
||||
return;
|
||||
}
|
||||
if (ifindex <= 0) {
|
||||
warning ("(%s): udev-add: retrieved invalid IFINDEX=%d", ifname, ifindex);
|
||||
_LOGW ("(%s): udev-add: retrieved invalid IFINDEX=%d", ifname, ifindex);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!g_udev_device_get_sysfs_path (udev_device)) {
|
||||
debug ("(%s): udev-add: couldn't determine device path; ignoring...", ifname);
|
||||
_LOGD ("(%s): udev-add: couldn't determine device path; ignoring...", ifname);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -4772,7 +4773,7 @@ udev_device_removed (NMPlatform *platform,
|
|||
ifindex = obj->link.ifindex;
|
||||
}
|
||||
|
||||
debug ("udev-remove: IFINDEX=%d", ifindex);
|
||||
_LOGD ("udev-remove: IFINDEX=%d", ifindex);
|
||||
if (ifindex <= 0)
|
||||
return;
|
||||
|
||||
|
|
@ -4798,9 +4799,9 @@ handle_udev_event (GUdevClient *client,
|
|||
|
||||
ifindex = g_udev_device_get_property (udev_device, "IFINDEX");
|
||||
seqnum = g_udev_device_get_seqnum (udev_device);
|
||||
debug ("UDEV event: action '%s' subsys '%s' device '%s' (%s); seqnum=%" G_GUINT64_FORMAT,
|
||||
action, subsys, g_udev_device_get_name (udev_device),
|
||||
ifindex ? ifindex : "unknown", seqnum);
|
||||
_LOGD ("UDEV event: action '%s' subsys '%s' device '%s' (%s); seqnum=%" G_GUINT64_FORMAT,
|
||||
action, subsys, g_udev_device_get_name (udev_device),
|
||||
ifindex ? ifindex : "unknown", seqnum);
|
||||
|
||||
if (!strcmp (action, "add") || !strcmp (action, "move"))
|
||||
udev_device_added (platform, udev_device);
|
||||
|
|
@ -4842,12 +4843,12 @@ constructed (GObject *_object)
|
|||
_LOGD ("create");
|
||||
|
||||
/* Initialize netlink socket for requests */
|
||||
priv->nlh = setup_socket (FALSE, platform);
|
||||
priv->nlh = setup_socket (platform, FALSE);
|
||||
g_assert (priv->nlh);
|
||||
debug ("Netlink socket for requests established: port=%u, fd=%d", nl_socket_get_local_port (priv->nlh), nl_socket_get_fd (priv->nlh));
|
||||
_LOGD ("Netlink socket for requests established: port=%u, fd=%d", nl_socket_get_local_port (priv->nlh), nl_socket_get_fd (priv->nlh));
|
||||
|
||||
/* Initialize netlink socket for events */
|
||||
priv->nlh_event = setup_socket (TRUE, platform);
|
||||
priv->nlh_event = setup_socket (platform, TRUE);
|
||||
g_assert (priv->nlh_event);
|
||||
/* The default buffer size wasn't enough for the testsuites. It might just
|
||||
* as well happen with NetworkManager itself. For now let's hope 128KB is
|
||||
|
|
@ -4861,7 +4862,7 @@ constructed (GObject *_object)
|
|||
RTNLGRP_IPV4_ROUTE, RTNLGRP_IPV6_ROUTE,
|
||||
0);
|
||||
g_assert (!nle);
|
||||
debug ("Netlink socket for events established: port=%u, fd=%d", nl_socket_get_local_port (priv->nlh_event), nl_socket_get_fd (priv->nlh_event));
|
||||
_LOGD ("Netlink socket for events established: port=%u, fd=%d", nl_socket_get_local_port (priv->nlh_event), nl_socket_get_fd (priv->nlh_event));
|
||||
|
||||
priv->event_channel = g_io_channel_unix_new (nl_socket_get_fd (priv->nlh_event));
|
||||
g_io_channel_set_encoding (priv->event_channel, NULL, NULL);
|
||||
|
|
@ -4947,6 +4948,9 @@ nm_linux_platform_finalize (GObject *object)
|
|||
g_object_unref (priv->udev_client);
|
||||
g_hash_table_unref (priv->wifi_data);
|
||||
|
||||
if (priv->sysctl_get_prev_values)
|
||||
g_hash_table_destroy (priv->sysctl_get_prev_values);
|
||||
|
||||
G_OBJECT_CLASS (nm_linux_platform_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ ip4_address_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex,
|
|||
g_main_loop_quit (data->loop);
|
||||
|
||||
data->received_count++;
|
||||
debug ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
_LOGD ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -45,7 +45,7 @@ ip6_address_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex,
|
|||
g_main_loop_quit (data->loop);
|
||||
|
||||
data->received_count++;
|
||||
debug ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
_LOGD ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCall
|
|||
void
|
||||
_accept_signal (const char *file, int line, const char *func, SignalData *data)
|
||||
{
|
||||
debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal one time: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
_LOGD ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal one time: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
if (data->received_count != 1)
|
||||
g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal one time: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
data->received_count = 0;
|
||||
|
|
@ -55,7 +55,7 @@ _accept_signal (const char *file, int line, const char *func, SignalData *data)
|
|||
void
|
||||
_accept_signals (const char *file, int line, const char *func, SignalData *data, int min, int max)
|
||||
{
|
||||
debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal [%d,%d] times: "SIGNAL_DATA_FMT, file, line, func, min, max, SIGNAL_DATA_ARG (data));
|
||||
_LOGD ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal [%d,%d] times: "SIGNAL_DATA_FMT, file, line, func, min, max, SIGNAL_DATA_ARG (data));
|
||||
if (data->received_count < min || data->received_count > max)
|
||||
g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal [%d,%d] times: "SIGNAL_DATA_FMT, file, line, func, min, max, SIGNAL_DATA_ARG (data));
|
||||
data->received_count = 0;
|
||||
|
|
@ -64,7 +64,7 @@ _accept_signals (const char *file, int line, const char *func, SignalData *data,
|
|||
void
|
||||
_ensure_no_signal (const char *file, int line, const char *func, SignalData *data)
|
||||
{
|
||||
debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal 0 times: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
_LOGD ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal 0 times: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
if (data->received_count > 0)
|
||||
g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal 0 times: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ _ensure_no_signal (const char *file, int line, const char *func, SignalData *dat
|
|||
void
|
||||
_wait_signal (const char *file, int line, const char *func, SignalData *data)
|
||||
{
|
||||
debug ("NMPlatformSignalAssert: %s:%d, %s(): wait signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
_LOGD ("NMPlatformSignalAssert: %s:%d, %s(): wait signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
if (data->received_count)
|
||||
g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to wait for signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
|
||||
|
|
@ -86,7 +86,7 @@ _wait_signal (const char *file, int line, const char *func, SignalData *data)
|
|||
void
|
||||
_free_signal (const char *file, int line, const char *func, SignalData *data)
|
||||
{
|
||||
debug ("NMPlatformSignalAssert: %s:%d, %s(): free signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
_LOGD ("NMPlatformSignalAssert: %s:%d, %s(): free signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
if (data->received_count != 0)
|
||||
g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to free non-accepted signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data));
|
||||
|
||||
|
|
@ -114,12 +114,12 @@ link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlat
|
|||
return;
|
||||
|
||||
if (data->loop) {
|
||||
debug ("Quitting main loop.");
|
||||
_LOGD ("Quitting main loop.");
|
||||
g_main_loop_quit (data->loop);
|
||||
}
|
||||
|
||||
data->received_count++;
|
||||
debug ("Received signal '%s-%s' ifindex %d ifname '%s' %dth time.", data->name, nm_platform_signal_change_type_to_string (data->change_type), ifindex, received->name, data->received_count);
|
||||
_LOGD ("Received signal '%s-%s' ifindex %d ifname '%s' %dth time.", data->name, nm_platform_signal_change_type_to_string (data->change_type), ifindex, received->name, data->received_count);
|
||||
|
||||
if (change_type == NM_PLATFORM_SIGNAL_REMOVED)
|
||||
g_assert (!nm_platform_link_get_name (NM_PLATFORM_GET, ifindex));
|
||||
|
|
@ -262,9 +262,9 @@ run_command (const char *format, ...)
|
|||
va_start (ap, format);
|
||||
command = g_strdup_vprintf (format, ap);
|
||||
va_end (ap);
|
||||
debug ("Running command: %s", command);
|
||||
_LOGD ("Running command: %s", command);
|
||||
g_assert (!system (command));
|
||||
debug ("Command finished.");
|
||||
_LOGD ("Command finished.");
|
||||
g_free (command);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,25 @@
|
|||
|
||||
#define DEVICE_NAME "nm-test-device"
|
||||
|
||||
#define debug(...) nm_log_dbg (LOGD_PLATFORM, __VA_ARGS__)
|
||||
/*********************************************************************************************/
|
||||
|
||||
#define _NMLOG_PREFIX_NAME "platform-test"
|
||||
#define _NMLOG_DOMAIN LOGD_PLATFORM
|
||||
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, __VA_ARGS__)
|
||||
|
||||
#define _LOG(level, domain, ...) \
|
||||
G_STMT_START { \
|
||||
const NMLogLevel __level = (level); \
|
||||
const NMLogDomain __domain = (domain); \
|
||||
\
|
||||
if (nm_logging_enabled (__level, __domain)) { \
|
||||
_nm_log (__level, __domain, 0, \
|
||||
"%s: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \
|
||||
_NMLOG_PREFIX_NAME _NM_UTILS_MACRO_REST (__VA_ARGS__)); \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
int handler_id;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ ip4_route_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, c
|
|||
g_main_loop_quit (data->loop);
|
||||
|
||||
data->received_count++;
|
||||
debug ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
_LOGD ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -45,7 +45,7 @@ ip6_route_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, c
|
|||
g_main_loop_quit (data->loop);
|
||||
|
||||
data->received_count++;
|
||||
debug ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
_LOGD ("Received signal '%s' %dth time.", data->name, data->received_count);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -28,9 +28,7 @@
|
|||
|
||||
#include "nm-default.h"
|
||||
|
||||
#define debug(...) nm_log_dbg (LOGD_IP6, __VA_ARGS__)
|
||||
#define warning(...) nm_log_warn (LOGD_IP6, __VA_ARGS__)
|
||||
#define error(...) nm_log_err (LOGD_IP6, __VA_ARGS__)
|
||||
#define _NMLOG_PREFIX_NAME "rdisc-fake"
|
||||
|
||||
typedef struct {
|
||||
guint id;
|
||||
|
|
|
|||
|
|
@ -33,9 +33,7 @@
|
|||
#include "nm-default.h"
|
||||
#include "nm-platform.h"
|
||||
|
||||
#define debug(...) nm_log_dbg (LOGD_IP6, __VA_ARGS__)
|
||||
#define warning(...) nm_log_warn (LOGD_IP6, __VA_ARGS__)
|
||||
#define error(...) nm_log_err (LOGD_IP6, __VA_ARGS__)
|
||||
#define _NMLOG_PREFIX_NAME "rdisc-lndp"
|
||||
|
||||
typedef struct {
|
||||
struct ndp *ndp;
|
||||
|
|
@ -65,7 +63,7 @@ send_rs (NMRDisc *rdisc)
|
|||
error = ndp_msg_send (priv->ndp, msg);
|
||||
ndp_msg_destroy (msg);
|
||||
if (error) {
|
||||
error ("(%s): cannot send router solicitation: %d.", rdisc->ifname, error);
|
||||
_LOGE ("cannot send router solicitation: %d.", error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -109,7 +107,7 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
|
|||
* single time when the configuration is finished and updates can
|
||||
* come at any time.
|
||||
*/
|
||||
debug ("(%s): received router advertisement at %u", rdisc->ifname, now);
|
||||
_LOGD ("received router advertisement at %u", now);
|
||||
|
||||
/* DHCP level:
|
||||
*
|
||||
|
|
@ -260,7 +258,7 @@ receive_ra (struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
|
|||
* Kernel would set it, but would flush out all IPv6 addresses away
|
||||
* from the link, even the link-local, and we wouldn't be able to
|
||||
* listen for further RAs that could fix the MTU. */
|
||||
warning ("(%s): MTU too small for IPv6 ignored: %d", rdisc->ifname, mtu);
|
||||
_LOGW ("MTU too small for IPv6 ignored: %d", mtu);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -273,7 +271,7 @@ event_ready (GIOChannel *source, GIOCondition condition, NMRDisc *rdisc)
|
|||
{
|
||||
NMLNDPRDiscPrivate *priv = NM_LNDP_RDISC_GET_PRIVATE (rdisc);
|
||||
|
||||
debug ("(%s): processing libndp events.", rdisc->ifname);
|
||||
_LOGD ("processing libndp events");
|
||||
ndp_callall_eventfd_handler (priv->ndp);
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
|
@ -323,8 +321,8 @@ nm_lndp_rdisc_new (int ifindex, const char *ifname)
|
|||
priv = NM_LNDP_RDISC_GET_PRIVATE (rdisc);
|
||||
error = ndp_open (&priv->ndp);
|
||||
if (error != 0) {
|
||||
_LOGD ("error creating socket for NDP; errno=%d", -error);
|
||||
g_object_unref (rdisc);
|
||||
debug ("(%s): error creating socket for NDP; errno=%d", ifname, -error);
|
||||
return NULL;
|
||||
}
|
||||
return rdisc;
|
||||
|
|
|
|||
|
|
@ -33,4 +33,33 @@ gboolean nm_rdisc_add_route (NMRDisc *rdisc, const NMRDiscRoute *new);
|
|||
gboolean nm_rdisc_add_dns_server (NMRDisc *rdisc, const NMRDiscDNSServer *new);
|
||||
gboolean nm_rdisc_add_dns_domain (NMRDisc *rdisc, const NMRDiscDNSDomain *new);
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
||||
#define _NMLOG_DOMAIN LOGD_IP6
|
||||
#define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, rdisc, __VA_ARGS__)
|
||||
|
||||
#define _LOG(level, domain, self, ...) \
|
||||
G_STMT_START { \
|
||||
const NMLogLevel __level = (level); \
|
||||
const NMLogDomain __domain = (domain); \
|
||||
\
|
||||
if (nm_logging_enabled (__level, __domain)) { \
|
||||
char __prefix[64]; \
|
||||
const char *__p_prefix = _NMLOG_PREFIX_NAME; \
|
||||
const NMRDisc *const __self = (self); \
|
||||
\
|
||||
if (__self) { \
|
||||
g_snprintf (__prefix, sizeof (__prefix), "%s[%p,%s%s%s]", \
|
||||
_NMLOG_PREFIX_NAME, __self, \
|
||||
NM_PRINT_FMT_QUOTE_STRING (__self->ifname)); \
|
||||
__p_prefix = __prefix; \
|
||||
} \
|
||||
_nm_log (__level, __domain, 0, \
|
||||
"%s: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \
|
||||
__p_prefix _NM_UTILS_MACRO_REST (__VA_ARGS__)); \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
/*********************************************************************************************/
|
||||
|
||||
#endif /* __NETWORKMANAGER_RDISC_PRIVATE_H__ */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include "nm-default.h"
|
||||
#include "nm-utils.h"
|
||||
|
||||
#define debug(...) nm_log_dbg (LOGD_IP6, __VA_ARGS__)
|
||||
#define _NMLOG_PREFIX_NAME "rdisc"
|
||||
|
||||
typedef struct {
|
||||
int solicitations_left;
|
||||
|
|
@ -243,7 +243,7 @@ nm_rdisc_set_iid (NMRDisc *rdisc, const NMUtilsIPv6IfaceId iid)
|
|||
if (rdisc->iid.id != iid.id) {
|
||||
rdisc->iid = iid;
|
||||
if (rdisc->addresses->len) {
|
||||
debug ("(%s) IPv6 interface identifier changed, flushing addresses", rdisc->ifname);
|
||||
_LOGD ("IPv6 interface identifier changed, flushing addresses");
|
||||
g_array_remove_range (rdisc->addresses, 0, rdisc->addresses->len);
|
||||
g_signal_emit_by_name (rdisc, NM_RDISC_CONFIG_CHANGED, NM_RDISC_CONFIG_ADDRESSES);
|
||||
}
|
||||
|
|
@ -281,20 +281,20 @@ send_rs (NMRDisc *rdisc)
|
|||
NMRDiscClass *klass = NM_RDISC_GET_CLASS (rdisc);
|
||||
NMRDiscPrivate *priv = NM_RDISC_GET_PRIVATE (rdisc);
|
||||
|
||||
debug ("(%s): sending router solicitation", rdisc->ifname);
|
||||
_LOGD ("sending router solicitation");
|
||||
|
||||
if (klass->send_rs (rdisc))
|
||||
priv->solicitations_left--;
|
||||
|
||||
priv->last_rs = nm_utils_get_monotonic_timestamp_s ();
|
||||
if (priv->solicitations_left > 0) {
|
||||
debug ("(%s): scheduling router solicitation retry in %d seconds.",
|
||||
rdisc->ifname, rdisc->rtr_solicitation_interval);
|
||||
_LOGD ("scheduling router solicitation retry in %d seconds.",
|
||||
rdisc->rtr_solicitation_interval);
|
||||
priv->send_rs_id = g_timeout_add_seconds (rdisc->rtr_solicitation_interval,
|
||||
(GSourceFunc) send_rs, rdisc);
|
||||
} else {
|
||||
debug ("(%s): did not receive a router advertisement after %d solicitations.",
|
||||
rdisc->ifname, rdisc->rtr_solicitations);
|
||||
_LOGD ("did not receive a router advertisement after %d solicitations.",
|
||||
rdisc->rtr_solicitations);
|
||||
priv->send_rs_id = 0;
|
||||
}
|
||||
|
||||
|
|
@ -312,8 +312,8 @@ solicit (NMRDisc *rdisc)
|
|||
priv->solicitations_left = rdisc->rtr_solicitations;
|
||||
|
||||
next = CLAMP (priv->last_rs + rdisc->rtr_solicitation_interval - now, 0, G_MAXINT32);
|
||||
debug ("(%s): scheduling explicit router solicitation request in %" G_GINT64_FORMAT " seconds.",
|
||||
rdisc->ifname, next);
|
||||
_LOGD ("scheduling explicit router solicitation request in %" G_GINT64_FORMAT " seconds.",
|
||||
next);
|
||||
priv->send_rs_id = g_timeout_add_seconds ((guint32) next, (GSourceFunc) send_rs, rdisc);
|
||||
}
|
||||
}
|
||||
|
|
@ -337,12 +337,12 @@ nm_rdisc_start (NMRDisc *rdisc)
|
|||
|
||||
g_assert (klass->start);
|
||||
|
||||
debug ("(%s): starting router discovery: %d", rdisc->ifname, rdisc->ifindex);
|
||||
_LOGD ("starting router discovery: %d", rdisc->ifindex);
|
||||
|
||||
clear_ra_timeout (rdisc);
|
||||
ra_wait_secs = CLAMP (rdisc->rtr_solicitations * rdisc->rtr_solicitation_interval, 30, 120);
|
||||
priv->ra_timeout_id = g_timeout_add_seconds (ra_wait_secs, rdisc_ra_timeout_cb, rdisc);
|
||||
debug ("(%s): scheduling RA timeout in %d seconds", rdisc->ifname, ra_wait_secs);
|
||||
_LOGD ("scheduling RA timeout in %d seconds", ra_wait_secs);
|
||||
|
||||
if (klass->start)
|
||||
klass->start (rdisc);
|
||||
|
|
@ -394,27 +394,27 @@ config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed)
|
|||
char changedstr[CONFIG_MAP_MAX_STR];
|
||||
char addrstr[INET6_ADDRSTRLEN];
|
||||
|
||||
if (nm_logging_enabled (LOGL_DEBUG, LOGD_IP6)) {
|
||||
if (_LOGD_ENABLED ()) {
|
||||
config_map_to_string (changed, changedstr);
|
||||
debug ("(%s): router discovery configuration changed [%s]:", rdisc->ifname, changedstr);
|
||||
debug (" dhcp-level %s", dhcp_level_to_string (rdisc->dhcp_level));
|
||||
_LOGD ("router discovery configuration changed [%s]:", changedstr);
|
||||
_LOGD (" dhcp-level %s", dhcp_level_to_string (rdisc->dhcp_level));
|
||||
for (i = 0; i < rdisc->gateways->len; i++) {
|
||||
NMRDiscGateway *gateway = &g_array_index (rdisc->gateways, NMRDiscGateway, i);
|
||||
|
||||
inet_ntop (AF_INET6, &gateway->address, addrstr, sizeof (addrstr));
|
||||
debug (" gateway %s pref %d exp %u", addrstr, gateway->preference, expiry (gateway));
|
||||
_LOGD (" gateway %s pref %d exp %u", addrstr, gateway->preference, expiry (gateway));
|
||||
}
|
||||
for (i = 0; i < rdisc->addresses->len; i++) {
|
||||
NMRDiscAddress *address = &g_array_index (rdisc->addresses, NMRDiscAddress, i);
|
||||
|
||||
inet_ntop (AF_INET6, &address->address, addrstr, sizeof (addrstr));
|
||||
debug (" address %s exp %u", addrstr, expiry (address));
|
||||
_LOGD (" address %s exp %u", addrstr, expiry (address));
|
||||
}
|
||||
for (i = 0; i < rdisc->routes->len; i++) {
|
||||
NMRDiscRoute *route = &g_array_index (rdisc->routes, NMRDiscRoute, i);
|
||||
|
||||
inet_ntop (AF_INET6, &route->network, addrstr, sizeof (addrstr));
|
||||
debug (" route %s/%d via %s pref %d exp %u", addrstr, route->plen,
|
||||
_LOGD (" route %s/%d via %s pref %d exp %u", addrstr, route->plen,
|
||||
nm_utils_inet6_ntop (&route->gateway, NULL), route->preference,
|
||||
expiry (route));
|
||||
}
|
||||
|
|
@ -422,12 +422,12 @@ config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed)
|
|||
NMRDiscDNSServer *dns_server = &g_array_index (rdisc->dns_servers, NMRDiscDNSServer, i);
|
||||
|
||||
inet_ntop (AF_INET6, &dns_server->address, addrstr, sizeof (addrstr));
|
||||
debug (" dns_server %s exp %u", addrstr, expiry (dns_server));
|
||||
_LOGD (" dns_server %s exp %u", addrstr, expiry (dns_server));
|
||||
}
|
||||
for (i = 0; i < rdisc->dns_domains->len; i++) {
|
||||
NMRDiscDNSDomain *dns_domain = &g_array_index (rdisc->dns_domains, NMRDiscDNSDomain, i);
|
||||
|
||||
debug (" dns_domain %s exp %u", dns_domain->domain, expiry (dns_domain));
|
||||
_LOGD (" dns_domain %s exp %u", dns_domain->domain, expiry (dns_domain));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -564,8 +564,8 @@ check_timestamps (NMRDisc *rdisc, guint32 now, NMRDiscConfigMap changed)
|
|||
|
||||
if (nextevent != never) {
|
||||
g_return_if_fail (nextevent > now);
|
||||
debug ("(%s): scheduling next now/lifetime check: %u seconds",
|
||||
rdisc->ifname, nextevent - now);
|
||||
_LOGD ("scheduling next now/lifetime check: %u seconds",
|
||||
nextevent - now);
|
||||
priv->timeout_id = g_timeout_add_seconds (nextevent - now, timeout_cb, rdisc);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue