diff options
author | Thomas Haller <thaller@redhat.com> | 2016-09-19 15:35:30 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-09-19 15:35:33 +0200 |
commit | 1206fd066b3692d796dabb3418bf5747b37de62e (patch) | |
tree | bb75ce2907d55c40c2dae8281b257b1eb696e10e | |
parent | cdedd2b53e08acebb8abf21cf2a2d84ab440aaa0 (diff) | |
download | NetworkManager-1206fd066b3692d796dabb3418bf5747b37de62e.tar.gz |
shared: add nm_utils_syslog_coerce_from_nm() util
When a VPN plugin logs to syslog(), it should not use the syslog
levels that were passed in by NetworkManager directly. Instead,
it must map LOG_NOTICE to LOG_INFO and LOG_INFO to LOG_DEBUG.
Add a utility function does gets that right.
-rw-r--r-- | shared/nm-utils/nm-vpn-plugin-macros.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/shared/nm-utils/nm-vpn-plugin-macros.h b/shared/nm-utils/nm-vpn-plugin-macros.h index 06f5b28663..acc549f2f3 100644 --- a/shared/nm-utils/nm-vpn-plugin-macros.h +++ b/shared/nm-utils/nm-vpn-plugin-macros.h @@ -24,6 +24,38 @@ #include <syslog.h> +static inline int +nm_utils_syslog_coerce_from_nm (int syslog_level) +{ + /* NetworkManager uses internally NMLogLevel levels. When spawning + * the VPN plugin, it maps those levels to syslog levels as follows: + * + * LOGL_INFO = LOG_NOTICE, + * LOGL_DEBUG = LOG_INFO, + * LOGL_TRACE = LOG_DEBUG, + * + * However, when actually printing to syslog, we don't want to print messages + * with LOGL_INFO level as LOG_NOTICE, because they are *not* to be highlighted. + * + * In other words: NetworkManager has 3 levels that should not require highlighting: + * LOGL_INFO, LOGL_DEBUG, LOGL_TRACE. syslog on the other hand has only LOG_INFO and LOG_DEBUG. + * + * So, coerce those values before printing to syslog. When you receive the syslog_level + * from NetworkManager, instead of calling + * syslog(syslog_level, ...) + * you should call + * syslog(nm_utils_syslog_coerce_from_nm(syslog_level), ...) + */ + switch (syslog_level) { + case LOG_INFO: + return LOG_DEBUG; + case LOG_NOTICE: + return LOG_INFO; + default: + return syslog_level; + } +} + static inline const char * nm_utils_syslog_to_str (int syslog_level) { |