xref: /freebsd/sys/netlink/netlink_debug.h (revision 7e5bf68495cc0a8c9793a338a8a02009a7f6dbb6)
1*7e5bf684SAlexander V. Chernikov /*-
2*7e5bf684SAlexander V. Chernikov  * Copyright (c) 2022 Alexander V. Chernikov <melifaro@FreeBSD.org>
3*7e5bf684SAlexander V. Chernikov  *
4*7e5bf684SAlexander V. Chernikov  * Redistribution and use in source and binary forms, with or without
5*7e5bf684SAlexander V. Chernikov  * modification, are permitted provided that the following conditions
6*7e5bf684SAlexander V. Chernikov  * are met:
7*7e5bf684SAlexander V. Chernikov  * 1. Redistributions of source code must retain the above copyright
8*7e5bf684SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer.
9*7e5bf684SAlexander V. Chernikov  * 2. Redistributions in binary form must reproduce the above copyright
10*7e5bf684SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer in the
11*7e5bf684SAlexander V. Chernikov  *    documentation and/or other materials provided with the distribution.
12*7e5bf684SAlexander V. Chernikov  * 3. Neither the name of the University nor the names of its contributors
13*7e5bf684SAlexander V. Chernikov  *    may be used to endorse or promote products derived from this software
14*7e5bf684SAlexander V. Chernikov  *    without specific prior written permission.
15*7e5bf684SAlexander V. Chernikov  *
16*7e5bf684SAlexander V. Chernikov  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17*7e5bf684SAlexander V. Chernikov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*7e5bf684SAlexander V. Chernikov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*7e5bf684SAlexander V. Chernikov  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20*7e5bf684SAlexander V. Chernikov  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*7e5bf684SAlexander V. Chernikov  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*7e5bf684SAlexander V. Chernikov  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*7e5bf684SAlexander V. Chernikov  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*7e5bf684SAlexander V. Chernikov  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*7e5bf684SAlexander V. Chernikov  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*7e5bf684SAlexander V. Chernikov  * SUCH DAMAGE.
27*7e5bf684SAlexander V. Chernikov  *
28*7e5bf684SAlexander V. Chernikov  * $FreeBSD$
29*7e5bf684SAlexander V. Chernikov  */
30*7e5bf684SAlexander V. Chernikov 
31*7e5bf684SAlexander V. Chernikov #ifndef _NETLINK_NETLINK_DEBUG_H_
32*7e5bf684SAlexander V. Chernikov #define	_NETLINK_NETLINK_DEBUG_H_
33*7e5bf684SAlexander V. Chernikov 
34*7e5bf684SAlexander V. Chernikov #define	_DEBUG_SYSCTL_OID	_net_netlink_debug
35*7e5bf684SAlexander V. Chernikov #include <net/route/route_debug.h>
36*7e5bf684SAlexander V. Chernikov 
37*7e5bf684SAlexander V. Chernikov SYSCTL_DECL(_net_netlink_debug);
38*7e5bf684SAlexander V. Chernikov 
39*7e5bf684SAlexander V. Chernikov /*
40*7e5bf684SAlexander V. Chernikov  * Generic debug
41*7e5bf684SAlexander V. Chernikov  * [nl_domain] func_name: debug text
42*7e5bf684SAlexander V. Chernikov  */
43*7e5bf684SAlexander V. Chernikov #define	NL_LOG	RT_LOG
44*7e5bf684SAlexander V. Chernikov 
45*7e5bf684SAlexander V. Chernikov /*
46*7e5bf684SAlexander V. Chernikov  * Logging for events specific for particular process
47*7e5bf684SAlexander V. Chernikov  * Example: [nl_domain] PID 4834 fdump_sa: unsupported family: 45
48*7e5bf684SAlexander V. Chernikov  */
49*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG(_l, _pid, _fmt, ...)	NL_RAW_PID_LOG_##_l(_l, _pid, _fmt, ## __VA_ARGS__)
50*7e5bf684SAlexander V. Chernikov #define	_NL_RAW_PID_LOG(_l, _pid, _fmt, ...)	if (_DEBUG_PASS_MSG(_l)) {	\
51*7e5bf684SAlexander V. Chernikov 	_output("[" DEBUG_PREFIX_NAME "] PID %u %s: " _fmt "\n", _pid, __func__, ##__VA_ARGS__); \
52*7e5bf684SAlexander V. Chernikov }
53*7e5bf684SAlexander V. Chernikov 
54*7e5bf684SAlexander V. Chernikov #define	NLP_LOG(_l, _nlp, _fmt, ...)	NL_RAW_PID_LOG_##_l(_l, nlp_get_pid(_nlp), _fmt, ## __VA_ARGS__)
55*7e5bf684SAlexander V. Chernikov 
56*7e5bf684SAlexander V. Chernikov #if DEBUG_MAX_LEVEL>=LOG_DEBUG3
57*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG3	_NL_RAW_PID_LOG
58*7e5bf684SAlexander V. Chernikov #else
59*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG3(_l, _pid, _fmt, ...)
60*7e5bf684SAlexander V. Chernikov #endif
61*7e5bf684SAlexander V. Chernikov #if DEBUG_MAX_LEVEL>=LOG_DEBUG2
62*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG2	_NL_RAW_PID_LOG
63*7e5bf684SAlexander V. Chernikov #else
64*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG2(_l, _pid, _fmt, ...)
65*7e5bf684SAlexander V. Chernikov #endif
66*7e5bf684SAlexander V. Chernikov #if DEBUG_MAX_LEVEL>=LOG_DEBUG
67*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG	_NL_RAW_PID_LOG
68*7e5bf684SAlexander V. Chernikov #else
69*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_DEBUG(_l, _pid, _fmt, ...)
70*7e5bf684SAlexander V. Chernikov #endif
71*7e5bf684SAlexander V. Chernikov #if DEBUG_MAX_LEVEL>=LOG_INFO
72*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_INFO	_NL_RAW_PID_LOG
73*7e5bf684SAlexander V. Chernikov #else
74*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_INFO(_l, _pid, _fmt, ...)
75*7e5bf684SAlexander V. Chernikov #endif
76*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_NOTICE	_NL_RAW_PID_LOG
77*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_ERR         _NL_RAW_PID_LOG
78*7e5bf684SAlexander V. Chernikov #define	NL_RAW_PID_LOG_LOG_WARNING	_NL_RAW_PID_LOG
79*7e5bf684SAlexander V. Chernikov 
80*7e5bf684SAlexander V. Chernikov 
81*7e5bf684SAlexander V. Chernikov 
82*7e5bf684SAlexander V. Chernikov #endif
83