xref: /f-stack/freebsd/netipsec/key_debug.h (revision 22ce4aff)
1a9643ea8Slogwang /*	$FreeBSD$	*/
2a9643ea8Slogwang /*	$KAME: key_debug.h,v 1.10 2001/08/05 08:37:52 itojun Exp $	*/
3a9643ea8Slogwang 
4a9643ea8Slogwang /*-
5*22ce4affSfengbojiang  * SPDX-License-Identifier: BSD-3-Clause
6*22ce4affSfengbojiang  *
7a9643ea8Slogwang  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
8a9643ea8Slogwang  * All rights reserved.
9a9643ea8Slogwang  *
10a9643ea8Slogwang  * Redistribution and use in source and binary forms, with or without
11a9643ea8Slogwang  * modification, are permitted provided that the following conditions
12a9643ea8Slogwang  * are met:
13a9643ea8Slogwang  * 1. Redistributions of source code must retain the above copyright
14a9643ea8Slogwang  *    notice, this list of conditions and the following disclaimer.
15a9643ea8Slogwang  * 2. Redistributions in binary form must reproduce the above copyright
16a9643ea8Slogwang  *    notice, this list of conditions and the following disclaimer in the
17a9643ea8Slogwang  *    documentation and/or other materials provided with the distribution.
18a9643ea8Slogwang  * 3. Neither the name of the project nor the names of its contributors
19a9643ea8Slogwang  *    may be used to endorse or promote products derived from this software
20a9643ea8Slogwang  *    without specific prior written permission.
21a9643ea8Slogwang  *
22a9643ea8Slogwang  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
23a9643ea8Slogwang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24a9643ea8Slogwang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25a9643ea8Slogwang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
26a9643ea8Slogwang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27a9643ea8Slogwang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28a9643ea8Slogwang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29a9643ea8Slogwang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30a9643ea8Slogwang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31a9643ea8Slogwang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32a9643ea8Slogwang  * SUCH DAMAGE.
33a9643ea8Slogwang  */
34a9643ea8Slogwang 
35a9643ea8Slogwang #ifndef _NETIPSEC_KEY_DEBUG_H_
36a9643ea8Slogwang #define _NETIPSEC_KEY_DEBUG_H_
37a9643ea8Slogwang 
38a9643ea8Slogwang #ifdef _KERNEL
39a9643ea8Slogwang /* debug flags */
40a9643ea8Slogwang #define KEYDEBUG_STAMP		0x00000001 /* path */
41a9643ea8Slogwang #define KEYDEBUG_DATA		0x00000002 /* data */
42a9643ea8Slogwang #define KEYDEBUG_DUMP		0x00000004 /* dump */
43a9643ea8Slogwang 
44a9643ea8Slogwang #define KEYDEBUG_KEY		0x00000010 /* key processing */
45a9643ea8Slogwang #define KEYDEBUG_ALG		0x00000020 /* ciph & auth algorithm */
46a9643ea8Slogwang #define KEYDEBUG_IPSEC		0x00000040 /* ipsec processing */
47a9643ea8Slogwang 
48a9643ea8Slogwang #define KEYDEBUG_KEY_STAMP	(KEYDEBUG_KEY | KEYDEBUG_STAMP)
49a9643ea8Slogwang #define KEYDEBUG_KEY_DATA	(KEYDEBUG_KEY | KEYDEBUG_DATA)
50a9643ea8Slogwang #define KEYDEBUG_KEY_DUMP	(KEYDEBUG_KEY | KEYDEBUG_DUMP)
51a9643ea8Slogwang #define KEYDEBUG_ALG_STAMP	(KEYDEBUG_ALG | KEYDEBUG_STAMP)
52a9643ea8Slogwang #define KEYDEBUG_ALG_DATA	(KEYDEBUG_ALG | KEYDEBUG_DATA)
53a9643ea8Slogwang #define KEYDEBUG_ALG_DUMP	(KEYDEBUG_ALG | KEYDEBUG_DUMP)
54a9643ea8Slogwang #define KEYDEBUG_IPSEC_STAMP	(KEYDEBUG_IPSEC | KEYDEBUG_STAMP)
55a9643ea8Slogwang #define KEYDEBUG_IPSEC_DATA	(KEYDEBUG_IPSEC | KEYDEBUG_DATA)
56a9643ea8Slogwang #define KEYDEBUG_IPSEC_DUMP	(KEYDEBUG_IPSEC | KEYDEBUG_DUMP)
57a9643ea8Slogwang 
58*22ce4affSfengbojiang #ifdef IPSEC_DEBUG
59*22ce4affSfengbojiang #define KEYDBG(lev, arg)	\
60*22ce4affSfengbojiang     if ((V_key_debug_level & (KEYDEBUG_ ## lev)) == (KEYDEBUG_ ## lev)) { \
61*22ce4affSfengbojiang 	    arg;		\
62*22ce4affSfengbojiang     }
63*22ce4affSfengbojiang #else
64*22ce4affSfengbojiang #define	KEYDBG(lev, arg)
65*22ce4affSfengbojiang #endif /* !IPSEC_DEBUG */
66a9643ea8Slogwang 
67*22ce4affSfengbojiang VNET_DECLARE(uint32_t, key_debug_level);
68a9643ea8Slogwang #define	V_key_debug_level	VNET(key_debug_level)
69a9643ea8Slogwang #endif /*_KERNEL*/
70a9643ea8Slogwang 
71a9643ea8Slogwang struct sadb_msg;
72a9643ea8Slogwang struct sadb_ext;
73a9643ea8Slogwang extern void kdebug_sadb(struct sadb_msg *);
74a9643ea8Slogwang extern void kdebug_sadb_x_policy(struct sadb_ext *);
75a9643ea8Slogwang 
76a9643ea8Slogwang #ifdef _KERNEL
77a9643ea8Slogwang struct secpolicy;
78a9643ea8Slogwang struct secpolicyindex;
79a9643ea8Slogwang struct secasindex;
80*22ce4affSfengbojiang struct secashead;
81a9643ea8Slogwang struct secasvar;
82a9643ea8Slogwang struct secreplay;
83a9643ea8Slogwang struct mbuf;
84*22ce4affSfengbojiang union sockaddr_union;
85*22ce4affSfengbojiang const char* kdebug_secpolicy_state(u_int);
86*22ce4affSfengbojiang const char* kdebug_secpolicy_policy(u_int);
87*22ce4affSfengbojiang const char* kdebug_secpolicyindex_dir(u_int);
88*22ce4affSfengbojiang const char* kdebug_ipsecrequest_level(u_int);
89*22ce4affSfengbojiang const char* kdebug_secasindex_mode(u_int);
90*22ce4affSfengbojiang const char* kdebug_secasv_state(u_int);
91*22ce4affSfengbojiang void kdebug_secpolicy(struct secpolicy *);
92*22ce4affSfengbojiang void kdebug_secpolicyindex(struct secpolicyindex *, const char *);
93*22ce4affSfengbojiang void kdebug_secasindex(const struct secasindex *, const char *);
94*22ce4affSfengbojiang void kdebug_secash(struct secashead *, const char *);
95*22ce4affSfengbojiang void kdebug_secasv(struct secasvar *);
96*22ce4affSfengbojiang void kdebug_mbufhdr(const struct mbuf *);
97*22ce4affSfengbojiang void kdebug_mbuf(const struct mbuf *);
98*22ce4affSfengbojiang char *ipsec_address(const union sockaddr_union *, char *, socklen_t);
99*22ce4affSfengbojiang char *ipsec_sa2str(struct secasvar *, char *, size_t);
100a9643ea8Slogwang #endif /*_KERNEL*/
101a9643ea8Slogwang 
102a9643ea8Slogwang struct sockaddr;
103a9643ea8Slogwang extern void kdebug_sockaddr(struct sockaddr *);
104a9643ea8Slogwang 
105a9643ea8Slogwang extern void ipsec_hexdump(caddr_t, int);
106a9643ea8Slogwang extern void ipsec_bindump(caddr_t, int);
107a9643ea8Slogwang 
108a9643ea8Slogwang #endif /* _NETIPSEC_KEY_DEBUG_H_ */
109