Branch data Line data Source code
1 : : /**
2 : : * \file server/fwknopd_errors.c
3 : : *
4 : : * \brief Error message functions for fwknopd
5 : : */
6 : :
7 : : /* Fwknop is developed primarily by the people listed in the file 'AUTHORS'.
8 : : * Copyright (C) 2009-2015 fwknop developers and contributors. For a full
9 : : * list of contributors, see the file 'CREDITS'.
10 : : *
11 : : * License (GNU General Public License):
12 : : *
13 : : * This program is free software; you can redistribute it and/or
14 : : * modify it under the terms of the GNU General Public License
15 : : * as published by the Free Software Foundation; either version 2
16 : : * of the License, or (at your option) any later version.
17 : : *
18 : : * This program is distributed in the hope that it will be useful,
19 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 : : * GNU General Public License for more details.
22 : : *
23 : : * You should have received a copy of the GNU General Public License
24 : : * along with this program; if not, write to the Free Software
25 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
26 : : * USA
27 : : *
28 : : *****************************************************************************
29 : : */
30 : : #include "fwknopd_common.h"
31 : : #include "fwknopd_errors.h"
32 : :
33 : : /* Return a string describing the meaning of the given error code.
34 : : */
35 : : static const char*
36 : 2673 : fwknopd_errstr(const int err_code)
37 : : {
38 [ + + + + : 2673 : switch (err_code)
+ + + + +
+ + + + +
+ + + - ]
39 : : {
40 : : case 0:
41 : : return("Success");
42 : :
43 : : case SPA_MSG_BAD_DATA:
44 : 2038 : return("Data is not a valid SPA message format");
45 : :
46 : : case SPA_MSG_LEN_TOO_SMALL:
47 : 1 : return("Not enough data to be a valid SPA message");
48 : :
49 : : case SPA_MSG_NOT_SPA_DATA:
50 : 620 : return("Data is not an SPA message");
51 : :
52 : : case SPA_MSG_HTTP_NOT_ENABLED:
53 : 1 : return("SPA via HTTP request, but ENABLE_SPA_OVER_HTTP is not set");
54 : :
55 : : case SPA_MSG_FKO_CTX_ERROR:
56 : 1 : return("Error creating FKO context for incoming data.");
57 : :
58 : : case SPA_MSG_DIGEST_ERROR:
59 : 1 : return("Unable to retrieve digest from the SPA data.");
60 : :
61 : : case SPA_MSG_DIGEST_CACHE_ERROR:
62 : 1 : return("Error trying to access the digest.cache file");
63 : :
64 : : case SPA_MSG_REPLAY:
65 : 1 : return("Detected SPA message replay");
66 : :
67 : : case SPA_MSG_TOO_OLD:
68 : 1 : return("SPA message timestamp is outside the allowable window");
69 : :
70 : : case SPA_MSG_ACCESS_DENIED:
71 : 1 : return("SPA message did not pass access checks");
72 : :
73 : : case SPA_MSG_COMMAND_ERROR:
74 : 1 : return("An error occurred while executing an SPA command message");
75 : :
76 : : case SPA_MSG_NOT_SUPPORTED:
77 : 1 : return("Unsupported SPA message operation");
78 : :
79 : : case SPA_MSG_ERROR:
80 : 1 : return("General SPA message processing error");
81 : :
82 : : case FW_RULE_ADD_ERROR:
83 : 1 : return("An error occurred while tring to add a firewall rule");
84 : :
85 : : case FW_RULE_DELETE_ERROR:
86 : 1 : return("An error occurred while tring to delete a firewall rule");
87 : :
88 : : case FW_RULE_UNKNOWN_ERROR:
89 : 1 : return("Unknown/unclassified firewall rule processing error");
90 : : }
91 : :
92 : 1 : return("Undefined/unknown fwknopd Error");
93 : : }
94 : :
95 : : /* Attempt to determine the error code type and send the appropriate
96 : : * response. Basically assume it is a libfko error if it is not an fwknopd
97 : : * error code.
98 : : */
99 : : const char*
100 : 2656 : get_errstr(const int err_code)
101 : : {
102 [ - + ]: 2656 : if(! IS_FWKNOPD_ERROR(err_code))
103 : 0 : return(fko_errstr(err_code));
104 : :
105 : 2656 : return(fwknopd_errstr(err_code));
106 : : }
107 : :
108 : : /* print all server errors (from server/fwknopd_errors.c) to stdout
109 : : */
110 : : void
111 : 1 : dump_server_errors(void)
112 : : {
113 : : int i;
114 [ + + ]: 15 : for (i=SPA_MSG_BAD_DATA; i<=SPA_MSG_ERROR; i++)
115 : : {
116 : 14 : fprintf(stdout, "err code: %d, err string: '%s'\n",
117 : : i, fwknopd_errstr(i));
118 : : }
119 [ + + ]: 4 : for (i=FW_RULE_ADD_ERROR; i<=FW_RULE_UNKNOWN_ERROR; i++)
120 : : {
121 : 3 : fprintf(stdout, "err code: %d, err string: '%s'\n",
122 : : i, fwknopd_errstr(i));
123 : : }
124 : 1 : fflush(stdout);
125 : 1 : return;
126 : : }
127 : :
128 : : /***EOF***/
|