summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmsagent/common/debug.h
blob: c611bceff86df7ffa93b440c2b386d532d58a2ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 */


#ifndef DEBUG_H
#define DEBUG_H

/************************** START OF MODULE PROLOGUE ***************************
*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*
*-------------------------------------------------------------------------------
*
*  FUNCTION NAME:  di_debug
*
*  FUNCTION TITLE:  Display debug information
*
*  TASK/PROCESS NAME: Encryption
*
*  MODULE DESCRIPTION: Define globals and prototypes for displaying debug 
*                      information.
*
* HISTORY:
* -------
* 05/13/10  JHD  xxxxxxx  Added Prologue and prototype for log_cond_printf().
*                
***************************** END OF MODULE PROLOGUE **************************/

#ifdef DEBUG
#warn "DEBUG is on"
#endif

#ifdef DEBUG
#define START_STACK_CHECK                       \
   volatile unsigned long check1 = 0xDEADBABE;  \
   volatile unsigned long check2 = 0xFEEDF00D; 
   
#define END_STACK_CHECK                                                  \
{                                                                        \
   if (check1 != 0xDEADBABE)                                             \
      log_printf("stack check 1 failed at %s %c\n", __FILE__, __LINE__); \
   if (check2 != 0xFEEDF00D)                                             \
      log_printf("stack check 2 failed at %s %c\n", __FILE__, __LINE__); \
}
#else
#define START_STACK_CHECK
#define END_STACK_CHECK
#endif


#ifdef __cplusplus
extern "C"
{
#endif
   
#define OUTMSG_SIZE 256


/*-------------------------------------------------------------------
 * Use the following to define whether memory is actually
 * going to be allocated for these definitions.
 *------------------------------------------------------------------*/
#undef EXTERNAL

#ifdef ALLOCATE_ECPT_TRACE             /* This set means we are allocating   */
   #define EXTERNAL
#else
   #define EXTERNAL extern
#endif

#define ECPT_MAX_TRACE           2048
#define ECPT_TRACE_CHAR          111

typedef struct
{
   int         task;                         /* which thread         */
   int         tod;                          /* Time of Day Stamp    */
   int         function;                     /* Function name        */
   int         len;                          /* num chars in buffer  */
   char        buf[ ECPT_TRACE_CHAR + 1 ];   /* trace message buffer */

}  ECPT_TRACE_ENTRY;


typedef struct
{
   int                  index;                     /* Index to next entry */

   int                  tx_wait;
   int                  tx_ds_main;
   int                  tx_rsv1;                   /* unused */
   int                  tx_rsv2;                   /* unused */
   int                  tx_rsv3;                   /* unused */
   int                  tx_rsv4;                   /* unused */
   int                  tx_rsv5;                   /* unused */

   ECPT_TRACE_ENTRY     entry[ ECPT_MAX_TRACE ];   /* Telnet trace entries */

} ECPT_TRACE_STRUCT;


EXTERNAL ECPT_TRACE_STRUCT   Ecpt_trace_table;

/*--------------------------------------------------------------------------
 * Define ECPT KMS Agent communications to include in log to telnet clients.
 *-------------------------------------------------------------------------*/
EXTERNAL int                 Ecpt_log_to_telnet;

#define ECPT_LOG_SSL_CB          0x0001
#define ECPT_LOG_TCP_CONNECT     0x0002
#define ECPT_LOG_TCP_DISCONNECT  0x0004
#define ECPT_LOG_TCP_SHUTDOWN    0x0008
#define ECPT_LOG_TCP_SEND        0x0010
#define ECPT_LOG_TCP_FRECV       0x0020
#define ECPT_LOG_TCP_CLOSE       0x0040
#define ECPT_LOG_SSL_CLIENT      0x0080
#define ECPT_LOG_AGENT           0x0100


extern char outmsg[OUTMSG_SIZE];

void serial_debug_msg(char*, int);
int  log_fprintf(FILE *, const char *, ...);
int  log_sprintf(char*, const char *, ...);
int  log_printf(const char *, ...);
int  log_error_printf(const char *, ...);
void log_cond_printf(int, const char *, ...);

ECPT_TRACE_ENTRY    *ecpt_trace( int     function,
                                 char   *func );

#define ECPT_TRACE( trace, func )  trace = ecpt_trace( (int)func, #func );
   
#ifdef __cplusplus
}
#endif

   
#endif