xref: /aosp_15_r20/external/libsrtp2/crypto/include/err.h (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
1*90e502c7SAndroid Build Coastguard Worker /*
2*90e502c7SAndroid Build Coastguard Worker  * err.h
3*90e502c7SAndroid Build Coastguard Worker  *
4*90e502c7SAndroid Build Coastguard Worker  * error status codes
5*90e502c7SAndroid Build Coastguard Worker  *
6*90e502c7SAndroid Build Coastguard Worker  * David A. McGrew
7*90e502c7SAndroid Build Coastguard Worker  * Cisco Systems, Inc.
8*90e502c7SAndroid Build Coastguard Worker  */
9*90e502c7SAndroid Build Coastguard Worker /*
10*90e502c7SAndroid Build Coastguard Worker  *
11*90e502c7SAndroid Build Coastguard Worker  * Copyright (c) 2001-2017, Cisco Systems, Inc.
12*90e502c7SAndroid Build Coastguard Worker  * All rights reserved.
13*90e502c7SAndroid Build Coastguard Worker  *
14*90e502c7SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
15*90e502c7SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
16*90e502c7SAndroid Build Coastguard Worker  * are met:
17*90e502c7SAndroid Build Coastguard Worker  *
18*90e502c7SAndroid Build Coastguard Worker  *   Redistributions of source code must retain the above copyright
19*90e502c7SAndroid Build Coastguard Worker  *   notice, this list of conditions and the following disclaimer.
20*90e502c7SAndroid Build Coastguard Worker  *
21*90e502c7SAndroid Build Coastguard Worker  *   Redistributions in binary form must reproduce the above
22*90e502c7SAndroid Build Coastguard Worker  *   copyright notice, this list of conditions and the following
23*90e502c7SAndroid Build Coastguard Worker  *   disclaimer in the documentation and/or other materials provided
24*90e502c7SAndroid Build Coastguard Worker  *   with the distribution.
25*90e502c7SAndroid Build Coastguard Worker  *
26*90e502c7SAndroid Build Coastguard Worker  *   Neither the name of the Cisco Systems, Inc. nor the names of its
27*90e502c7SAndroid Build Coastguard Worker  *   contributors may be used to endorse or promote products derived
28*90e502c7SAndroid Build Coastguard Worker  *   from this software without specific prior written permission.
29*90e502c7SAndroid Build Coastguard Worker  *
30*90e502c7SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31*90e502c7SAndroid Build Coastguard Worker  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32*90e502c7SAndroid Build Coastguard Worker  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
33*90e502c7SAndroid Build Coastguard Worker  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
34*90e502c7SAndroid Build Coastguard Worker  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
35*90e502c7SAndroid Build Coastguard Worker  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36*90e502c7SAndroid Build Coastguard Worker  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
37*90e502c7SAndroid Build Coastguard Worker  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*90e502c7SAndroid Build Coastguard Worker  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*90e502c7SAndroid Build Coastguard Worker  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40*90e502c7SAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
41*90e502c7SAndroid Build Coastguard Worker  * OF THE POSSIBILITY OF SUCH DAMAGE.
42*90e502c7SAndroid Build Coastguard Worker  *
43*90e502c7SAndroid Build Coastguard Worker  */
44*90e502c7SAndroid Build Coastguard Worker 
45*90e502c7SAndroid Build Coastguard Worker #ifndef ERR_H
46*90e502c7SAndroid Build Coastguard Worker #define ERR_H
47*90e502c7SAndroid Build Coastguard Worker 
48*90e502c7SAndroid Build Coastguard Worker #include <stdio.h>
49*90e502c7SAndroid Build Coastguard Worker #include <stdarg.h>
50*90e502c7SAndroid Build Coastguard Worker #include "srtp.h"
51*90e502c7SAndroid Build Coastguard Worker 
52*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus
53*90e502c7SAndroid Build Coastguard Worker extern "C" {
54*90e502c7SAndroid Build Coastguard Worker #endif
55*90e502c7SAndroid Build Coastguard Worker 
56*90e502c7SAndroid Build Coastguard Worker /**
57*90e502c7SAndroid Build Coastguard Worker  * @defgroup Error Error Codes
58*90e502c7SAndroid Build Coastguard Worker  *
59*90e502c7SAndroid Build Coastguard Worker  * Error status codes are represented by the enumeration srtp_err_status_t.
60*90e502c7SAndroid Build Coastguard Worker  *
61*90e502c7SAndroid Build Coastguard Worker  * @{
62*90e502c7SAndroid Build Coastguard Worker  */
63*90e502c7SAndroid Build Coastguard Worker 
64*90e502c7SAndroid Build Coastguard Worker /**
65*90e502c7SAndroid Build Coastguard Worker  * @}
66*90e502c7SAndroid Build Coastguard Worker  */
67*90e502c7SAndroid Build Coastguard Worker 
68*90e502c7SAndroid Build Coastguard Worker typedef enum {
69*90e502c7SAndroid Build Coastguard Worker     srtp_err_level_error,
70*90e502c7SAndroid Build Coastguard Worker     srtp_err_level_warning,
71*90e502c7SAndroid Build Coastguard Worker     srtp_err_level_info,
72*90e502c7SAndroid Build Coastguard Worker     srtp_err_level_debug
73*90e502c7SAndroid Build Coastguard Worker } srtp_err_reporting_level_t;
74*90e502c7SAndroid Build Coastguard Worker 
75*90e502c7SAndroid Build Coastguard Worker /*
76*90e502c7SAndroid Build Coastguard Worker  * err_reporting_init prepares the error system.  If
77*90e502c7SAndroid Build Coastguard Worker  * ERR_REPORTING_STDOUT is defined, it will log to stdout.
78*90e502c7SAndroid Build Coastguard Worker  *
79*90e502c7SAndroid Build Coastguard Worker  */
80*90e502c7SAndroid Build Coastguard Worker 
81*90e502c7SAndroid Build Coastguard Worker srtp_err_status_t srtp_err_reporting_init(void);
82*90e502c7SAndroid Build Coastguard Worker 
83*90e502c7SAndroid Build Coastguard Worker typedef void(srtp_err_report_handler_func_t)(srtp_err_reporting_level_t level,
84*90e502c7SAndroid Build Coastguard Worker                                              const char *msg);
85*90e502c7SAndroid Build Coastguard Worker 
86*90e502c7SAndroid Build Coastguard Worker srtp_err_status_t srtp_install_err_report_handler(
87*90e502c7SAndroid Build Coastguard Worker     srtp_err_report_handler_func_t func);
88*90e502c7SAndroid Build Coastguard Worker 
89*90e502c7SAndroid Build Coastguard Worker /*
90*90e502c7SAndroid Build Coastguard Worker  * srtp_err_report reports a 'printf' formatted error
91*90e502c7SAndroid Build Coastguard Worker  * string, followed by a an arg list.  The level argument
92*90e502c7SAndroid Build Coastguard Worker  * is one of srtp_err_reporting_level_t.
93*90e502c7SAndroid Build Coastguard Worker  *
94*90e502c7SAndroid Build Coastguard Worker  * Errors will be reported to stdout, if ERR_REPORTING_STDOUT
95*90e502c7SAndroid Build Coastguard Worker  * is defined.
96*90e502c7SAndroid Build Coastguard Worker  *
97*90e502c7SAndroid Build Coastguard Worker  */
98*90e502c7SAndroid Build Coastguard Worker 
99*90e502c7SAndroid Build Coastguard Worker void srtp_err_report(srtp_err_reporting_level_t level, const char *format, ...);
100*90e502c7SAndroid Build Coastguard Worker 
101*90e502c7SAndroid Build Coastguard Worker /*
102*90e502c7SAndroid Build Coastguard Worker  * debug_module_t defines a debug module
103*90e502c7SAndroid Build Coastguard Worker  */
104*90e502c7SAndroid Build Coastguard Worker 
105*90e502c7SAndroid Build Coastguard Worker typedef struct {
106*90e502c7SAndroid Build Coastguard Worker     int on;           /* 1 if debugging is on, 0 if it is off */
107*90e502c7SAndroid Build Coastguard Worker     const char *name; /* printable name for debug module      */
108*90e502c7SAndroid Build Coastguard Worker } srtp_debug_module_t;
109*90e502c7SAndroid Build Coastguard Worker 
110*90e502c7SAndroid Build Coastguard Worker #ifdef ENABLE_DEBUG_LOGGING
111*90e502c7SAndroid Build Coastguard Worker 
112*90e502c7SAndroid Build Coastguard Worker #define debug_print(mod, format, arg)                                          \
113*90e502c7SAndroid Build Coastguard Worker     srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, arg)
114*90e502c7SAndroid Build Coastguard Worker #define debug_print2(mod, format, arg1, arg2)                                  \
115*90e502c7SAndroid Build Coastguard Worker     srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name,      \
116*90e502c7SAndroid Build Coastguard Worker                     arg1, arg2)
117*90e502c7SAndroid Build Coastguard Worker 
118*90e502c7SAndroid Build Coastguard Worker #else
119*90e502c7SAndroid Build Coastguard Worker 
120*90e502c7SAndroid Build Coastguard Worker #define debug_print(mod, format, arg)                                          \
121*90e502c7SAndroid Build Coastguard Worker     if (mod.on)                                                                \
122*90e502c7SAndroid Build Coastguard Worker     srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name, arg)
123*90e502c7SAndroid Build Coastguard Worker #define debug_print2(mod, format, arg1, arg2)                                  \
124*90e502c7SAndroid Build Coastguard Worker     if (mod.on)                                                                \
125*90e502c7SAndroid Build Coastguard Worker     srtp_err_report(srtp_err_level_debug, ("%s: " format "\n"), mod.name,      \
126*90e502c7SAndroid Build Coastguard Worker                     arg1, arg2)
127*90e502c7SAndroid Build Coastguard Worker 
128*90e502c7SAndroid Build Coastguard Worker #endif
129*90e502c7SAndroid Build Coastguard Worker 
130*90e502c7SAndroid Build Coastguard Worker #ifdef __cplusplus
131*90e502c7SAndroid Build Coastguard Worker }
132*90e502c7SAndroid Build Coastguard Worker #endif
133*90e502c7SAndroid Build Coastguard Worker 
134*90e502c7SAndroid Build Coastguard Worker #endif /* ERR_H */
135