Coverage Report

Created: 2026-08-13 07:19

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/strongswan/src/libstrongswan/utils/debug.c
Line
Count
Source
1
/*
2
 * Copyright (C) 2006 Martin Willi
3
 *
4
 * Copyright (C) secunet Security Networks AG
5
 *
6
 * This program is free software; you can redistribute it and/or modify it
7
 * under the terms of the GNU General Public License as published by the
8
 * Free Software Foundation; either version 2 of the License, or (at your
9
 * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
10
 *
11
 * This program is distributed in the hope that it will be useful, but
12
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14
 * for more details.
15
 */
16
17
#include <stdarg.h>
18
19
#include "debug.h"
20
21
ENUM(debug_names, DBG_DMN, DBG_ANY,
22
  "DMN",
23
  "MGR",
24
  "IKE",
25
  "CHD",
26
  "JOB",
27
  "WCH",
28
  "CFG",
29
  "KNL",
30
  "NET",
31
  "ASN",
32
  "ENC",
33
  "TNC",
34
  "IMC",
35
  "IMV",
36
  "PTS",
37
  "TLS",
38
  "APP",
39
  "ESP",
40
  "LIB",
41
  "ANY",
42
);
43
44
ENUM(debug_lower_names, DBG_DMN, DBG_ANY,
45
  "dmn",
46
  "mgr",
47
  "ike",
48
  "chd",
49
  "job",
50
  "wch",
51
  "cfg",
52
  "knl",
53
  "net",
54
  "asn",
55
  "enc",
56
  "tnc",
57
  "imc",
58
  "imv",
59
  "pts",
60
  "tls",
61
  "app",
62
  "esp",
63
  "lib",
64
  "any",
65
);
66
67
/**
68
 * level logged by the default logger for specific groups, to simplify things
69
 * we store level-1, so initialization to 0 is like setting it to 1
70
 */
71
static level_t default_level[DBG_MAX];
72
73
/**
74
 * stream logged to by the default logger
75
 */
76
static FILE *default_stream = NULL;
77
78
/**
79
 * default dbg function which printf all to stderr
80
 */
81
void dbg_default(debug_t group, level_t level, char *fmt, ...)
82
0
{
83
0
  if (!default_stream)
84
0
  {
85
0
    default_stream = stderr;
86
0
  }
87
  /* levels are stored as level-1 */
88
0
  if (level <= default_level[group]+1)
89
0
  {
90
0
    va_list args;
91
92
0
    va_start(args, fmt);
93
0
    vfprintf(default_stream, fmt, args);
94
0
    fprintf(default_stream, "\n");
95
0
    va_end(args);
96
0
  }
97
0
}
98
99
/*
100
 * Described in header
101
 */
102
void dbg_default_set_level_group(debug_t group, level_t level)
103
2
{
104
2
  if (group < DBG_ANY)
105
0
  {
106
0
    default_level[group] = level-1;
107
0
  }
108
2
  else
109
2
  {
110
40
    for (group = 0; group < DBG_MAX; group++)
111
38
    {
112
38
      default_level[group] = level-1;
113
38
    }
114
2
  }
115
2
}
116
117
/*
118
 * Described in header
119
 */
120
level_t dbg_default_get_level_group(debug_t group)
121
0
{
122
0
  if (group < DBG_ANY)
123
0
  {
124
0
    return default_level[group] + 1;
125
0
  }
126
0
  return default_level[0];
127
0
}
128
129
/*
130
 * Described in header
131
 */
132
void dbg_default_set_level(level_t level)
133
2
{
134
2
  dbg_default_set_level_group(DBG_ANY, level);
135
2
}
136
137
/*
138
 * Described in header
139
 */
140
void dbg_default_set_stream(FILE *stream)
141
0
{
142
0
  default_stream = stream;
143
0
}
144
145
/**
146
 * The registered debug hook.
147
 */
148
void (*dbg) (debug_t group, level_t level, char *fmt, ...) = dbg_default;