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