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