Line data Source code
1 : /*
2 : * Copyright (c) 2021 Cisco and/or its affiliates.
3 : * Licensed under the Apache License, Version 2.0 (the "License");
4 : * you may not use this file except in compliance with the License.
5 : * You may obtain a copy of the License at:
6 : *
7 : * http://www.apache.org/licenses/LICENSE-2.0
8 : *
9 : * Unless required by applicable law or agreed to in writing, software
10 : * distributed under the License is distributed on an "AS IS" BASIS,
11 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : * See the License for the specific language governing permissions and
13 : * limitations under the License.
14 : */
15 :
16 : #include <quic/quic.h>
17 :
18 : #include <quicly.h>
19 : #include <quicly/constants.h>
20 :
21 : u8 *
22 0 : quic_format_err (u8 * s, va_list * args)
23 : {
24 0 : u64 code = va_arg (*args, u64);
25 0 : switch (code)
26 : {
27 0 : case 0:
28 0 : s = format (s, "no error");
29 0 : break;
30 : /* app errors */
31 0 : case QUIC_ERROR_FULL_FIFO:
32 0 : s = format (s, "full fifo");
33 0 : break;
34 0 : case QUIC_APP_ERROR_CLOSE_NOTIFY:
35 0 : s = format (s, "QUIC_APP_ERROR_CLOSE_NOTIFY");
36 0 : break;
37 0 : case QUIC_APP_ALLOCATION_ERROR:
38 0 : s = format (s, "QUIC_APP_ALLOCATION_ERROR");
39 0 : break;
40 0 : case QUIC_APP_ACCEPT_NOTIFY_ERROR:
41 0 : s = format (s, "QUIC_APP_ACCEPT_NOTIFY_ERROR");
42 0 : break;
43 0 : case QUIC_APP_CONNECT_NOTIFY_ERROR:
44 0 : s = format (s, "QUIC_APP_CONNECT_NOTIFY_ERROR");
45 0 : break;
46 : /* quicly errors */
47 0 : case QUICLY_ERROR_PACKET_IGNORED:
48 0 : s = format (s, "QUICLY_ERROR_PACKET_IGNORED");
49 0 : break;
50 0 : case QUICLY_ERROR_SENDBUF_FULL:
51 0 : s = format (s, "QUICLY_ERROR_SENDBUF_FULL");
52 0 : break;
53 0 : case QUICLY_ERROR_FREE_CONNECTION:
54 0 : s = format (s, "QUICLY_ERROR_FREE_CONNECTION");
55 0 : break;
56 0 : case QUICLY_ERROR_RECEIVED_STATELESS_RESET:
57 0 : s = format (s, "QUICLY_ERROR_RECEIVED_STATELESS_RESET");
58 0 : break;
59 0 : case QUICLY_TRANSPORT_ERROR_NONE:
60 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_NONE");
61 0 : break;
62 0 : case QUICLY_TRANSPORT_ERROR_INTERNAL:
63 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_INTERNAL");
64 0 : break;
65 0 : case QUICLY_TRANSPORT_ERROR_CONNECTION_REFUSED:
66 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_CONNECTION_REFUSED");
67 0 : break;
68 0 : case QUICLY_TRANSPORT_ERROR_FLOW_CONTROL:
69 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_FLOW_CONTROL");
70 0 : break;
71 0 : case QUICLY_TRANSPORT_ERROR_STREAM_LIMIT:
72 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_STREAM_LIMIT");
73 0 : break;
74 0 : case QUICLY_TRANSPORT_ERROR_STREAM_STATE:
75 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_STREAM_STATE");
76 0 : break;
77 0 : case QUICLY_TRANSPORT_ERROR_FINAL_SIZE:
78 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_FINAL_SIZE");
79 0 : break;
80 0 : case QUICLY_TRANSPORT_ERROR_FRAME_ENCODING:
81 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_FRAME_ENCODING");
82 0 : break;
83 0 : case QUICLY_TRANSPORT_ERROR_TRANSPORT_PARAMETER:
84 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_TRANSPORT_PARAMETER");
85 0 : break;
86 0 : case QUICLY_ERROR_NO_COMPATIBLE_VERSION:
87 0 : s = format (s, "QUICLY_ERROR_NO_COMPATIBLE_VERSION");
88 0 : break;
89 0 : case QUICLY_TRANSPORT_ERROR_PROTOCOL_VIOLATION:
90 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_PROTOCOL_VIOLATION");
91 0 : break;
92 0 : case QUICLY_TRANSPORT_ERROR_CRYPTO_BUFFER_EXCEEDED:
93 0 : s = format (s, "QUICLY_TRANSPORT_ERROR_CRYPTO_BUFFER_EXCEEDED");
94 0 : break;
95 : /* picotls errors */
96 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_CLOSE_NOTIFY):
97 : s =
98 0 : format (s, "PTLS_ALERT_CLOSE_NOTIFY");
99 0 : break;
100 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_UNEXPECTED_MESSAGE):
101 : s =
102 0 : format (s, "PTLS_ALERT_UNEXPECTED_MESSAGE");
103 0 : break;
104 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_BAD_RECORD_MAC):
105 : s =
106 0 : format (s, "PTLS_ALERT_BAD_RECORD_MAC");
107 0 : break;
108 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_HANDSHAKE_FAILURE):
109 : s =
110 0 : format (s, "PTLS_ALERT_HANDSHAKE_FAILURE");
111 0 : break;
112 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_BAD_CERTIFICATE):
113 : s =
114 0 : format (s, "PTLS_ALERT_BAD_CERTIFICATE");
115 0 : break;
116 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_CERTIFICATE_REVOKED):
117 : s =
118 0 : format (s, "PTLS_ALERT_CERTIFICATE_REVOKED");
119 0 : break;
120 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_CERTIFICATE_EXPIRED):
121 : s =
122 0 : format (s, "PTLS_ALERT_CERTIFICATE_EXPIRED");
123 0 : break;
124 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_CERTIFICATE_UNKNOWN):
125 : s =
126 0 : format (s, "PTLS_ALERT_CERTIFICATE_UNKNOWN");
127 0 : break;
128 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_ILLEGAL_PARAMETER):
129 : s =
130 0 : format (s, "PTLS_ALERT_ILLEGAL_PARAMETER");
131 0 : break;
132 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_UNKNOWN_CA):
133 : s =
134 0 : format (s, "PTLS_ALERT_UNKNOWN_CA");
135 0 : break;
136 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_DECODE_ERROR):
137 : s =
138 0 : format (s, "PTLS_ALERT_DECODE_ERROR");
139 0 : break;
140 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_DECRYPT_ERROR):
141 : s =
142 0 : format (s, "PTLS_ALERT_DECRYPT_ERROR");
143 0 : break;
144 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_PROTOCOL_VERSION):
145 : s =
146 0 : format (s, "PTLS_ALERT_PROTOCOL_VERSION");
147 0 : break;
148 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_INTERNAL_ERROR):
149 : s =
150 0 : format (s, "PTLS_ALERT_INTERNAL_ERROR");
151 0 : break;
152 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_USER_CANCELED):
153 : s =
154 0 : format (s, "PTLS_ALERT_USER_CANCELED");
155 0 : break;
156 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_MISSING_EXTENSION):
157 : s =
158 0 : format (s, "PTLS_ALERT_MISSING_EXTENSION");
159 0 : break;
160 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_UNRECOGNIZED_NAME):
161 : s =
162 0 : format (s, "PTLS_ALERT_UNRECOGNIZED_NAME");
163 0 : break;
164 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_CERTIFICATE_REQUIRED):
165 : s =
166 0 : format (s, "PTLS_ALERT_CERTIFICATE_REQUIRED");
167 0 : break;
168 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ALERT_NO_APPLICATION_PROTOCOL):
169 : s =
170 0 : format (s, "PTLS_ALERT_NO_APPLICATION_PROTOCOL");
171 0 : break;
172 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_NO_MEMORY):
173 : s =
174 0 : format (s, "PTLS_ERROR_NO_MEMORY");
175 0 : break;
176 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_IN_PROGRESS):
177 : s =
178 0 : format (s, "PTLS_ERROR_IN_PROGRESS");
179 0 : break;
180 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_LIBRARY):
181 : s =
182 0 : format (s, "PTLS_ERROR_LIBRARY");
183 0 : break;
184 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCOMPATIBLE_KEY):
185 : s =
186 0 : format (s, "PTLS_ERROR_INCOMPATIBLE_KEY");
187 0 : break;
188 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_SESSION_NOT_FOUND):
189 : s =
190 0 : format (s, "PTLS_ERROR_SESSION_NOT_FOUND");
191 0 : break;
192 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_STATELESS_RETRY):
193 : s =
194 0 : format (s, "PTLS_ERROR_STATELESS_RETRY");
195 0 : break;
196 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_NOT_AVAILABLE):
197 : s =
198 0 : format (s, "PTLS_ERROR_NOT_AVAILABLE");
199 0 : break;
200 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_COMPRESSION_FAILURE):
201 : s =
202 0 : format (s, "PTLS_ERROR_COMPRESSION_FAILURE");
203 0 : break;
204 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_INCORRECT_ENCODING):
205 : s =
206 0 : format (s, "PTLS_ERROR_BER_INCORRECT_ENCODING");
207 0 : break;
208 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_MALFORMED_TYPE):
209 : s =
210 0 : format (s, "PTLS_ERROR_BER_MALFORMED_TYPE");
211 0 : break;
212 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_MALFORMED_LENGTH):
213 : s =
214 0 : format (s, "PTLS_ERROR_BER_MALFORMED_LENGTH");
215 0 : break;
216 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_EXCESSIVE_LENGTH):
217 : s =
218 0 : format (s, "PTLS_ERROR_BER_EXCESSIVE_LENGTH");
219 0 : break;
220 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_ELEMENT_TOO_SHORT):
221 : s =
222 0 : format (s, "PTLS_ERROR_BER_ELEMENT_TOO_SHORT");
223 0 : break;
224 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_BER_UNEXPECTED_EOC):
225 : s =
226 0 : format (s, "PTLS_ERROR_BER_UNEXPECTED_EOC");
227 0 : break;
228 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_DER_INDEFINITE_LENGTH):
229 : s =
230 0 : format (s, "PTLS_ERROR_DER_INDEFINITE_LENGTH");
231 0 : break;
232 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_ASN1_SYNTAX):
233 : s =
234 0 : format (s, "PTLS_ERROR_INCORRECT_ASN1_SYNTAX");
235 0 : break;
236 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_PEM_KEY_VERSION):
237 : s =
238 0 : format (s, "PTLS_ERROR_INCORRECT_PEM_KEY_VERSION");
239 0 : break;
240 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_PEM_ECDSA_KEY_VERSION):
241 : s =
242 0 : format (s, "PTLS_ERROR_INCORRECT_PEM_ECDSA_KEY_VERSION");
243 0 : break;
244 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_PEM_ECDSA_CURVE):
245 : s =
246 0 : format (s, "PTLS_ERROR_INCORRECT_PEM_ECDSA_CURVE");
247 0 : break;
248 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_PEM_ECDSA_KEYSIZE):
249 : s =
250 0 : format (s, "PTLS_ERROR_INCORRECT_PEM_ECDSA_KEYSIZE");
251 0 : break;
252 0 : case QUICLY_TRANSPORT_ERROR_TLS_ALERT_BASE + PTLS_ERROR_TO_ALERT (PTLS_ERROR_INCORRECT_ASN1_ECDSA_KEY_SYNTAX):
253 : s =
254 0 : format (s, "PTLS_ERROR_INCORRECT_ASN1_ECDSA_KEY_SYNTAX");
255 0 : break;
256 0 : default:
257 0 : s = format (s, "unknown error 0x%lx", code);
258 0 : break;
259 : }
260 0 : return s;
261 : }
|