Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/curl/curl.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 #ifndef CURLINC_CURL_H | |
2 #define CURLINC_CURL_H | |
3 /*************************************************************************** | |
4 * _ _ ____ _ | |
5 * Project ___| | | | _ \| | | |
6 * / __| | | | |_) | | | |
7 * | (__| |_| | _ <| |___ | |
8 * \___|\___/|_| \_\_____| | |
9 * | |
10 * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al. | |
11 * | |
12 * This software is licensed as described in the file COPYING, which | |
13 * you should have received as part of this distribution. The terms | |
14 * are also available at https://curl.se/docs/copyright.html. | |
15 * | |
16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell | |
17 * copies of the Software, and permit persons to whom the Software is | |
18 * furnished to do so, under the terms of the COPYING file. | |
19 * | |
20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | |
21 * KIND, either express or implied. | |
22 * | |
23 * SPDX-License-Identifier: curl | |
24 * | |
25 ***************************************************************************/ | |
26 | |
27 /* | |
28 * If you have libcurl problems, all docs and details are found here: | |
29 * https://curl.se/libcurl/ | |
30 */ | |
31 | |
32 #ifdef CURL_NO_OLDIES | |
33 #define CURL_STRICTER | |
34 #endif | |
35 | |
36 /* Compile-time deprecation macros. */ | |
37 #if defined(__GNUC__) && (__GNUC__ >= 6) && \ | |
38 !defined(__INTEL_COMPILER) && \ | |
39 !defined(CURL_DISABLE_DEPRECATION) && !defined(BUILDING_LIBCURL) | |
40 #define CURL_DEPRECATED(version, message) \ | |
41 __attribute__((deprecated("since " # version ". " message))) | |
42 #define CURL_IGNORE_DEPRECATION(statements) \ | |
43 _Pragma("GCC diagnostic push") \ | |
44 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ | |
45 statements \ | |
46 _Pragma("GCC diagnostic pop") | |
47 #else | |
48 #define CURL_DEPRECATED(version, message) | |
49 #define CURL_IGNORE_DEPRECATION(statements) statements | |
50 #endif | |
51 | |
52 #include "curlver.h" /* libcurl version defines */ | |
53 #include "system.h" /* determine things run-time */ | |
54 | |
55 /* | |
56 * Define CURL_WIN32 when build target is Win32 API | |
57 */ | |
58 | |
59 #if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && \ | |
60 !defined(__SYMBIAN32__) | |
61 #define CURL_WIN32 | |
62 #endif | |
63 | |
64 #include <stdio.h> | |
65 #include <limits.h> | |
66 | |
67 #if (defined(__FreeBSD__) && (__FreeBSD__ >= 2)) || defined(__MidnightBSD__) | |
68 /* Needed for __FreeBSD_version or __MidnightBSD_version symbol definition */ | |
69 #include <osreldate.h> | |
70 #endif | |
71 | |
72 /* The include stuff here below is mainly for time_t! */ | |
73 #include <sys/types.h> | |
74 #include <time.h> | |
75 | |
76 #if defined(CURL_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__) | |
77 #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \ | |
78 defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)) | |
79 /* The check above prevents the winsock2 inclusion if winsock.h already was | |
80 included, since they can't co-exist without problems */ | |
81 #include <winsock2.h> | |
82 #include <ws2tcpip.h> | |
83 #endif | |
84 #endif | |
85 | |
86 /* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish | |
87 libc5-based Linux systems. Only include it on systems that are known to | |
88 require it! */ | |
89 #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ | |
90 defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ | |
91 defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ | |
92 defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \ | |
93 (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \ | |
94 (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \ | |
95 defined(__sun__) || defined(__serenity__) | |
96 #include <sys/select.h> | |
97 #endif | |
98 | |
99 #if !defined(CURL_WIN32) && !defined(_WIN32_WCE) | |
100 #include <sys/socket.h> | |
101 #endif | |
102 | |
103 #if !defined(CURL_WIN32) | |
104 #include <sys/time.h> | |
105 #endif | |
106 | |
107 /* Compatibility for non-Clang compilers */ | |
108 #ifndef __has_declspec_attribute | |
109 # define __has_declspec_attribute(x) 0 | |
110 #endif | |
111 | |
112 #ifdef __cplusplus | |
113 extern "C" { | |
114 #endif | |
115 | |
116 #if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER) | |
117 typedef struct Curl_easy CURL; | |
118 typedef struct Curl_share CURLSH; | |
119 #else | |
120 typedef void CURL; | |
121 typedef void CURLSH; | |
122 #endif | |
123 | |
124 /* | |
125 * libcurl external API function linkage decorations. | |
126 */ | |
127 | |
128 #ifdef CURL_STATICLIB | |
129 # define CURL_EXTERN | |
130 #elif defined(CURL_WIN32) || defined(__SYMBIAN32__) || \ | |
131 (__has_declspec_attribute(dllexport) && \ | |
132 __has_declspec_attribute(dllimport)) | |
133 # if defined(BUILDING_LIBCURL) | |
134 # define CURL_EXTERN __declspec(dllexport) | |
135 # else | |
136 # define CURL_EXTERN __declspec(dllimport) | |
137 # endif | |
138 #elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS) | |
139 # define CURL_EXTERN CURL_EXTERN_SYMBOL | |
140 #else | |
141 # define CURL_EXTERN | |
142 #endif | |
143 | |
144 #ifndef curl_socket_typedef | |
145 /* socket typedef */ | |
146 #if defined(CURL_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H) | |
147 typedef SOCKET curl_socket_t; | |
148 #define CURL_SOCKET_BAD INVALID_SOCKET | |
149 #else | |
150 typedef int curl_socket_t; | |
151 #define CURL_SOCKET_BAD -1 | |
152 #endif | |
153 #define curl_socket_typedef | |
154 #endif /* curl_socket_typedef */ | |
155 | |
156 /* enum for the different supported SSL backends */ | |
157 typedef enum { | |
158 CURLSSLBACKEND_NONE = 0, | |
159 CURLSSLBACKEND_OPENSSL = 1, | |
160 CURLSSLBACKEND_GNUTLS = 2, | |
161 CURLSSLBACKEND_NSS = 3, | |
162 CURLSSLBACKEND_OBSOLETE4 = 4, /* Was QSOSSL. */ | |
163 CURLSSLBACKEND_GSKIT = 5, | |
164 CURLSSLBACKEND_POLARSSL CURL_DEPRECATED(7.69.0, "") = 6, | |
165 CURLSSLBACKEND_WOLFSSL = 7, | |
166 CURLSSLBACKEND_SCHANNEL = 8, | |
167 CURLSSLBACKEND_SECURETRANSPORT = 9, | |
168 CURLSSLBACKEND_AXTLS CURL_DEPRECATED(7.61.0, "") = 10, | |
169 CURLSSLBACKEND_MBEDTLS = 11, | |
170 CURLSSLBACKEND_MESALINK = 12, | |
171 CURLSSLBACKEND_BEARSSL = 13, | |
172 CURLSSLBACKEND_RUSTLS = 14 | |
173 } curl_sslbackend; | |
174 | |
175 /* aliases for library clones and renames */ | |
176 #define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL | |
177 #define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL | |
178 | |
179 /* deprecated names: */ | |
180 #define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL | |
181 #define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT | |
182 | |
183 struct curl_httppost { | |
184 struct curl_httppost *next; /* next entry in the list */ | |
185 char *name; /* pointer to allocated name */ | |
186 long namelength; /* length of name length */ | |
187 char *contents; /* pointer to allocated data contents */ | |
188 long contentslength; /* length of contents field, see also | |
189 CURL_HTTPPOST_LARGE */ | |
190 char *buffer; /* pointer to allocated buffer contents */ | |
191 long bufferlength; /* length of buffer field */ | |
192 char *contenttype; /* Content-Type */ | |
193 struct curl_slist *contentheader; /* list of extra headers for this form */ | |
194 struct curl_httppost *more; /* if one field name has more than one | |
195 file, this link should link to following | |
196 files */ | |
197 long flags; /* as defined below */ | |
198 | |
199 /* specified content is a file name */ | |
200 #define CURL_HTTPPOST_FILENAME (1<<0) | |
201 /* specified content is a file name */ | |
202 #define CURL_HTTPPOST_READFILE (1<<1) | |
203 /* name is only stored pointer do not free in formfree */ | |
204 #define CURL_HTTPPOST_PTRNAME (1<<2) | |
205 /* contents is only stored pointer do not free in formfree */ | |
206 #define CURL_HTTPPOST_PTRCONTENTS (1<<3) | |
207 /* upload file from buffer */ | |
208 #define CURL_HTTPPOST_BUFFER (1<<4) | |
209 /* upload file from pointer contents */ | |
210 #define CURL_HTTPPOST_PTRBUFFER (1<<5) | |
211 /* upload file contents by using the regular read callback to get the data and | |
212 pass the given pointer as custom pointer */ | |
213 #define CURL_HTTPPOST_CALLBACK (1<<6) | |
214 /* use size in 'contentlen', added in 7.46.0 */ | |
215 #define CURL_HTTPPOST_LARGE (1<<7) | |
216 | |
217 char *showfilename; /* The file name to show. If not set, the | |
218 actual file name will be used (if this | |
219 is a file part) */ | |
220 void *userp; /* custom pointer used for | |
221 HTTPPOST_CALLBACK posts */ | |
222 curl_off_t contentlen; /* alternative length of contents | |
223 field. Used if CURL_HTTPPOST_LARGE is | |
224 set. Added in 7.46.0 */ | |
225 }; | |
226 | |
227 | |
228 /* This is a return code for the progress callback that, when returned, will | |
229 signal libcurl to continue executing the default progress function */ | |
230 #define CURL_PROGRESSFUNC_CONTINUE 0x10000001 | |
231 | |
232 /* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now | |
233 considered deprecated but was the only choice up until 7.31.0 */ | |
234 typedef int (*curl_progress_callback)(void *clientp, | |
235 double dltotal, | |
236 double dlnow, | |
237 double ultotal, | |
238 double ulnow); | |
239 | |
240 /* This is the CURLOPT_XFERINFOFUNCTION callback prototype. It was introduced | |
241 in 7.32.0, avoids the use of floating point numbers and provides more | |
242 detailed information. */ | |
243 typedef int (*curl_xferinfo_callback)(void *clientp, | |
244 curl_off_t dltotal, | |
245 curl_off_t dlnow, | |
246 curl_off_t ultotal, | |
247 curl_off_t ulnow); | |
248 | |
249 #ifndef CURL_MAX_READ_SIZE | |
250 /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */ | |
251 #define CURL_MAX_READ_SIZE 524288 | |
252 #endif | |
253 | |
254 #ifndef CURL_MAX_WRITE_SIZE | |
255 /* Tests have proven that 20K is a very bad buffer size for uploads on | |
256 Windows, while 16K for some odd reason performed a lot better. | |
257 We do the ifndef check to allow this value to easier be changed at build | |
258 time for those who feel adventurous. The practical minimum is about | |
259 400 bytes since libcurl uses a buffer of this size as a scratch area | |
260 (unrelated to network send operations). */ | |
261 #define CURL_MAX_WRITE_SIZE 16384 | |
262 #endif | |
263 | |
264 #ifndef CURL_MAX_HTTP_HEADER | |
265 /* The only reason to have a max limit for this is to avoid the risk of a bad | |
266 server feeding libcurl with a never-ending header that will cause reallocs | |
267 infinitely */ | |
268 #define CURL_MAX_HTTP_HEADER (100*1024) | |
269 #endif | |
270 | |
271 /* This is a magic return code for the write callback that, when returned, | |
272 will signal libcurl to pause receiving on the current transfer. */ | |
273 #define CURL_WRITEFUNC_PAUSE 0x10000001 | |
274 | |
275 /* This is a magic return code for the write callback that, when returned, | |
276 will signal an error from the callback. */ | |
277 #define CURL_WRITEFUNC_ERROR 0xFFFFFFFF | |
278 | |
279 typedef size_t (*curl_write_callback)(char *buffer, | |
280 size_t size, | |
281 size_t nitems, | |
282 void *outstream); | |
283 | |
284 /* This callback will be called when a new resolver request is made */ | |
285 typedef int (*curl_resolver_start_callback)(void *resolver_state, | |
286 void *reserved, void *userdata); | |
287 | |
288 /* enumeration of file types */ | |
289 typedef enum { | |
290 CURLFILETYPE_FILE = 0, | |
291 CURLFILETYPE_DIRECTORY, | |
292 CURLFILETYPE_SYMLINK, | |
293 CURLFILETYPE_DEVICE_BLOCK, | |
294 CURLFILETYPE_DEVICE_CHAR, | |
295 CURLFILETYPE_NAMEDPIPE, | |
296 CURLFILETYPE_SOCKET, | |
297 CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */ | |
298 | |
299 CURLFILETYPE_UNKNOWN /* should never occur */ | |
300 } curlfiletype; | |
301 | |
302 #define CURLFINFOFLAG_KNOWN_FILENAME (1<<0) | |
303 #define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1) | |
304 #define CURLFINFOFLAG_KNOWN_TIME (1<<2) | |
305 #define CURLFINFOFLAG_KNOWN_PERM (1<<3) | |
306 #define CURLFINFOFLAG_KNOWN_UID (1<<4) | |
307 #define CURLFINFOFLAG_KNOWN_GID (1<<5) | |
308 #define CURLFINFOFLAG_KNOWN_SIZE (1<<6) | |
309 #define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7) | |
310 | |
311 /* Information about a single file, used when doing FTP wildcard matching */ | |
312 struct curl_fileinfo { | |
313 char *filename; | |
314 curlfiletype filetype; | |
315 time_t time; /* always zero! */ | |
316 unsigned int perm; | |
317 int uid; | |
318 int gid; | |
319 curl_off_t size; | |
320 long int hardlinks; | |
321 | |
322 struct { | |
323 /* If some of these fields is not NULL, it is a pointer to b_data. */ | |
324 char *time; | |
325 char *perm; | |
326 char *user; | |
327 char *group; | |
328 char *target; /* pointer to the target filename of a symlink */ | |
329 } strings; | |
330 | |
331 unsigned int flags; | |
332 | |
333 /* used internally */ | |
334 char *b_data; | |
335 size_t b_size; | |
336 size_t b_used; | |
337 }; | |
338 | |
339 /* return codes for CURLOPT_CHUNK_BGN_FUNCTION */ | |
340 #define CURL_CHUNK_BGN_FUNC_OK 0 | |
341 #define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */ | |
342 #define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */ | |
343 | |
344 /* if splitting of data transfer is enabled, this callback is called before | |
345 download of an individual chunk started. Note that parameter "remains" works | |
346 only for FTP wildcard downloading (for now), otherwise is not used */ | |
347 typedef long (*curl_chunk_bgn_callback)(const void *transfer_info, | |
348 void *ptr, | |
349 int remains); | |
350 | |
351 /* return codes for CURLOPT_CHUNK_END_FUNCTION */ | |
352 #define CURL_CHUNK_END_FUNC_OK 0 | |
353 #define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */ | |
354 | |
355 /* If splitting of data transfer is enabled this callback is called after | |
356 download of an individual chunk finished. | |
357 Note! After this callback was set then it have to be called FOR ALL chunks. | |
358 Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC. | |
359 This is the reason why we don't need "transfer_info" parameter in this | |
360 callback and we are not interested in "remains" parameter too. */ | |
361 typedef long (*curl_chunk_end_callback)(void *ptr); | |
362 | |
363 /* return codes for FNMATCHFUNCTION */ | |
364 #define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */ | |
365 #define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */ | |
366 #define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */ | |
367 | |
368 /* callback type for wildcard downloading pattern matching. If the | |
369 string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */ | |
370 typedef int (*curl_fnmatch_callback)(void *ptr, | |
371 const char *pattern, | |
372 const char *string); | |
373 | |
374 /* These are the return codes for the seek callbacks */ | |
375 #define CURL_SEEKFUNC_OK 0 | |
376 #define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */ | |
377 #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so | |
378 libcurl might try other means instead */ | |
379 typedef int (*curl_seek_callback)(void *instream, | |
380 curl_off_t offset, | |
381 int origin); /* 'whence' */ | |
382 | |
383 /* This is a return code for the read callback that, when returned, will | |
384 signal libcurl to immediately abort the current transfer. */ | |
385 #define CURL_READFUNC_ABORT 0x10000000 | |
386 /* This is a return code for the read callback that, when returned, will | |
387 signal libcurl to pause sending data on the current transfer. */ | |
388 #define CURL_READFUNC_PAUSE 0x10000001 | |
389 | |
390 /* Return code for when the trailing headers' callback has terminated | |
391 without any errors */ | |
392 #define CURL_TRAILERFUNC_OK 0 | |
393 /* Return code for when was an error in the trailing header's list and we | |
394 want to abort the request */ | |
395 #define CURL_TRAILERFUNC_ABORT 1 | |
396 | |
397 typedef size_t (*curl_read_callback)(char *buffer, | |
398 size_t size, | |
399 size_t nitems, | |
400 void *instream); | |
401 | |
402 typedef int (*curl_trailer_callback)(struct curl_slist **list, | |
403 void *userdata); | |
404 | |
405 typedef enum { | |
406 CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */ | |
407 CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */ | |
408 CURLSOCKTYPE_LAST /* never use */ | |
409 } curlsocktype; | |
410 | |
411 /* The return code from the sockopt_callback can signal information back | |
412 to libcurl: */ | |
413 #define CURL_SOCKOPT_OK 0 | |
414 #define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return | |
415 CURLE_ABORTED_BY_CALLBACK */ | |
416 #define CURL_SOCKOPT_ALREADY_CONNECTED 2 | |
417 | |
418 typedef int (*curl_sockopt_callback)(void *clientp, | |
419 curl_socket_t curlfd, | |
420 curlsocktype purpose); | |
421 | |
422 struct curl_sockaddr { | |
423 int family; | |
424 int socktype; | |
425 int protocol; | |
426 unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it | |
427 turned really ugly and painful on the systems that | |
428 lack this type */ | |
429 struct sockaddr addr; | |
430 }; | |
431 | |
432 typedef curl_socket_t | |
433 (*curl_opensocket_callback)(void *clientp, | |
434 curlsocktype purpose, | |
435 struct curl_sockaddr *address); | |
436 | |
437 typedef int | |
438 (*curl_closesocket_callback)(void *clientp, curl_socket_t item); | |
439 | |
440 typedef enum { | |
441 CURLIOE_OK, /* I/O operation successful */ | |
442 CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ | |
443 CURLIOE_FAILRESTART, /* failed to restart the read */ | |
444 CURLIOE_LAST /* never use */ | |
445 } curlioerr; | |
446 | |
447 typedef enum { | |
448 CURLIOCMD_NOP, /* no operation */ | |
449 CURLIOCMD_RESTARTREAD, /* restart the read stream from start */ | |
450 CURLIOCMD_LAST /* never use */ | |
451 } curliocmd; | |
452 | |
453 typedef curlioerr (*curl_ioctl_callback)(CURL *handle, | |
454 int cmd, | |
455 void *clientp); | |
456 | |
457 #ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS | |
458 /* | |
459 * The following typedef's are signatures of malloc, free, realloc, strdup and | |
460 * calloc respectively. Function pointers of these types can be passed to the | |
461 * curl_global_init_mem() function to set user defined memory management | |
462 * callback routines. | |
463 */ | |
464 typedef void *(*curl_malloc_callback)(size_t size); | |
465 typedef void (*curl_free_callback)(void *ptr); | |
466 typedef void *(*curl_realloc_callback)(void *ptr, size_t size); | |
467 typedef char *(*curl_strdup_callback)(const char *str); | |
468 typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size); | |
469 | |
470 #define CURL_DID_MEMORY_FUNC_TYPEDEFS | |
471 #endif | |
472 | |
473 /* the kind of data that is passed to information_callback */ | |
474 typedef enum { | |
475 CURLINFO_TEXT = 0, | |
476 CURLINFO_HEADER_IN, /* 1 */ | |
477 CURLINFO_HEADER_OUT, /* 2 */ | |
478 CURLINFO_DATA_IN, /* 3 */ | |
479 CURLINFO_DATA_OUT, /* 4 */ | |
480 CURLINFO_SSL_DATA_IN, /* 5 */ | |
481 CURLINFO_SSL_DATA_OUT, /* 6 */ | |
482 CURLINFO_END | |
483 } curl_infotype; | |
484 | |
485 typedef int (*curl_debug_callback) | |
486 (CURL *handle, /* the handle/transfer this concerns */ | |
487 curl_infotype type, /* what kind of data */ | |
488 char *data, /* points to the data */ | |
489 size_t size, /* size of the data pointed to */ | |
490 void *userptr); /* whatever the user please */ | |
491 | |
492 /* This is the CURLOPT_PREREQFUNCTION callback prototype. */ | |
493 typedef int (*curl_prereq_callback)(void *clientp, | |
494 char *conn_primary_ip, | |
495 char *conn_local_ip, | |
496 int conn_primary_port, | |
497 int conn_local_port); | |
498 | |
499 /* Return code for when the pre-request callback has terminated without | |
500 any errors */ | |
501 #define CURL_PREREQFUNC_OK 0 | |
502 /* Return code for when the pre-request callback wants to abort the | |
503 request */ | |
504 #define CURL_PREREQFUNC_ABORT 1 | |
505 | |
506 /* All possible error codes from all sorts of curl functions. Future versions | |
507 may return other values, stay prepared. | |
508 | |
509 Always add new return codes last. Never *EVER* remove any. The return | |
510 codes must remain the same! | |
511 */ | |
512 | |
513 typedef enum { | |
514 CURLE_OK = 0, | |
515 CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ | |
516 CURLE_FAILED_INIT, /* 2 */ | |
517 CURLE_URL_MALFORMAT, /* 3 */ | |
518 CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for | |
519 7.17.0, reused in April 2011 for 7.21.5] */ | |
520 CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ | |
521 CURLE_COULDNT_RESOLVE_HOST, /* 6 */ | |
522 CURLE_COULDNT_CONNECT, /* 7 */ | |
523 CURLE_WEIRD_SERVER_REPLY, /* 8 */ | |
524 CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server | |
525 due to lack of access - when login fails | |
526 this is not returned. */ | |
527 CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for | |
528 7.15.4, reused in Dec 2011 for 7.24.0]*/ | |
529 CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */ | |
530 CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server | |
531 [was obsoleted in August 2007 for 7.17.0, | |
532 reused in Dec 2011 for 7.24.0]*/ | |
533 CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */ | |
534 CURLE_FTP_WEIRD_227_FORMAT, /* 14 */ | |
535 CURLE_FTP_CANT_GET_HOST, /* 15 */ | |
536 CURLE_HTTP2, /* 16 - A problem in the http2 framing layer. | |
537 [was obsoleted in August 2007 for 7.17.0, | |
538 reused in July 2014 for 7.38.0] */ | |
539 CURLE_FTP_COULDNT_SET_TYPE, /* 17 */ | |
540 CURLE_PARTIAL_FILE, /* 18 */ | |
541 CURLE_FTP_COULDNT_RETR_FILE, /* 19 */ | |
542 CURLE_OBSOLETE20, /* 20 - NOT USED */ | |
543 CURLE_QUOTE_ERROR, /* 21 - quote command failure */ | |
544 CURLE_HTTP_RETURNED_ERROR, /* 22 */ | |
545 CURLE_WRITE_ERROR, /* 23 */ | |
546 CURLE_OBSOLETE24, /* 24 - NOT USED */ | |
547 CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */ | |
548 CURLE_READ_ERROR, /* 26 - couldn't open/read from file */ | |
549 CURLE_OUT_OF_MEMORY, /* 27 */ | |
550 CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */ | |
551 CURLE_OBSOLETE29, /* 29 - NOT USED */ | |
552 CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */ | |
553 CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */ | |
554 CURLE_OBSOLETE32, /* 32 - NOT USED */ | |
555 CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */ | |
556 CURLE_HTTP_POST_ERROR, /* 34 */ | |
557 CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */ | |
558 CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */ | |
559 CURLE_FILE_COULDNT_READ_FILE, /* 37 */ | |
560 CURLE_LDAP_CANNOT_BIND, /* 38 */ | |
561 CURLE_LDAP_SEARCH_FAILED, /* 39 */ | |
562 CURLE_OBSOLETE40, /* 40 - NOT USED */ | |
563 CURLE_FUNCTION_NOT_FOUND, /* 41 - NOT USED starting with 7.53.0 */ | |
564 CURLE_ABORTED_BY_CALLBACK, /* 42 */ | |
565 CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */ | |
566 CURLE_OBSOLETE44, /* 44 - NOT USED */ | |
567 CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */ | |
568 CURLE_OBSOLETE46, /* 46 - NOT USED */ | |
569 CURLE_TOO_MANY_REDIRECTS, /* 47 - catch endless re-direct loops */ | |
570 CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */ | |
571 CURLE_SETOPT_OPTION_SYNTAX, /* 49 - Malformed setopt option */ | |
572 CURLE_OBSOLETE50, /* 50 - NOT USED */ | |
573 CURLE_OBSOLETE51, /* 51 - NOT USED */ | |
574 CURLE_GOT_NOTHING, /* 52 - when this is a specific error */ | |
575 CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */ | |
576 CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as | |
577 default */ | |
578 CURLE_SEND_ERROR, /* 55 - failed sending network data */ | |
579 CURLE_RECV_ERROR, /* 56 - failure in receiving network data */ | |
580 CURLE_OBSOLETE57, /* 57 - NOT IN USE */ | |
581 CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */ | |
582 CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */ | |
583 CURLE_PEER_FAILED_VERIFICATION, /* 60 - peer's certificate or fingerprint | |
584 wasn't verified fine */ | |
585 CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */ | |
586 CURLE_OBSOLETE62, /* 62 - NOT IN USE since 7.82.0 */ | |
587 CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */ | |
588 CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */ | |
589 CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind | |
590 that failed */ | |
591 CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */ | |
592 CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not | |
593 accepted and we failed to login */ | |
594 CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */ | |
595 CURLE_TFTP_PERM, /* 69 - permission problem on server */ | |
596 CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */ | |
597 CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */ | |
598 CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */ | |
599 CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */ | |
600 CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */ | |
601 CURLE_OBSOLETE75, /* 75 - NOT IN USE since 7.82.0 */ | |
602 CURLE_OBSOLETE76, /* 76 - NOT IN USE since 7.82.0 */ | |
603 CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing | |
604 or wrong format */ | |
605 CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */ | |
606 CURLE_SSH, /* 79 - error from the SSH layer, somewhat | |
607 generic so the error message will be of | |
608 interest when this has happened */ | |
609 | |
610 CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL | |
611 connection */ | |
612 CURLE_AGAIN, /* 81 - socket is not ready for send/recv, | |
613 wait till it's ready and try again (Added | |
614 in 7.18.2) */ | |
615 CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or | |
616 wrong format (Added in 7.19.0) */ | |
617 CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in | |
618 7.19.0) */ | |
619 CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */ | |
620 CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */ | |
621 CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */ | |
622 CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */ | |
623 CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */ | |
624 CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the | |
625 session will be queued */ | |
626 CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not | |
627 match */ | |
628 CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */ | |
629 CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer | |
630 */ | |
631 CURLE_RECURSIVE_API_CALL, /* 93 - an api function was called from | |
632 inside a callback */ | |
633 CURLE_AUTH_ERROR, /* 94 - an authentication function returned an | |
634 error */ | |
635 CURLE_HTTP3, /* 95 - An HTTP/3 layer problem */ | |
636 CURLE_QUIC_CONNECT_ERROR, /* 96 - QUIC connection error */ | |
637 CURLE_PROXY, /* 97 - proxy handshake error */ | |
638 CURLE_SSL_CLIENTCERT, /* 98 - client-side certificate required */ | |
639 CURLE_UNRECOVERABLE_POLL, /* 99 - poll/select returned fatal error */ | |
640 CURL_LAST /* never use! */ | |
641 } CURLcode; | |
642 | |
643 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all | |
644 the obsolete stuff removed! */ | |
645 | |
646 /* Previously obsolete error code re-used in 7.38.0 */ | |
647 #define CURLE_OBSOLETE16 CURLE_HTTP2 | |
648 | |
649 /* Previously obsolete error codes re-used in 7.24.0 */ | |
650 #define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED | |
651 #define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT | |
652 | |
653 /* compatibility with older names */ | |
654 #define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING | |
655 #define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY | |
656 | |
657 /* The following were added in 7.62.0 */ | |
658 #define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION | |
659 | |
660 /* The following were added in 7.21.5, April 2011 */ | |
661 #define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION | |
662 | |
663 /* Added for 7.78.0 */ | |
664 #define CURLE_TELNET_OPTION_SYNTAX CURLE_SETOPT_OPTION_SYNTAX | |
665 | |
666 /* The following were added in 7.17.1 */ | |
667 /* These are scheduled to disappear by 2009 */ | |
668 #define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION | |
669 | |
670 /* The following were added in 7.17.0 */ | |
671 /* These are scheduled to disappear by 2009 */ | |
672 #define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */ | |
673 #define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46 | |
674 #define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44 | |
675 #define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10 | |
676 #define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16 | |
677 #define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32 | |
678 #define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29 | |
679 #define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12 | |
680 #define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20 | |
681 #define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40 | |
682 #define CURLE_MALFORMAT_USER CURLE_OBSOLETE24 | |
683 #define CURLE_SHARE_IN_USE CURLE_OBSOLETE57 | |
684 #define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN | |
685 | |
686 #define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED | |
687 #define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE | |
688 #define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR | |
689 #define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL | |
690 #define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS | |
691 #define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR | |
692 #define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED | |
693 | |
694 /* The following were added earlier */ | |
695 | |
696 #define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT | |
697 #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR | |
698 #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED | |
699 #define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED | |
700 #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE | |
701 #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME | |
702 #define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62 | |
703 #define CURLE_CONV_REQD CURLE_OBSOLETE76 | |
704 #define CURLE_CONV_FAILED CURLE_OBSOLETE75 | |
705 | |
706 /* This was the error code 50 in 7.7.3 and a few earlier versions, this | |
707 is no longer used by libcurl but is instead #defined here only to not | |
708 make programs break */ | |
709 #define CURLE_ALREADY_COMPLETE 99999 | |
710 | |
711 /* Provide defines for really old option names */ | |
712 #define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */ | |
713 #define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */ | |
714 #define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA | |
715 | |
716 /* Since long deprecated options with no code in the lib that does anything | |
717 with them. */ | |
718 #define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40 | |
719 #define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72 | |
720 | |
721 #endif /* !CURL_NO_OLDIES */ | |
722 | |
723 /* | |
724 * Proxy error codes. Returned in CURLINFO_PROXY_ERROR if CURLE_PROXY was | |
725 * return for the transfers. | |
726 */ | |
727 typedef enum { | |
728 CURLPX_OK, | |
729 CURLPX_BAD_ADDRESS_TYPE, | |
730 CURLPX_BAD_VERSION, | |
731 CURLPX_CLOSED, | |
732 CURLPX_GSSAPI, | |
733 CURLPX_GSSAPI_PERMSG, | |
734 CURLPX_GSSAPI_PROTECTION, | |
735 CURLPX_IDENTD, | |
736 CURLPX_IDENTD_DIFFER, | |
737 CURLPX_LONG_HOSTNAME, | |
738 CURLPX_LONG_PASSWD, | |
739 CURLPX_LONG_USER, | |
740 CURLPX_NO_AUTH, | |
741 CURLPX_RECV_ADDRESS, | |
742 CURLPX_RECV_AUTH, | |
743 CURLPX_RECV_CONNECT, | |
744 CURLPX_RECV_REQACK, | |
745 CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED, | |
746 CURLPX_REPLY_COMMAND_NOT_SUPPORTED, | |
747 CURLPX_REPLY_CONNECTION_REFUSED, | |
748 CURLPX_REPLY_GENERAL_SERVER_FAILURE, | |
749 CURLPX_REPLY_HOST_UNREACHABLE, | |
750 CURLPX_REPLY_NETWORK_UNREACHABLE, | |
751 CURLPX_REPLY_NOT_ALLOWED, | |
752 CURLPX_REPLY_TTL_EXPIRED, | |
753 CURLPX_REPLY_UNASSIGNED, | |
754 CURLPX_REQUEST_FAILED, | |
755 CURLPX_RESOLVE_HOST, | |
756 CURLPX_SEND_AUTH, | |
757 CURLPX_SEND_CONNECT, | |
758 CURLPX_SEND_REQUEST, | |
759 CURLPX_UNKNOWN_FAIL, | |
760 CURLPX_UNKNOWN_MODE, | |
761 CURLPX_USER_REJECTED, | |
762 CURLPX_LAST /* never use */ | |
763 } CURLproxycode; | |
764 | |
765 /* This prototype applies to all conversion callbacks */ | |
766 typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length); | |
767 | |
768 typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */ | |
769 void *ssl_ctx, /* actually an OpenSSL | |
770 or WolfSSL SSL_CTX, | |
771 or an mbedTLS | |
772 mbedtls_ssl_config */ | |
773 void *userptr); | |
774 | |
775 typedef enum { | |
776 CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use | |
777 CONNECT HTTP/1.1 */ | |
778 CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT | |
779 HTTP/1.0 */ | |
780 CURLPROXY_HTTPS = 2, /* added in 7.52.0 */ | |
781 CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already | |
782 in 7.10 */ | |
783 CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ | |
784 CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */ | |
785 CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the | |
786 host name rather than the IP address. added | |
787 in 7.18.0 */ | |
788 } curl_proxytype; /* this enum was added in 7.10 */ | |
789 | |
790 /* | |
791 * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options: | |
792 * | |
793 * CURLAUTH_NONE - No HTTP authentication | |
794 * CURLAUTH_BASIC - HTTP Basic authentication (default) | |
795 * CURLAUTH_DIGEST - HTTP Digest authentication | |
796 * CURLAUTH_NEGOTIATE - HTTP Negotiate (SPNEGO) authentication | |
797 * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated) | |
798 * CURLAUTH_NTLM - HTTP NTLM authentication | |
799 * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour | |
800 * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper | |
801 * CURLAUTH_BEARER - HTTP Bearer token authentication | |
802 * CURLAUTH_ONLY - Use together with a single other type to force no | |
803 * authentication or just that single type | |
804 * CURLAUTH_ANY - All fine types set | |
805 * CURLAUTH_ANYSAFE - All fine types except Basic | |
806 */ | |
807 | |
808 #define CURLAUTH_NONE ((unsigned long)0) | |
809 #define CURLAUTH_BASIC (((unsigned long)1)<<0) | |
810 #define CURLAUTH_DIGEST (((unsigned long)1)<<1) | |
811 #define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2) | |
812 /* Deprecated since the advent of CURLAUTH_NEGOTIATE */ | |
813 #define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE | |
814 /* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */ | |
815 #define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE | |
816 #define CURLAUTH_NTLM (((unsigned long)1)<<3) | |
817 #define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4) | |
818 #define CURLAUTH_NTLM_WB (((unsigned long)1)<<5) | |
819 #define CURLAUTH_BEARER (((unsigned long)1)<<6) | |
820 #define CURLAUTH_AWS_SIGV4 (((unsigned long)1)<<7) | |
821 #define CURLAUTH_ONLY (((unsigned long)1)<<31) | |
822 #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) | |
823 #define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) | |
824 | |
825 #define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */ | |
826 #define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */ | |
827 #define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */ | |
828 #define CURLSSH_AUTH_PASSWORD (1<<1) /* password */ | |
829 #define CURLSSH_AUTH_HOST (1<<2) /* host key files */ | |
830 #define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */ | |
831 #define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */ | |
832 #define CURLSSH_AUTH_GSSAPI (1<<5) /* gssapi (kerberos, ...) */ | |
833 #define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY | |
834 | |
835 #define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */ | |
836 #define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */ | |
837 #define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */ | |
838 | |
839 #define CURL_ERROR_SIZE 256 | |
840 | |
841 enum curl_khtype { | |
842 CURLKHTYPE_UNKNOWN, | |
843 CURLKHTYPE_RSA1, | |
844 CURLKHTYPE_RSA, | |
845 CURLKHTYPE_DSS, | |
846 CURLKHTYPE_ECDSA, | |
847 CURLKHTYPE_ED25519 | |
848 }; | |
849 | |
850 struct curl_khkey { | |
851 const char *key; /* points to a null-terminated string encoded with base64 | |
852 if len is zero, otherwise to the "raw" data */ | |
853 size_t len; | |
854 enum curl_khtype keytype; | |
855 }; | |
856 | |
857 /* this is the set of return values expected from the curl_sshkeycallback | |
858 callback */ | |
859 enum curl_khstat { | |
860 CURLKHSTAT_FINE_ADD_TO_FILE, | |
861 CURLKHSTAT_FINE, | |
862 CURLKHSTAT_REJECT, /* reject the connection, return an error */ | |
863 CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now. | |
864 Causes a CURLE_PEER_FAILED_VERIFICATION error but the | |
865 connection will be left intact etc */ | |
866 CURLKHSTAT_FINE_REPLACE, /* accept and replace the wrong key */ | |
867 CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */ | |
868 }; | |
869 | |
870 /* this is the set of status codes pass in to the callback */ | |
871 enum curl_khmatch { | |
872 CURLKHMATCH_OK, /* match */ | |
873 CURLKHMATCH_MISMATCH, /* host found, key mismatch! */ | |
874 CURLKHMATCH_MISSING, /* no matching host/key found */ | |
875 CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */ | |
876 }; | |
877 | |
878 typedef int | |
879 (*curl_sshkeycallback) (CURL *easy, /* easy handle */ | |
880 const struct curl_khkey *knownkey, /* known */ | |
881 const struct curl_khkey *foundkey, /* found */ | |
882 enum curl_khmatch, /* libcurl's view on the keys */ | |
883 void *clientp); /* custom pointer passed with */ | |
884 /* CURLOPT_SSH_KEYDATA */ | |
885 | |
886 typedef int | |
887 (*curl_sshhostkeycallback) (void *clientp,/* custom pointer passed */ | |
888 /* with CURLOPT_SSH_HOSTKEYDATA */ | |
889 int keytype, /* CURLKHTYPE */ | |
890 const char *key, /* hostkey to check */ | |
891 size_t keylen); /* length of the key */ | |
892 /* return CURLE_OK to accept */ | |
893 /* or something else to refuse */ | |
894 | |
895 | |
896 /* parameter for the CURLOPT_USE_SSL option */ | |
897 typedef enum { | |
898 CURLUSESSL_NONE, /* do not attempt to use SSL */ | |
899 CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */ | |
900 CURLUSESSL_CONTROL, /* SSL for the control connection or fail */ | |
901 CURLUSESSL_ALL, /* SSL for all communication or fail */ | |
902 CURLUSESSL_LAST /* not an option, never use */ | |
903 } curl_usessl; | |
904 | |
905 /* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */ | |
906 | |
907 /* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the | |
908 name of improving interoperability with older servers. Some SSL libraries | |
909 have introduced work-arounds for this flaw but those work-arounds sometimes | |
910 make the SSL communication fail. To regain functionality with those broken | |
911 servers, a user can this way allow the vulnerability back. */ | |
912 #define CURLSSLOPT_ALLOW_BEAST (1<<0) | |
913 | |
914 /* - NO_REVOKE tells libcurl to disable certificate revocation checks for those | |
915 SSL backends where such behavior is present. */ | |
916 #define CURLSSLOPT_NO_REVOKE (1<<1) | |
917 | |
918 /* - NO_PARTIALCHAIN tells libcurl to *NOT* accept a partial certificate chain | |
919 if possible. The OpenSSL backend has this ability. */ | |
920 #define CURLSSLOPT_NO_PARTIALCHAIN (1<<2) | |
921 | |
922 /* - REVOKE_BEST_EFFORT tells libcurl to ignore certificate revocation offline | |
923 checks and ignore missing revocation list for those SSL backends where such | |
924 behavior is present. */ | |
925 #define CURLSSLOPT_REVOKE_BEST_EFFORT (1<<3) | |
926 | |
927 /* - CURLSSLOPT_NATIVE_CA tells libcurl to use standard certificate store of | |
928 operating system. Currently implemented under MS-Windows. */ | |
929 #define CURLSSLOPT_NATIVE_CA (1<<4) | |
930 | |
931 /* - CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl to automatically locate and use | |
932 a client certificate for authentication. (Schannel) */ | |
933 #define CURLSSLOPT_AUTO_CLIENT_CERT (1<<5) | |
934 | |
935 /* The default connection attempt delay in milliseconds for happy eyeballs. | |
936 CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document | |
937 this value, keep them in sync. */ | |
938 #define CURL_HET_DEFAULT 200L | |
939 | |
940 /* The default connection upkeep interval in milliseconds. */ | |
941 #define CURL_UPKEEP_INTERVAL_DEFAULT 60000L | |
942 | |
943 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all | |
944 the obsolete stuff removed! */ | |
945 | |
946 /* Backwards compatibility with older names */ | |
947 /* These are scheduled to disappear by 2009 */ | |
948 | |
949 #define CURLFTPSSL_NONE CURLUSESSL_NONE | |
950 #define CURLFTPSSL_TRY CURLUSESSL_TRY | |
951 #define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL | |
952 #define CURLFTPSSL_ALL CURLUSESSL_ALL | |
953 #define CURLFTPSSL_LAST CURLUSESSL_LAST | |
954 #define curl_ftpssl curl_usessl | |
955 #endif /* !CURL_NO_OLDIES */ | |
956 | |
957 /* parameter for the CURLOPT_FTP_SSL_CCC option */ | |
958 typedef enum { | |
959 CURLFTPSSL_CCC_NONE, /* do not send CCC */ | |
960 CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */ | |
961 CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */ | |
962 CURLFTPSSL_CCC_LAST /* not an option, never use */ | |
963 } curl_ftpccc; | |
964 | |
965 /* parameter for the CURLOPT_FTPSSLAUTH option */ | |
966 typedef enum { | |
967 CURLFTPAUTH_DEFAULT, /* let libcurl decide */ | |
968 CURLFTPAUTH_SSL, /* use "AUTH SSL" */ | |
969 CURLFTPAUTH_TLS, /* use "AUTH TLS" */ | |
970 CURLFTPAUTH_LAST /* not an option, never use */ | |
971 } curl_ftpauth; | |
972 | |
973 /* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ | |
974 typedef enum { | |
975 CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */ | |
976 CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD | |
977 again if MKD succeeded, for SFTP this does | |
978 similar magic */ | |
979 CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD | |
980 again even if MKD failed! */ | |
981 CURLFTP_CREATE_DIR_LAST /* not an option, never use */ | |
982 } curl_ftpcreatedir; | |
983 | |
984 /* parameter for the CURLOPT_FTP_FILEMETHOD option */ | |
985 typedef enum { | |
986 CURLFTPMETHOD_DEFAULT, /* let libcurl pick */ | |
987 CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */ | |
988 CURLFTPMETHOD_NOCWD, /* no CWD at all */ | |
989 CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */ | |
990 CURLFTPMETHOD_LAST /* not an option, never use */ | |
991 } curl_ftpmethod; | |
992 | |
993 /* bitmask defines for CURLOPT_HEADEROPT */ | |
994 #define CURLHEADER_UNIFIED 0 | |
995 #define CURLHEADER_SEPARATE (1<<0) | |
996 | |
997 /* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */ | |
998 #define CURLALTSVC_READONLYFILE (1<<2) | |
999 #define CURLALTSVC_H1 (1<<3) | |
1000 #define CURLALTSVC_H2 (1<<4) | |
1001 #define CURLALTSVC_H3 (1<<5) | |
1002 | |
1003 | |
1004 struct curl_hstsentry { | |
1005 char *name; | |
1006 size_t namelen; | |
1007 unsigned int includeSubDomains:1; | |
1008 char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */ | |
1009 }; | |
1010 | |
1011 struct curl_index { | |
1012 size_t index; /* the provided entry's "index" or count */ | |
1013 size_t total; /* total number of entries to save */ | |
1014 }; | |
1015 | |
1016 typedef enum { | |
1017 CURLSTS_OK, | |
1018 CURLSTS_DONE, | |
1019 CURLSTS_FAIL | |
1020 } CURLSTScode; | |
1021 | |
1022 typedef CURLSTScode (*curl_hstsread_callback)(CURL *easy, | |
1023 struct curl_hstsentry *e, | |
1024 void *userp); | |
1025 typedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy, | |
1026 struct curl_hstsentry *e, | |
1027 struct curl_index *i, | |
1028 void *userp); | |
1029 | |
1030 /* CURLHSTS_* are bits for the CURLOPT_HSTS option */ | |
1031 #define CURLHSTS_ENABLE (long)(1<<0) | |
1032 #define CURLHSTS_READONLYFILE (long)(1<<1) | |
1033 | |
1034 /* The CURLPROTO_ defines below are for the **deprecated** CURLOPT_*PROTOCOLS | |
1035 options. Do not use. */ | |
1036 #define CURLPROTO_HTTP (1<<0) | |
1037 #define CURLPROTO_HTTPS (1<<1) | |
1038 #define CURLPROTO_FTP (1<<2) | |
1039 #define CURLPROTO_FTPS (1<<3) | |
1040 #define CURLPROTO_SCP (1<<4) | |
1041 #define CURLPROTO_SFTP (1<<5) | |
1042 #define CURLPROTO_TELNET (1<<6) | |
1043 #define CURLPROTO_LDAP (1<<7) | |
1044 #define CURLPROTO_LDAPS (1<<8) | |
1045 #define CURLPROTO_DICT (1<<9) | |
1046 #define CURLPROTO_FILE (1<<10) | |
1047 #define CURLPROTO_TFTP (1<<11) | |
1048 #define CURLPROTO_IMAP (1<<12) | |
1049 #define CURLPROTO_IMAPS (1<<13) | |
1050 #define CURLPROTO_POP3 (1<<14) | |
1051 #define CURLPROTO_POP3S (1<<15) | |
1052 #define CURLPROTO_SMTP (1<<16) | |
1053 #define CURLPROTO_SMTPS (1<<17) | |
1054 #define CURLPROTO_RTSP (1<<18) | |
1055 #define CURLPROTO_RTMP (1<<19) | |
1056 #define CURLPROTO_RTMPT (1<<20) | |
1057 #define CURLPROTO_RTMPE (1<<21) | |
1058 #define CURLPROTO_RTMPTE (1<<22) | |
1059 #define CURLPROTO_RTMPS (1<<23) | |
1060 #define CURLPROTO_RTMPTS (1<<24) | |
1061 #define CURLPROTO_GOPHER (1<<25) | |
1062 #define CURLPROTO_SMB (1<<26) | |
1063 #define CURLPROTO_SMBS (1<<27) | |
1064 #define CURLPROTO_MQTT (1<<28) | |
1065 #define CURLPROTO_GOPHERS (1<<29) | |
1066 #define CURLPROTO_ALL (~0) /* enable everything */ | |
1067 | |
1068 /* long may be 32 or 64 bits, but we should never depend on anything else | |
1069 but 32 */ | |
1070 #define CURLOPTTYPE_LONG 0 | |
1071 #define CURLOPTTYPE_OBJECTPOINT 10000 | |
1072 #define CURLOPTTYPE_FUNCTIONPOINT 20000 | |
1073 #define CURLOPTTYPE_OFF_T 30000 | |
1074 #define CURLOPTTYPE_BLOB 40000 | |
1075 | |
1076 /* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the | |
1077 string options from the header file */ | |
1078 | |
1079 | |
1080 #define CURLOPT(na,t,nu) na = t + nu | |
1081 #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu | |
1082 | |
1083 /* CURLOPT aliases that make no run-time difference */ | |
1084 | |
1085 /* 'char *' argument to a string with a trailing zero */ | |
1086 #define CURLOPTTYPE_STRINGPOINT CURLOPTTYPE_OBJECTPOINT | |
1087 | |
1088 /* 'struct curl_slist *' argument */ | |
1089 #define CURLOPTTYPE_SLISTPOINT CURLOPTTYPE_OBJECTPOINT | |
1090 | |
1091 /* 'void *' argument passed untouched to callback */ | |
1092 #define CURLOPTTYPE_CBPOINT CURLOPTTYPE_OBJECTPOINT | |
1093 | |
1094 /* 'long' argument with a set of values/bitmask */ | |
1095 #define CURLOPTTYPE_VALUES CURLOPTTYPE_LONG | |
1096 | |
1097 /* | |
1098 * All CURLOPT_* values. | |
1099 */ | |
1100 | |
1101 typedef enum { | |
1102 /* This is the FILE * or void * the regular output should be written to. */ | |
1103 CURLOPT(CURLOPT_WRITEDATA, CURLOPTTYPE_CBPOINT, 1), | |
1104 | |
1105 /* The full URL to get/put */ | |
1106 CURLOPT(CURLOPT_URL, CURLOPTTYPE_STRINGPOINT, 2), | |
1107 | |
1108 /* Port number to connect to, if other than default. */ | |
1109 CURLOPT(CURLOPT_PORT, CURLOPTTYPE_LONG, 3), | |
1110 | |
1111 /* Name of proxy to use. */ | |
1112 CURLOPT(CURLOPT_PROXY, CURLOPTTYPE_STRINGPOINT, 4), | |
1113 | |
1114 /* "user:password;options" to use when fetching. */ | |
1115 CURLOPT(CURLOPT_USERPWD, CURLOPTTYPE_STRINGPOINT, 5), | |
1116 | |
1117 /* "user:password" to use with proxy. */ | |
1118 CURLOPT(CURLOPT_PROXYUSERPWD, CURLOPTTYPE_STRINGPOINT, 6), | |
1119 | |
1120 /* Range to get, specified as an ASCII string. */ | |
1121 CURLOPT(CURLOPT_RANGE, CURLOPTTYPE_STRINGPOINT, 7), | |
1122 | |
1123 /* not used */ | |
1124 | |
1125 /* Specified file stream to upload from (use as input): */ | |
1126 CURLOPT(CURLOPT_READDATA, CURLOPTTYPE_CBPOINT, 9), | |
1127 | |
1128 /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE | |
1129 * bytes big. */ | |
1130 CURLOPT(CURLOPT_ERRORBUFFER, CURLOPTTYPE_OBJECTPOINT, 10), | |
1131 | |
1132 /* Function that will be called to store the output (instead of fwrite). The | |
1133 * parameters will use fwrite() syntax, make sure to follow them. */ | |
1134 CURLOPT(CURLOPT_WRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 11), | |
1135 | |
1136 /* Function that will be called to read the input (instead of fread). The | |
1137 * parameters will use fread() syntax, make sure to follow them. */ | |
1138 CURLOPT(CURLOPT_READFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 12), | |
1139 | |
1140 /* Time-out the read operation after this amount of seconds */ | |
1141 CURLOPT(CURLOPT_TIMEOUT, CURLOPTTYPE_LONG, 13), | |
1142 | |
1143 /* If CURLOPT_READDATA is used, this can be used to inform libcurl about | |
1144 * how large the file being sent really is. That allows better error | |
1145 * checking and better verifies that the upload was successful. -1 means | |
1146 * unknown size. | |
1147 * | |
1148 * For large file support, there is also a _LARGE version of the key | |
1149 * which takes an off_t type, allowing platforms with larger off_t | |
1150 * sizes to handle larger files. See below for INFILESIZE_LARGE. | |
1151 */ | |
1152 CURLOPT(CURLOPT_INFILESIZE, CURLOPTTYPE_LONG, 14), | |
1153 | |
1154 /* POST static input fields. */ | |
1155 CURLOPT(CURLOPT_POSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 15), | |
1156 | |
1157 /* Set the referrer page (needed by some CGIs) */ | |
1158 CURLOPT(CURLOPT_REFERER, CURLOPTTYPE_STRINGPOINT, 16), | |
1159 | |
1160 /* Set the FTP PORT string (interface name, named or numerical IP address) | |
1161 Use i.e '-' to use default address. */ | |
1162 CURLOPT(CURLOPT_FTPPORT, CURLOPTTYPE_STRINGPOINT, 17), | |
1163 | |
1164 /* Set the User-Agent string (examined by some CGIs) */ | |
1165 CURLOPT(CURLOPT_USERAGENT, CURLOPTTYPE_STRINGPOINT, 18), | |
1166 | |
1167 /* If the download receives less than "low speed limit" bytes/second | |
1168 * during "low speed time" seconds, the operations is aborted. | |
1169 * You could i.e if you have a pretty high speed connection, abort if | |
1170 * it is less than 2000 bytes/sec during 20 seconds. | |
1171 */ | |
1172 | |
1173 /* Set the "low speed limit" */ | |
1174 CURLOPT(CURLOPT_LOW_SPEED_LIMIT, CURLOPTTYPE_LONG, 19), | |
1175 | |
1176 /* Set the "low speed time" */ | |
1177 CURLOPT(CURLOPT_LOW_SPEED_TIME, CURLOPTTYPE_LONG, 20), | |
1178 | |
1179 /* Set the continuation offset. | |
1180 * | |
1181 * Note there is also a _LARGE version of this key which uses | |
1182 * off_t types, allowing for large file offsets on platforms which | |
1183 * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE. | |
1184 */ | |
1185 CURLOPT(CURLOPT_RESUME_FROM, CURLOPTTYPE_LONG, 21), | |
1186 | |
1187 /* Set cookie in request: */ | |
1188 CURLOPT(CURLOPT_COOKIE, CURLOPTTYPE_STRINGPOINT, 22), | |
1189 | |
1190 /* This points to a linked list of headers, struct curl_slist kind. This | |
1191 list is also used for RTSP (in spite of its name) */ | |
1192 CURLOPT(CURLOPT_HTTPHEADER, CURLOPTTYPE_SLISTPOINT, 23), | |
1193 | |
1194 /* This points to a linked list of post entries, struct curl_httppost */ | |
1195 CURLOPTDEPRECATED(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24, | |
1196 7.56.0, "Use CURLOPT_MIMEPOST"), | |
1197 | |
1198 /* name of the file keeping your private SSL-certificate */ | |
1199 CURLOPT(CURLOPT_SSLCERT, CURLOPTTYPE_STRINGPOINT, 25), | |
1200 | |
1201 /* password for the SSL or SSH private key */ | |
1202 CURLOPT(CURLOPT_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 26), | |
1203 | |
1204 /* send TYPE parameter? */ | |
1205 CURLOPT(CURLOPT_CRLF, CURLOPTTYPE_LONG, 27), | |
1206 | |
1207 /* send linked-list of QUOTE commands */ | |
1208 CURLOPT(CURLOPT_QUOTE, CURLOPTTYPE_SLISTPOINT, 28), | |
1209 | |
1210 /* send FILE * or void * to store headers to, if you use a callback it | |
1211 is simply passed to the callback unmodified */ | |
1212 CURLOPT(CURLOPT_HEADERDATA, CURLOPTTYPE_CBPOINT, 29), | |
1213 | |
1214 /* point to a file to read the initial cookies from, also enables | |
1215 "cookie awareness" */ | |
1216 CURLOPT(CURLOPT_COOKIEFILE, CURLOPTTYPE_STRINGPOINT, 31), | |
1217 | |
1218 /* What version to specifically try to use. | |
1219 See CURL_SSLVERSION defines below. */ | |
1220 CURLOPT(CURLOPT_SSLVERSION, CURLOPTTYPE_VALUES, 32), | |
1221 | |
1222 /* What kind of HTTP time condition to use, see defines */ | |
1223 CURLOPT(CURLOPT_TIMECONDITION, CURLOPTTYPE_VALUES, 33), | |
1224 | |
1225 /* Time to use with the above condition. Specified in number of seconds | |
1226 since 1 Jan 1970 */ | |
1227 CURLOPT(CURLOPT_TIMEVALUE, CURLOPTTYPE_LONG, 34), | |
1228 | |
1229 /* 35 = OBSOLETE */ | |
1230 | |
1231 /* Custom request, for customizing the get command like | |
1232 HTTP: DELETE, TRACE and others | |
1233 FTP: to use a different list command | |
1234 */ | |
1235 CURLOPT(CURLOPT_CUSTOMREQUEST, CURLOPTTYPE_STRINGPOINT, 36), | |
1236 | |
1237 /* FILE handle to use instead of stderr */ | |
1238 CURLOPT(CURLOPT_STDERR, CURLOPTTYPE_OBJECTPOINT, 37), | |
1239 | |
1240 /* 38 is not used */ | |
1241 | |
1242 /* send linked-list of post-transfer QUOTE commands */ | |
1243 CURLOPT(CURLOPT_POSTQUOTE, CURLOPTTYPE_SLISTPOINT, 39), | |
1244 | |
1245 /* OBSOLETE, do not use! */ | |
1246 CURLOPT(CURLOPT_OBSOLETE40, CURLOPTTYPE_OBJECTPOINT, 40), | |
1247 | |
1248 /* talk a lot */ | |
1249 CURLOPT(CURLOPT_VERBOSE, CURLOPTTYPE_LONG, 41), | |
1250 | |
1251 /* throw the header out too */ | |
1252 CURLOPT(CURLOPT_HEADER, CURLOPTTYPE_LONG, 42), | |
1253 | |
1254 /* shut off the progress meter */ | |
1255 CURLOPT(CURLOPT_NOPROGRESS, CURLOPTTYPE_LONG, 43), | |
1256 | |
1257 /* use HEAD to get http document */ | |
1258 CURLOPT(CURLOPT_NOBODY, CURLOPTTYPE_LONG, 44), | |
1259 | |
1260 /* no output on http error codes >= 400 */ | |
1261 CURLOPT(CURLOPT_FAILONERROR, CURLOPTTYPE_LONG, 45), | |
1262 | |
1263 /* this is an upload */ | |
1264 CURLOPT(CURLOPT_UPLOAD, CURLOPTTYPE_LONG, 46), | |
1265 | |
1266 /* HTTP POST method */ | |
1267 CURLOPT(CURLOPT_POST, CURLOPTTYPE_LONG, 47), | |
1268 | |
1269 /* bare names when listing directories */ | |
1270 CURLOPT(CURLOPT_DIRLISTONLY, CURLOPTTYPE_LONG, 48), | |
1271 | |
1272 /* Append instead of overwrite on upload! */ | |
1273 CURLOPT(CURLOPT_APPEND, CURLOPTTYPE_LONG, 50), | |
1274 | |
1275 /* Specify whether to read the user+password from the .netrc or the URL. | |
1276 * This must be one of the CURL_NETRC_* enums below. */ | |
1277 CURLOPT(CURLOPT_NETRC, CURLOPTTYPE_VALUES, 51), | |
1278 | |
1279 /* use Location: Luke! */ | |
1280 CURLOPT(CURLOPT_FOLLOWLOCATION, CURLOPTTYPE_LONG, 52), | |
1281 | |
1282 /* transfer data in text/ASCII format */ | |
1283 CURLOPT(CURLOPT_TRANSFERTEXT, CURLOPTTYPE_LONG, 53), | |
1284 | |
1285 /* HTTP PUT */ | |
1286 CURLOPTDEPRECATED(CURLOPT_PUT, CURLOPTTYPE_LONG, 54, | |
1287 7.12.1, "Use CURLOPT_UPLOAD"), | |
1288 | |
1289 /* 55 = OBSOLETE */ | |
1290 | |
1291 /* DEPRECATED | |
1292 * Function that will be called instead of the internal progress display | |
1293 * function. This function should be defined as the curl_progress_callback | |
1294 * prototype defines. */ | |
1295 CURLOPTDEPRECATED(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56, | |
1296 7.32.0, "Use CURLOPT_XFERINFOFUNCTION"), | |
1297 | |
1298 /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION | |
1299 callbacks */ | |
1300 CURLOPT(CURLOPT_XFERINFODATA, CURLOPTTYPE_CBPOINT, 57), | |
1301 #define CURLOPT_PROGRESSDATA CURLOPT_XFERINFODATA | |
1302 | |
1303 /* We want the referrer field set automatically when following locations */ | |
1304 CURLOPT(CURLOPT_AUTOREFERER, CURLOPTTYPE_LONG, 58), | |
1305 | |
1306 /* Port of the proxy, can be set in the proxy string as well with: | |
1307 "[host]:[port]" */ | |
1308 CURLOPT(CURLOPT_PROXYPORT, CURLOPTTYPE_LONG, 59), | |
1309 | |
1310 /* size of the POST input data, if strlen() is not good to use */ | |
1311 CURLOPT(CURLOPT_POSTFIELDSIZE, CURLOPTTYPE_LONG, 60), | |
1312 | |
1313 /* tunnel non-http operations through an HTTP proxy */ | |
1314 CURLOPT(CURLOPT_HTTPPROXYTUNNEL, CURLOPTTYPE_LONG, 61), | |
1315 | |
1316 /* Set the interface string to use as outgoing network interface */ | |
1317 CURLOPT(CURLOPT_INTERFACE, CURLOPTTYPE_STRINGPOINT, 62), | |
1318 | |
1319 /* Set the krb4/5 security level, this also enables krb4/5 awareness. This | |
1320 * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string | |
1321 * is set but doesn't match one of these, 'private' will be used. */ | |
1322 CURLOPT(CURLOPT_KRBLEVEL, CURLOPTTYPE_STRINGPOINT, 63), | |
1323 | |
1324 /* Set if we should verify the peer in ssl handshake, set 1 to verify. */ | |
1325 CURLOPT(CURLOPT_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 64), | |
1326 | |
1327 /* The CApath or CAfile used to validate the peer certificate | |
1328 this option is used only if SSL_VERIFYPEER is true */ | |
1329 CURLOPT(CURLOPT_CAINFO, CURLOPTTYPE_STRINGPOINT, 65), | |
1330 | |
1331 /* 66 = OBSOLETE */ | |
1332 /* 67 = OBSOLETE */ | |
1333 | |
1334 /* Maximum number of http redirects to follow */ | |
1335 CURLOPT(CURLOPT_MAXREDIRS, CURLOPTTYPE_LONG, 68), | |
1336 | |
1337 /* Pass a long set to 1 to get the date of the requested document (if | |
1338 possible)! Pass a zero to shut it off. */ | |
1339 CURLOPT(CURLOPT_FILETIME, CURLOPTTYPE_LONG, 69), | |
1340 | |
1341 /* This points to a linked list of telnet options */ | |
1342 CURLOPT(CURLOPT_TELNETOPTIONS, CURLOPTTYPE_SLISTPOINT, 70), | |
1343 | |
1344 /* Max amount of cached alive connections */ | |
1345 CURLOPT(CURLOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 71), | |
1346 | |
1347 /* OBSOLETE, do not use! */ | |
1348 CURLOPT(CURLOPT_OBSOLETE72, CURLOPTTYPE_LONG, 72), | |
1349 | |
1350 /* 73 = OBSOLETE */ | |
1351 | |
1352 /* Set to explicitly use a new connection for the upcoming transfer. | |
1353 Do not use this unless you're absolutely sure of this, as it makes the | |
1354 operation slower and is less friendly for the network. */ | |
1355 CURLOPT(CURLOPT_FRESH_CONNECT, CURLOPTTYPE_LONG, 74), | |
1356 | |
1357 /* Set to explicitly forbid the upcoming transfer's connection to be re-used | |
1358 when done. Do not use this unless you're absolutely sure of this, as it | |
1359 makes the operation slower and is less friendly for the network. */ | |
1360 CURLOPT(CURLOPT_FORBID_REUSE, CURLOPTTYPE_LONG, 75), | |
1361 | |
1362 /* Set to a file name that contains random data for libcurl to use to | |
1363 seed the random engine when doing SSL connects. */ | |
1364 CURLOPTDEPRECATED(CURLOPT_RANDOM_FILE, CURLOPTTYPE_STRINGPOINT, 76, | |
1365 7.84.0, "Serves no purpose anymore"), | |
1366 | |
1367 /* Set to the Entropy Gathering Daemon socket pathname */ | |
1368 CURLOPTDEPRECATED(CURLOPT_EGDSOCKET, CURLOPTTYPE_STRINGPOINT, 77, | |
1369 7.84.0, "Serves no purpose anymore"), | |
1370 | |
1371 /* Time-out connect operations after this amount of seconds, if connects are | |
1372 OK within this time, then fine... This only aborts the connect phase. */ | |
1373 CURLOPT(CURLOPT_CONNECTTIMEOUT, CURLOPTTYPE_LONG, 78), | |
1374 | |
1375 /* Function that will be called to store headers (instead of fwrite). The | |
1376 * parameters will use fwrite() syntax, make sure to follow them. */ | |
1377 CURLOPT(CURLOPT_HEADERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 79), | |
1378 | |
1379 /* Set this to force the HTTP request to get back to GET. Only really usable | |
1380 if POST, PUT or a custom request have been used first. | |
1381 */ | |
1382 CURLOPT(CURLOPT_HTTPGET, CURLOPTTYPE_LONG, 80), | |
1383 | |
1384 /* Set if we should verify the Common name from the peer certificate in ssl | |
1385 * handshake, set 1 to check existence, 2 to ensure that it matches the | |
1386 * provided hostname. */ | |
1387 CURLOPT(CURLOPT_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 81), | |
1388 | |
1389 /* Specify which file name to write all known cookies in after completed | |
1390 operation. Set file name to "-" (dash) to make it go to stdout. */ | |
1391 CURLOPT(CURLOPT_COOKIEJAR, CURLOPTTYPE_STRINGPOINT, 82), | |
1392 | |
1393 /* Specify which SSL ciphers to use */ | |
1394 CURLOPT(CURLOPT_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 83), | |
1395 | |
1396 /* Specify which HTTP version to use! This must be set to one of the | |
1397 CURL_HTTP_VERSION* enums set below. */ | |
1398 CURLOPT(CURLOPT_HTTP_VERSION, CURLOPTTYPE_VALUES, 84), | |
1399 | |
1400 /* Specifically switch on or off the FTP engine's use of the EPSV command. By | |
1401 default, that one will always be attempted before the more traditional | |
1402 PASV command. */ | |
1403 CURLOPT(CURLOPT_FTP_USE_EPSV, CURLOPTTYPE_LONG, 85), | |
1404 | |
1405 /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */ | |
1406 CURLOPT(CURLOPT_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 86), | |
1407 | |
1408 /* name of the file keeping your private SSL-key */ | |
1409 CURLOPT(CURLOPT_SSLKEY, CURLOPTTYPE_STRINGPOINT, 87), | |
1410 | |
1411 /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */ | |
1412 CURLOPT(CURLOPT_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 88), | |
1413 | |
1414 /* crypto engine for the SSL-sub system */ | |
1415 CURLOPT(CURLOPT_SSLENGINE, CURLOPTTYPE_STRINGPOINT, 89), | |
1416 | |
1417 /* set the crypto engine for the SSL-sub system as default | |
1418 the param has no meaning... | |
1419 */ | |
1420 CURLOPT(CURLOPT_SSLENGINE_DEFAULT, CURLOPTTYPE_LONG, 90), | |
1421 | |
1422 /* Non-zero value means to use the global dns cache */ | |
1423 /* DEPRECATED, do not use! */ | |
1424 CURLOPTDEPRECATED(CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOPTTYPE_LONG, 91, | |
1425 7.11.1, "Use CURLOPT_SHARE"), | |
1426 | |
1427 /* DNS cache timeout */ | |
1428 CURLOPT(CURLOPT_DNS_CACHE_TIMEOUT, CURLOPTTYPE_LONG, 92), | |
1429 | |
1430 /* send linked-list of pre-transfer QUOTE commands */ | |
1431 CURLOPT(CURLOPT_PREQUOTE, CURLOPTTYPE_SLISTPOINT, 93), | |
1432 | |
1433 /* set the debug function */ | |
1434 CURLOPT(CURLOPT_DEBUGFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 94), | |
1435 | |
1436 /* set the data for the debug function */ | |
1437 CURLOPT(CURLOPT_DEBUGDATA, CURLOPTTYPE_CBPOINT, 95), | |
1438 | |
1439 /* mark this as start of a cookie session */ | |
1440 CURLOPT(CURLOPT_COOKIESESSION, CURLOPTTYPE_LONG, 96), | |
1441 | |
1442 /* The CApath directory used to validate the peer certificate | |
1443 this option is used only if SSL_VERIFYPEER is true */ | |
1444 CURLOPT(CURLOPT_CAPATH, CURLOPTTYPE_STRINGPOINT, 97), | |
1445 | |
1446 /* Instruct libcurl to use a smaller receive buffer */ | |
1447 CURLOPT(CURLOPT_BUFFERSIZE, CURLOPTTYPE_LONG, 98), | |
1448 | |
1449 /* Instruct libcurl to not use any signal/alarm handlers, even when using | |
1450 timeouts. This option is useful for multi-threaded applications. | |
1451 See libcurl-the-guide for more background information. */ | |
1452 CURLOPT(CURLOPT_NOSIGNAL, CURLOPTTYPE_LONG, 99), | |
1453 | |
1454 /* Provide a CURLShare for mutexing non-ts data */ | |
1455 CURLOPT(CURLOPT_SHARE, CURLOPTTYPE_OBJECTPOINT, 100), | |
1456 | |
1457 /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default), | |
1458 CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and | |
1459 CURLPROXY_SOCKS5. */ | |
1460 CURLOPT(CURLOPT_PROXYTYPE, CURLOPTTYPE_VALUES, 101), | |
1461 | |
1462 /* Set the Accept-Encoding string. Use this to tell a server you would like | |
1463 the response to be compressed. Before 7.21.6, this was known as | |
1464 CURLOPT_ENCODING */ | |
1465 CURLOPT(CURLOPT_ACCEPT_ENCODING, CURLOPTTYPE_STRINGPOINT, 102), | |
1466 | |
1467 /* Set pointer to private data */ | |
1468 CURLOPT(CURLOPT_PRIVATE, CURLOPTTYPE_OBJECTPOINT, 103), | |
1469 | |
1470 /* Set aliases for HTTP 200 in the HTTP Response header */ | |
1471 CURLOPT(CURLOPT_HTTP200ALIASES, CURLOPTTYPE_SLISTPOINT, 104), | |
1472 | |
1473 /* Continue to send authentication (user+password) when following locations, | |
1474 even when hostname changed. This can potentially send off the name | |
1475 and password to whatever host the server decides. */ | |
1476 CURLOPT(CURLOPT_UNRESTRICTED_AUTH, CURLOPTTYPE_LONG, 105), | |
1477 | |
1478 /* Specifically switch on or off the FTP engine's use of the EPRT command ( | |
1479 it also disables the LPRT attempt). By default, those ones will always be | |
1480 attempted before the good old traditional PORT command. */ | |
1481 CURLOPT(CURLOPT_FTP_USE_EPRT, CURLOPTTYPE_LONG, 106), | |
1482 | |
1483 /* Set this to a bitmask value to enable the particular authentications | |
1484 methods you like. Use this in combination with CURLOPT_USERPWD. | |
1485 Note that setting multiple bits may cause extra network round-trips. */ | |
1486 CURLOPT(CURLOPT_HTTPAUTH, CURLOPTTYPE_VALUES, 107), | |
1487 | |
1488 /* Set the ssl context callback function, currently only for OpenSSL or | |
1489 WolfSSL ssl_ctx, or mbedTLS mbedtls_ssl_config in the second argument. | |
1490 The function must match the curl_ssl_ctx_callback prototype. */ | |
1491 CURLOPT(CURLOPT_SSL_CTX_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 108), | |
1492 | |
1493 /* Set the userdata for the ssl context callback function's third | |
1494 argument */ | |
1495 CURLOPT(CURLOPT_SSL_CTX_DATA, CURLOPTTYPE_CBPOINT, 109), | |
1496 | |
1497 /* FTP Option that causes missing dirs to be created on the remote server. | |
1498 In 7.19.4 we introduced the convenience enums for this option using the | |
1499 CURLFTP_CREATE_DIR prefix. | |
1500 */ | |
1501 CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110), | |
1502 | |
1503 /* Set this to a bitmask value to enable the particular authentications | |
1504 methods you like. Use this in combination with CURLOPT_PROXYUSERPWD. | |
1505 Note that setting multiple bits may cause extra network round-trips. */ | |
1506 CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111), | |
1507 | |
1508 /* Option that changes the timeout, in seconds, associated with getting a | |
1509 response. This is different from transfer timeout time and essentially | |
1510 places a demand on the server to acknowledge commands in a timely | |
1511 manner. For FTP, SMTP, IMAP and POP3. */ | |
1512 CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112), | |
1513 | |
1514 /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to | |
1515 tell libcurl to use those IP versions only. This only has effect on | |
1516 systems with support for more than one, i.e IPv4 _and_ IPv6. */ | |
1517 CURLOPT(CURLOPT_IPRESOLVE, CURLOPTTYPE_VALUES, 113), | |
1518 | |
1519 /* Set this option to limit the size of a file that will be downloaded from | |
1520 an HTTP or FTP server. | |
1521 | |
1522 Note there is also _LARGE version which adds large file support for | |
1523 platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */ | |
1524 CURLOPT(CURLOPT_MAXFILESIZE, CURLOPTTYPE_LONG, 114), | |
1525 | |
1526 /* See the comment for INFILESIZE above, but in short, specifies | |
1527 * the size of the file being uploaded. -1 means unknown. | |
1528 */ | |
1529 CURLOPT(CURLOPT_INFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 115), | |
1530 | |
1531 /* Sets the continuation offset. There is also a CURLOPTTYPE_LONG version | |
1532 * of this; look above for RESUME_FROM. | |
1533 */ | |
1534 CURLOPT(CURLOPT_RESUME_FROM_LARGE, CURLOPTTYPE_OFF_T, 116), | |
1535 | |
1536 /* Sets the maximum size of data that will be downloaded from | |
1537 * an HTTP or FTP server. See MAXFILESIZE above for the LONG version. | |
1538 */ | |
1539 CURLOPT(CURLOPT_MAXFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 117), | |
1540 | |
1541 /* Set this option to the file name of your .netrc file you want libcurl | |
1542 to parse (using the CURLOPT_NETRC option). If not set, libcurl will do | |
1543 a poor attempt to find the user's home directory and check for a .netrc | |
1544 file in there. */ | |
1545 CURLOPT(CURLOPT_NETRC_FILE, CURLOPTTYPE_STRINGPOINT, 118), | |
1546 | |
1547 /* Enable SSL/TLS for FTP, pick one of: | |
1548 CURLUSESSL_TRY - try using SSL, proceed anyway otherwise | |
1549 CURLUSESSL_CONTROL - SSL for the control connection or fail | |
1550 CURLUSESSL_ALL - SSL for all communication or fail | |
1551 */ | |
1552 CURLOPT(CURLOPT_USE_SSL, CURLOPTTYPE_VALUES, 119), | |
1553 | |
1554 /* The _LARGE version of the standard POSTFIELDSIZE option */ | |
1555 CURLOPT(CURLOPT_POSTFIELDSIZE_LARGE, CURLOPTTYPE_OFF_T, 120), | |
1556 | |
1557 /* Enable/disable the TCP Nagle algorithm */ | |
1558 CURLOPT(CURLOPT_TCP_NODELAY, CURLOPTTYPE_LONG, 121), | |
1559 | |
1560 /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ | |
1561 /* 123 OBSOLETE. Gone in 7.16.0 */ | |
1562 /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ | |
1563 /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ | |
1564 /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ | |
1565 /* 127 OBSOLETE. Gone in 7.16.0 */ | |
1566 /* 128 OBSOLETE. Gone in 7.16.0 */ | |
1567 | |
1568 /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option | |
1569 can be used to change libcurl's default action which is to first try | |
1570 "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK | |
1571 response has been received. | |
1572 | |
1573 Available parameters are: | |
1574 CURLFTPAUTH_DEFAULT - let libcurl decide | |
1575 CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS | |
1576 CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL | |
1577 */ | |
1578 CURLOPT(CURLOPT_FTPSSLAUTH, CURLOPTTYPE_VALUES, 129), | |
1579 | |
1580 CURLOPTDEPRECATED(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130, | |
1581 7.18.0, "Use CURLOPT_SEEKFUNCTION"), | |
1582 CURLOPTDEPRECATED(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131, | |
1583 7.18.0, "Use CURLOPT_SEEKDATA"), | |
1584 | |
1585 /* 132 OBSOLETE. Gone in 7.16.0 */ | |
1586 /* 133 OBSOLETE. Gone in 7.16.0 */ | |
1587 | |
1588 /* null-terminated string for pass on to the FTP server when asked for | |
1589 "account" info */ | |
1590 CURLOPT(CURLOPT_FTP_ACCOUNT, CURLOPTTYPE_STRINGPOINT, 134), | |
1591 | |
1592 /* feed cookie into cookie engine */ | |
1593 CURLOPT(CURLOPT_COOKIELIST, CURLOPTTYPE_STRINGPOINT, 135), | |
1594 | |
1595 /* ignore Content-Length */ | |
1596 CURLOPT(CURLOPT_IGNORE_CONTENT_LENGTH, CURLOPTTYPE_LONG, 136), | |
1597 | |
1598 /* Set to non-zero to skip the IP address received in a 227 PASV FTP server | |
1599 response. Typically used for FTP-SSL purposes but is not restricted to | |
1600 that. libcurl will then instead use the same IP address it used for the | |
1601 control connection. */ | |
1602 CURLOPT(CURLOPT_FTP_SKIP_PASV_IP, CURLOPTTYPE_LONG, 137), | |
1603 | |
1604 /* Select "file method" to use when doing FTP, see the curl_ftpmethod | |
1605 above. */ | |
1606 CURLOPT(CURLOPT_FTP_FILEMETHOD, CURLOPTTYPE_VALUES, 138), | |
1607 | |
1608 /* Local port number to bind the socket to */ | |
1609 CURLOPT(CURLOPT_LOCALPORT, CURLOPTTYPE_LONG, 139), | |
1610 | |
1611 /* Number of ports to try, including the first one set with LOCALPORT. | |
1612 Thus, setting it to 1 will make no additional attempts but the first. | |
1613 */ | |
1614 CURLOPT(CURLOPT_LOCALPORTRANGE, CURLOPTTYPE_LONG, 140), | |
1615 | |
1616 /* no transfer, set up connection and let application use the socket by | |
1617 extracting it with CURLINFO_LASTSOCKET */ | |
1618 CURLOPT(CURLOPT_CONNECT_ONLY, CURLOPTTYPE_LONG, 141), | |
1619 | |
1620 /* Function that will be called to convert from the | |
1621 network encoding (instead of using the iconv calls in libcurl) */ | |
1622 CURLOPTDEPRECATED(CURLOPT_CONV_FROM_NETWORK_FUNCTION, | |
1623 CURLOPTTYPE_FUNCTIONPOINT, 142, | |
1624 7.82.0, "Serves no purpose anymore"), | |
1625 | |
1626 /* Function that will be called to convert to the | |
1627 network encoding (instead of using the iconv calls in libcurl) */ | |
1628 CURLOPTDEPRECATED(CURLOPT_CONV_TO_NETWORK_FUNCTION, | |
1629 CURLOPTTYPE_FUNCTIONPOINT, 143, | |
1630 7.82.0, "Serves no purpose anymore"), | |
1631 | |
1632 /* Function that will be called to convert from UTF8 | |
1633 (instead of using the iconv calls in libcurl) | |
1634 Note that this is used only for SSL certificate processing */ | |
1635 CURLOPTDEPRECATED(CURLOPT_CONV_FROM_UTF8_FUNCTION, | |
1636 CURLOPTTYPE_FUNCTIONPOINT, 144, | |
1637 7.82.0, "Serves no purpose anymore"), | |
1638 | |
1639 /* if the connection proceeds too quickly then need to slow it down */ | |
1640 /* limit-rate: maximum number of bytes per second to send or receive */ | |
1641 CURLOPT(CURLOPT_MAX_SEND_SPEED_LARGE, CURLOPTTYPE_OFF_T, 145), | |
1642 CURLOPT(CURLOPT_MAX_RECV_SPEED_LARGE, CURLOPTTYPE_OFF_T, 146), | |
1643 | |
1644 /* Pointer to command string to send if USER/PASS fails. */ | |
1645 CURLOPT(CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPTTYPE_STRINGPOINT, 147), | |
1646 | |
1647 /* callback function for setting socket options */ | |
1648 CURLOPT(CURLOPT_SOCKOPTFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 148), | |
1649 CURLOPT(CURLOPT_SOCKOPTDATA, CURLOPTTYPE_CBPOINT, 149), | |
1650 | |
1651 /* set to 0 to disable session ID re-use for this transfer, default is | |
1652 enabled (== 1) */ | |
1653 CURLOPT(CURLOPT_SSL_SESSIONID_CACHE, CURLOPTTYPE_LONG, 150), | |
1654 | |
1655 /* allowed SSH authentication methods */ | |
1656 CURLOPT(CURLOPT_SSH_AUTH_TYPES, CURLOPTTYPE_VALUES, 151), | |
1657 | |
1658 /* Used by scp/sftp to do public/private key authentication */ | |
1659 CURLOPT(CURLOPT_SSH_PUBLIC_KEYFILE, CURLOPTTYPE_STRINGPOINT, 152), | |
1660 CURLOPT(CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPTTYPE_STRINGPOINT, 153), | |
1661 | |
1662 /* Send CCC (Clear Command Channel) after authentication */ | |
1663 CURLOPT(CURLOPT_FTP_SSL_CCC, CURLOPTTYPE_LONG, 154), | |
1664 | |
1665 /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */ | |
1666 CURLOPT(CURLOPT_TIMEOUT_MS, CURLOPTTYPE_LONG, 155), | |
1667 CURLOPT(CURLOPT_CONNECTTIMEOUT_MS, CURLOPTTYPE_LONG, 156), | |
1668 | |
1669 /* set to zero to disable the libcurl's decoding and thus pass the raw body | |
1670 data to the application even when it is encoded/compressed */ | |
1671 CURLOPT(CURLOPT_HTTP_TRANSFER_DECODING, CURLOPTTYPE_LONG, 157), | |
1672 CURLOPT(CURLOPT_HTTP_CONTENT_DECODING, CURLOPTTYPE_LONG, 158), | |
1673 | |
1674 /* Permission used when creating new files and directories on the remote | |
1675 server for protocols that support it, SFTP/SCP/FILE */ | |
1676 CURLOPT(CURLOPT_NEW_FILE_PERMS, CURLOPTTYPE_LONG, 159), | |
1677 CURLOPT(CURLOPT_NEW_DIRECTORY_PERMS, CURLOPTTYPE_LONG, 160), | |
1678 | |
1679 /* Set the behavior of POST when redirecting. Values must be set to one | |
1680 of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */ | |
1681 CURLOPT(CURLOPT_POSTREDIR, CURLOPTTYPE_VALUES, 161), | |
1682 | |
1683 /* used by scp/sftp to verify the host's public key */ | |
1684 CURLOPT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, CURLOPTTYPE_STRINGPOINT, 162), | |
1685 | |
1686 /* Callback function for opening socket (instead of socket(2)). Optionally, | |
1687 callback is able change the address or refuse to connect returning | |
1688 CURL_SOCKET_BAD. The callback should have type | |
1689 curl_opensocket_callback */ | |
1690 CURLOPT(CURLOPT_OPENSOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 163), | |
1691 CURLOPT(CURLOPT_OPENSOCKETDATA, CURLOPTTYPE_CBPOINT, 164), | |
1692 | |
1693 /* POST volatile input fields. */ | |
1694 CURLOPT(CURLOPT_COPYPOSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 165), | |
1695 | |
1696 /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */ | |
1697 CURLOPT(CURLOPT_PROXY_TRANSFER_MODE, CURLOPTTYPE_LONG, 166), | |
1698 | |
1699 /* Callback function for seeking in the input stream */ | |
1700 CURLOPT(CURLOPT_SEEKFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 167), | |
1701 CURLOPT(CURLOPT_SEEKDATA, CURLOPTTYPE_CBPOINT, 168), | |
1702 | |
1703 /* CRL file */ | |
1704 CURLOPT(CURLOPT_CRLFILE, CURLOPTTYPE_STRINGPOINT, 169), | |
1705 | |
1706 /* Issuer certificate */ | |
1707 CURLOPT(CURLOPT_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 170), | |
1708 | |
1709 /* (IPv6) Address scope */ | |
1710 CURLOPT(CURLOPT_ADDRESS_SCOPE, CURLOPTTYPE_LONG, 171), | |
1711 | |
1712 /* Collect certificate chain info and allow it to get retrievable with | |
1713 CURLINFO_CERTINFO after the transfer is complete. */ | |
1714 CURLOPT(CURLOPT_CERTINFO, CURLOPTTYPE_LONG, 172), | |
1715 | |
1716 /* "name" and "pwd" to use when fetching. */ | |
1717 CURLOPT(CURLOPT_USERNAME, CURLOPTTYPE_STRINGPOINT, 173), | |
1718 CURLOPT(CURLOPT_PASSWORD, CURLOPTTYPE_STRINGPOINT, 174), | |
1719 | |
1720 /* "name" and "pwd" to use with Proxy when fetching. */ | |
1721 CURLOPT(CURLOPT_PROXYUSERNAME, CURLOPTTYPE_STRINGPOINT, 175), | |
1722 CURLOPT(CURLOPT_PROXYPASSWORD, CURLOPTTYPE_STRINGPOINT, 176), | |
1723 | |
1724 /* Comma separated list of hostnames defining no-proxy zones. These should | |
1725 match both hostnames directly, and hostnames within a domain. For | |
1726 example, local.com will match local.com and www.local.com, but NOT | |
1727 notlocal.com or www.notlocal.com. For compatibility with other | |
1728 implementations of this, .local.com will be considered to be the same as | |
1729 local.com. A single * is the only valid wildcard, and effectively | |
1730 disables the use of proxy. */ | |
1731 CURLOPT(CURLOPT_NOPROXY, CURLOPTTYPE_STRINGPOINT, 177), | |
1732 | |
1733 /* block size for TFTP transfers */ | |
1734 CURLOPT(CURLOPT_TFTP_BLKSIZE, CURLOPTTYPE_LONG, 178), | |
1735 | |
1736 /* Socks Service */ | |
1737 /* DEPRECATED, do not use! */ | |
1738 CURLOPTDEPRECATED(CURLOPT_SOCKS5_GSSAPI_SERVICE, | |
1739 CURLOPTTYPE_STRINGPOINT, 179, | |
1740 7.49.0, "Use CURLOPT_PROXY_SERVICE_NAME"), | |
1741 | |
1742 /* Socks Service */ | |
1743 CURLOPT(CURLOPT_SOCKS5_GSSAPI_NEC, CURLOPTTYPE_LONG, 180), | |
1744 | |
1745 /* set the bitmask for the protocols that are allowed to be used for the | |
1746 transfer, which thus helps the app which takes URLs from users or other | |
1747 external inputs and want to restrict what protocol(s) to deal | |
1748 with. Defaults to CURLPROTO_ALL. */ | |
1749 CURLOPTDEPRECATED(CURLOPT_PROTOCOLS, CURLOPTTYPE_LONG, 181, | |
1750 7.85.0, "Use CURLOPT_PROTOCOLS_STR"), | |
1751 | |
1752 /* set the bitmask for the protocols that libcurl is allowed to follow to, | |
1753 as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs | |
1754 to be set in both bitmasks to be allowed to get redirected to. */ | |
1755 CURLOPTDEPRECATED(CURLOPT_REDIR_PROTOCOLS, CURLOPTTYPE_LONG, 182, | |
1756 7.85.0, "Use CURLOPT_REDIR_PROTOCOLS_STR"), | |
1757 | |
1758 /* set the SSH knownhost file name to use */ | |
1759 CURLOPT(CURLOPT_SSH_KNOWNHOSTS, CURLOPTTYPE_STRINGPOINT, 183), | |
1760 | |
1761 /* set the SSH host key callback, must point to a curl_sshkeycallback | |
1762 function */ | |
1763 CURLOPT(CURLOPT_SSH_KEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 184), | |
1764 | |
1765 /* set the SSH host key callback custom pointer */ | |
1766 CURLOPT(CURLOPT_SSH_KEYDATA, CURLOPTTYPE_CBPOINT, 185), | |
1767 | |
1768 /* set the SMTP mail originator */ | |
1769 CURLOPT(CURLOPT_MAIL_FROM, CURLOPTTYPE_STRINGPOINT, 186), | |
1770 | |
1771 /* set the list of SMTP mail receiver(s) */ | |
1772 CURLOPT(CURLOPT_MAIL_RCPT, CURLOPTTYPE_SLISTPOINT, 187), | |
1773 | |
1774 /* FTP: send PRET before PASV */ | |
1775 CURLOPT(CURLOPT_FTP_USE_PRET, CURLOPTTYPE_LONG, 188), | |
1776 | |
1777 /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */ | |
1778 CURLOPT(CURLOPT_RTSP_REQUEST, CURLOPTTYPE_VALUES, 189), | |
1779 | |
1780 /* The RTSP session identifier */ | |
1781 CURLOPT(CURLOPT_RTSP_SESSION_ID, CURLOPTTYPE_STRINGPOINT, 190), | |
1782 | |
1783 /* The RTSP stream URI */ | |
1784 CURLOPT(CURLOPT_RTSP_STREAM_URI, CURLOPTTYPE_STRINGPOINT, 191), | |
1785 | |
1786 /* The Transport: header to use in RTSP requests */ | |
1787 CURLOPT(CURLOPT_RTSP_TRANSPORT, CURLOPTTYPE_STRINGPOINT, 192), | |
1788 | |
1789 /* Manually initialize the client RTSP CSeq for this handle */ | |
1790 CURLOPT(CURLOPT_RTSP_CLIENT_CSEQ, CURLOPTTYPE_LONG, 193), | |
1791 | |
1792 /* Manually initialize the server RTSP CSeq for this handle */ | |
1793 CURLOPT(CURLOPT_RTSP_SERVER_CSEQ, CURLOPTTYPE_LONG, 194), | |
1794 | |
1795 /* The stream to pass to INTERLEAVEFUNCTION. */ | |
1796 CURLOPT(CURLOPT_INTERLEAVEDATA, CURLOPTTYPE_CBPOINT, 195), | |
1797 | |
1798 /* Let the application define a custom write method for RTP data */ | |
1799 CURLOPT(CURLOPT_INTERLEAVEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 196), | |
1800 | |
1801 /* Turn on wildcard matching */ | |
1802 CURLOPT(CURLOPT_WILDCARDMATCH, CURLOPTTYPE_LONG, 197), | |
1803 | |
1804 /* Directory matching callback called before downloading of an | |
1805 individual file (chunk) started */ | |
1806 CURLOPT(CURLOPT_CHUNK_BGN_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 198), | |
1807 | |
1808 /* Directory matching callback called after the file (chunk) | |
1809 was downloaded, or skipped */ | |
1810 CURLOPT(CURLOPT_CHUNK_END_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 199), | |
1811 | |
1812 /* Change match (fnmatch-like) callback for wildcard matching */ | |
1813 CURLOPT(CURLOPT_FNMATCH_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 200), | |
1814 | |
1815 /* Let the application define custom chunk data pointer */ | |
1816 CURLOPT(CURLOPT_CHUNK_DATA, CURLOPTTYPE_CBPOINT, 201), | |
1817 | |
1818 /* FNMATCH_FUNCTION user pointer */ | |
1819 CURLOPT(CURLOPT_FNMATCH_DATA, CURLOPTTYPE_CBPOINT, 202), | |
1820 | |
1821 /* send linked-list of name:port:address sets */ | |
1822 CURLOPT(CURLOPT_RESOLVE, CURLOPTTYPE_SLISTPOINT, 203), | |
1823 | |
1824 /* Set a username for authenticated TLS */ | |
1825 CURLOPT(CURLOPT_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 204), | |
1826 | |
1827 /* Set a password for authenticated TLS */ | |
1828 CURLOPT(CURLOPT_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 205), | |
1829 | |
1830 /* Set authentication type for authenticated TLS */ | |
1831 CURLOPT(CURLOPT_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 206), | |
1832 | |
1833 /* Set to 1 to enable the "TE:" header in HTTP requests to ask for | |
1834 compressed transfer-encoded responses. Set to 0 to disable the use of TE: | |
1835 in outgoing requests. The current default is 0, but it might change in a | |
1836 future libcurl release. | |
1837 | |
1838 libcurl will ask for the compressed methods it knows of, and if that | |
1839 isn't any, it will not ask for transfer-encoding at all even if this | |
1840 option is set to 1. | |
1841 | |
1842 */ | |
1843 CURLOPT(CURLOPT_TRANSFER_ENCODING, CURLOPTTYPE_LONG, 207), | |
1844 | |
1845 /* Callback function for closing socket (instead of close(2)). The callback | |
1846 should have type curl_closesocket_callback */ | |
1847 CURLOPT(CURLOPT_CLOSESOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 208), | |
1848 CURLOPT(CURLOPT_CLOSESOCKETDATA, CURLOPTTYPE_CBPOINT, 209), | |
1849 | |
1850 /* allow GSSAPI credential delegation */ | |
1851 CURLOPT(CURLOPT_GSSAPI_DELEGATION, CURLOPTTYPE_VALUES, 210), | |
1852 | |
1853 /* Set the name servers to use for DNS resolution */ | |
1854 CURLOPT(CURLOPT_DNS_SERVERS, CURLOPTTYPE_STRINGPOINT, 211), | |
1855 | |
1856 /* Time-out accept operations (currently for FTP only) after this amount | |
1857 of milliseconds. */ | |
1858 CURLOPT(CURLOPT_ACCEPTTIMEOUT_MS, CURLOPTTYPE_LONG, 212), | |
1859 | |
1860 /* Set TCP keepalive */ | |
1861 CURLOPT(CURLOPT_TCP_KEEPALIVE, CURLOPTTYPE_LONG, 213), | |
1862 | |
1863 /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */ | |
1864 CURLOPT(CURLOPT_TCP_KEEPIDLE, CURLOPTTYPE_LONG, 214), | |
1865 CURLOPT(CURLOPT_TCP_KEEPINTVL, CURLOPTTYPE_LONG, 215), | |
1866 | |
1867 /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */ | |
1868 CURLOPT(CURLOPT_SSL_OPTIONS, CURLOPTTYPE_VALUES, 216), | |
1869 | |
1870 /* Set the SMTP auth originator */ | |
1871 CURLOPT(CURLOPT_MAIL_AUTH, CURLOPTTYPE_STRINGPOINT, 217), | |
1872 | |
1873 /* Enable/disable SASL initial response */ | |
1874 CURLOPT(CURLOPT_SASL_IR, CURLOPTTYPE_LONG, 218), | |
1875 | |
1876 /* Function that will be called instead of the internal progress display | |
1877 * function. This function should be defined as the curl_xferinfo_callback | |
1878 * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */ | |
1879 CURLOPT(CURLOPT_XFERINFOFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 219), | |
1880 | |
1881 /* The XOAUTH2 bearer token */ | |
1882 CURLOPT(CURLOPT_XOAUTH2_BEARER, CURLOPTTYPE_STRINGPOINT, 220), | |
1883 | |
1884 /* Set the interface string to use as outgoing network | |
1885 * interface for DNS requests. | |
1886 * Only supported by the c-ares DNS backend */ | |
1887 CURLOPT(CURLOPT_DNS_INTERFACE, CURLOPTTYPE_STRINGPOINT, 221), | |
1888 | |
1889 /* Set the local IPv4 address to use for outgoing DNS requests. | |
1890 * Only supported by the c-ares DNS backend */ | |
1891 CURLOPT(CURLOPT_DNS_LOCAL_IP4, CURLOPTTYPE_STRINGPOINT, 222), | |
1892 | |
1893 /* Set the local IPv6 address to use for outgoing DNS requests. | |
1894 * Only supported by the c-ares DNS backend */ | |
1895 CURLOPT(CURLOPT_DNS_LOCAL_IP6, CURLOPTTYPE_STRINGPOINT, 223), | |
1896 | |
1897 /* Set authentication options directly */ | |
1898 CURLOPT(CURLOPT_LOGIN_OPTIONS, CURLOPTTYPE_STRINGPOINT, 224), | |
1899 | |
1900 /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */ | |
1901 CURLOPTDEPRECATED(CURLOPT_SSL_ENABLE_NPN, CURLOPTTYPE_LONG, 225, | |
1902 7.86.0, "Has no function"), | |
1903 | |
1904 /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */ | |
1905 CURLOPT(CURLOPT_SSL_ENABLE_ALPN, CURLOPTTYPE_LONG, 226), | |
1906 | |
1907 /* Time to wait for a response to an HTTP request containing an | |
1908 * Expect: 100-continue header before sending the data anyway. */ | |
1909 CURLOPT(CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOPTTYPE_LONG, 227), | |
1910 | |
1911 /* This points to a linked list of headers used for proxy requests only, | |
1912 struct curl_slist kind */ | |
1913 CURLOPT(CURLOPT_PROXYHEADER, CURLOPTTYPE_SLISTPOINT, 228), | |
1914 | |
1915 /* Pass in a bitmask of "header options" */ | |
1916 CURLOPT(CURLOPT_HEADEROPT, CURLOPTTYPE_VALUES, 229), | |
1917 | |
1918 /* The public key in DER form used to validate the peer public key | |
1919 this option is used only if SSL_VERIFYPEER is true */ | |
1920 CURLOPT(CURLOPT_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 230), | |
1921 | |
1922 /* Path to Unix domain socket */ | |
1923 CURLOPT(CURLOPT_UNIX_SOCKET_PATH, CURLOPTTYPE_STRINGPOINT, 231), | |
1924 | |
1925 /* Set if we should verify the certificate status. */ | |
1926 CURLOPT(CURLOPT_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 232), | |
1927 | |
1928 /* Set if we should enable TLS false start. */ | |
1929 CURLOPT(CURLOPT_SSL_FALSESTART, CURLOPTTYPE_LONG, 233), | |
1930 | |
1931 /* Do not squash dot-dot sequences */ | |
1932 CURLOPT(CURLOPT_PATH_AS_IS, CURLOPTTYPE_LONG, 234), | |
1933 | |
1934 /* Proxy Service Name */ | |
1935 CURLOPT(CURLOPT_PROXY_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 235), | |
1936 | |
1937 /* Service Name */ | |
1938 CURLOPT(CURLOPT_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 236), | |
1939 | |
1940 /* Wait/don't wait for pipe/mutex to clarify */ | |
1941 CURLOPT(CURLOPT_PIPEWAIT, CURLOPTTYPE_LONG, 237), | |
1942 | |
1943 /* Set the protocol used when curl is given a URL without a protocol */ | |
1944 CURLOPT(CURLOPT_DEFAULT_PROTOCOL, CURLOPTTYPE_STRINGPOINT, 238), | |
1945 | |
1946 /* Set stream weight, 1 - 256 (default is 16) */ | |
1947 CURLOPT(CURLOPT_STREAM_WEIGHT, CURLOPTTYPE_LONG, 239), | |
1948 | |
1949 /* Set stream dependency on another CURL handle */ | |
1950 CURLOPT(CURLOPT_STREAM_DEPENDS, CURLOPTTYPE_OBJECTPOINT, 240), | |
1951 | |
1952 /* Set E-xclusive stream dependency on another CURL handle */ | |
1953 CURLOPT(CURLOPT_STREAM_DEPENDS_E, CURLOPTTYPE_OBJECTPOINT, 241), | |
1954 | |
1955 /* Do not send any tftp option requests to the server */ | |
1956 CURLOPT(CURLOPT_TFTP_NO_OPTIONS, CURLOPTTYPE_LONG, 242), | |
1957 | |
1958 /* Linked-list of host:port:connect-to-host:connect-to-port, | |
1959 overrides the URL's host:port (only for the network layer) */ | |
1960 CURLOPT(CURLOPT_CONNECT_TO, CURLOPTTYPE_SLISTPOINT, 243), | |
1961 | |
1962 /* Set TCP Fast Open */ | |
1963 CURLOPT(CURLOPT_TCP_FASTOPEN, CURLOPTTYPE_LONG, 244), | |
1964 | |
1965 /* Continue to send data if the server responds early with an | |
1966 * HTTP status code >= 300 */ | |
1967 CURLOPT(CURLOPT_KEEP_SENDING_ON_ERROR, CURLOPTTYPE_LONG, 245), | |
1968 | |
1969 /* The CApath or CAfile used to validate the proxy certificate | |
1970 this option is used only if PROXY_SSL_VERIFYPEER is true */ | |
1971 CURLOPT(CURLOPT_PROXY_CAINFO, CURLOPTTYPE_STRINGPOINT, 246), | |
1972 | |
1973 /* The CApath directory used to validate the proxy certificate | |
1974 this option is used only if PROXY_SSL_VERIFYPEER is true */ | |
1975 CURLOPT(CURLOPT_PROXY_CAPATH, CURLOPTTYPE_STRINGPOINT, 247), | |
1976 | |
1977 /* Set if we should verify the proxy in ssl handshake, | |
1978 set 1 to verify. */ | |
1979 CURLOPT(CURLOPT_PROXY_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 248), | |
1980 | |
1981 /* Set if we should verify the Common name from the proxy certificate in ssl | |
1982 * handshake, set 1 to check existence, 2 to ensure that it matches | |
1983 * the provided hostname. */ | |
1984 CURLOPT(CURLOPT_PROXY_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 249), | |
1985 | |
1986 /* What version to specifically try to use for proxy. | |
1987 See CURL_SSLVERSION defines below. */ | |
1988 CURLOPT(CURLOPT_PROXY_SSLVERSION, CURLOPTTYPE_VALUES, 250), | |
1989 | |
1990 /* Set a username for authenticated TLS for proxy */ | |
1991 CURLOPT(CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 251), | |
1992 | |
1993 /* Set a password for authenticated TLS for proxy */ | |
1994 CURLOPT(CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 252), | |
1995 | |
1996 /* Set authentication type for authenticated TLS for proxy */ | |
1997 CURLOPT(CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 253), | |
1998 | |
1999 /* name of the file keeping your private SSL-certificate for proxy */ | |
2000 CURLOPT(CURLOPT_PROXY_SSLCERT, CURLOPTTYPE_STRINGPOINT, 254), | |
2001 | |
2002 /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for | |
2003 proxy */ | |
2004 CURLOPT(CURLOPT_PROXY_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 255), | |
2005 | |
2006 /* name of the file keeping your private SSL-key for proxy */ | |
2007 CURLOPT(CURLOPT_PROXY_SSLKEY, CURLOPTTYPE_STRINGPOINT, 256), | |
2008 | |
2009 /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for | |
2010 proxy */ | |
2011 CURLOPT(CURLOPT_PROXY_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 257), | |
2012 | |
2013 /* password for the SSL private key for proxy */ | |
2014 CURLOPT(CURLOPT_PROXY_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 258), | |
2015 | |
2016 /* Specify which SSL ciphers to use for proxy */ | |
2017 CURLOPT(CURLOPT_PROXY_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 259), | |
2018 | |
2019 /* CRL file for proxy */ | |
2020 CURLOPT(CURLOPT_PROXY_CRLFILE, CURLOPTTYPE_STRINGPOINT, 260), | |
2021 | |
2022 /* Enable/disable specific SSL features with a bitmask for proxy, see | |
2023 CURLSSLOPT_* */ | |
2024 CURLOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLOPTTYPE_LONG, 261), | |
2025 | |
2026 /* Name of pre proxy to use. */ | |
2027 CURLOPT(CURLOPT_PRE_PROXY, CURLOPTTYPE_STRINGPOINT, 262), | |
2028 | |
2029 /* The public key in DER form used to validate the proxy public key | |
2030 this option is used only if PROXY_SSL_VERIFYPEER is true */ | |
2031 CURLOPT(CURLOPT_PROXY_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 263), | |
2032 | |
2033 /* Path to an abstract Unix domain socket */ | |
2034 CURLOPT(CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPTTYPE_STRINGPOINT, 264), | |
2035 | |
2036 /* Suppress proxy CONNECT response headers from user callbacks */ | |
2037 CURLOPT(CURLOPT_SUPPRESS_CONNECT_HEADERS, CURLOPTTYPE_LONG, 265), | |
2038 | |
2039 /* The request target, instead of extracted from the URL */ | |
2040 CURLOPT(CURLOPT_REQUEST_TARGET, CURLOPTTYPE_STRINGPOINT, 266), | |
2041 | |
2042 /* bitmask of allowed auth methods for connections to SOCKS5 proxies */ | |
2043 CURLOPT(CURLOPT_SOCKS5_AUTH, CURLOPTTYPE_LONG, 267), | |
2044 | |
2045 /* Enable/disable SSH compression */ | |
2046 CURLOPT(CURLOPT_SSH_COMPRESSION, CURLOPTTYPE_LONG, 268), | |
2047 | |
2048 /* Post MIME data. */ | |
2049 CURLOPT(CURLOPT_MIMEPOST, CURLOPTTYPE_OBJECTPOINT, 269), | |
2050 | |
2051 /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of | |
2052 seconds since 1 Jan 1970. */ | |
2053 CURLOPT(CURLOPT_TIMEVALUE_LARGE, CURLOPTTYPE_OFF_T, 270), | |
2054 | |
2055 /* Head start in milliseconds to give happy eyeballs. */ | |
2056 CURLOPT(CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CURLOPTTYPE_LONG, 271), | |
2057 | |
2058 /* Function that will be called before a resolver request is made */ | |
2059 CURLOPT(CURLOPT_RESOLVER_START_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 272), | |
2060 | |
2061 /* User data to pass to the resolver start callback. */ | |
2062 CURLOPT(CURLOPT_RESOLVER_START_DATA, CURLOPTTYPE_CBPOINT, 273), | |
2063 | |
2064 /* send HAProxy PROXY protocol header? */ | |
2065 CURLOPT(CURLOPT_HAPROXYPROTOCOL, CURLOPTTYPE_LONG, 274), | |
2066 | |
2067 /* shuffle addresses before use when DNS returns multiple */ | |
2068 CURLOPT(CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOPTTYPE_LONG, 275), | |
2069 | |
2070 /* Specify which TLS 1.3 ciphers suites to use */ | |
2071 CURLOPT(CURLOPT_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 276), | |
2072 CURLOPT(CURLOPT_PROXY_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 277), | |
2073 | |
2074 /* Disallow specifying username/login in URL. */ | |
2075 CURLOPT(CURLOPT_DISALLOW_USERNAME_IN_URL, CURLOPTTYPE_LONG, 278), | |
2076 | |
2077 /* DNS-over-HTTPS URL */ | |
2078 CURLOPT(CURLOPT_DOH_URL, CURLOPTTYPE_STRINGPOINT, 279), | |
2079 | |
2080 /* Preferred buffer size to use for uploads */ | |
2081 CURLOPT(CURLOPT_UPLOAD_BUFFERSIZE, CURLOPTTYPE_LONG, 280), | |
2082 | |
2083 /* Time in ms between connection upkeep calls for long-lived connections. */ | |
2084 CURLOPT(CURLOPT_UPKEEP_INTERVAL_MS, CURLOPTTYPE_LONG, 281), | |
2085 | |
2086 /* Specify URL using CURL URL API. */ | |
2087 CURLOPT(CURLOPT_CURLU, CURLOPTTYPE_OBJECTPOINT, 282), | |
2088 | |
2089 /* add trailing data just after no more data is available */ | |
2090 CURLOPT(CURLOPT_TRAILERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 283), | |
2091 | |
2092 /* pointer to be passed to HTTP_TRAILER_FUNCTION */ | |
2093 CURLOPT(CURLOPT_TRAILERDATA, CURLOPTTYPE_CBPOINT, 284), | |
2094 | |
2095 /* set this to 1L to allow HTTP/0.9 responses or 0L to disallow */ | |
2096 CURLOPT(CURLOPT_HTTP09_ALLOWED, CURLOPTTYPE_LONG, 285), | |
2097 | |
2098 /* alt-svc control bitmask */ | |
2099 CURLOPT(CURLOPT_ALTSVC_CTRL, CURLOPTTYPE_LONG, 286), | |
2100 | |
2101 /* alt-svc cache file name to possibly read from/write to */ | |
2102 CURLOPT(CURLOPT_ALTSVC, CURLOPTTYPE_STRINGPOINT, 287), | |
2103 | |
2104 /* maximum age (idle time) of a connection to consider it for reuse | |
2105 * (in seconds) */ | |
2106 CURLOPT(CURLOPT_MAXAGE_CONN, CURLOPTTYPE_LONG, 288), | |
2107 | |
2108 /* SASL authorization identity */ | |
2109 CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289), | |
2110 | |
2111 /* allow RCPT TO command to fail for some recipients */ | |
2112 CURLOPT(CURLOPT_MAIL_RCPT_ALLLOWFAILS, CURLOPTTYPE_LONG, 290), | |
2113 | |
2114 /* the private SSL-certificate as a "blob" */ | |
2115 CURLOPT(CURLOPT_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 291), | |
2116 CURLOPT(CURLOPT_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 292), | |
2117 CURLOPT(CURLOPT_PROXY_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 293), | |
2118 CURLOPT(CURLOPT_PROXY_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 294), | |
2119 CURLOPT(CURLOPT_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 295), | |
2120 | |
2121 /* Issuer certificate for proxy */ | |
2122 CURLOPT(CURLOPT_PROXY_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 296), | |
2123 CURLOPT(CURLOPT_PROXY_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 297), | |
2124 | |
2125 /* the EC curves requested by the TLS client (RFC 8422, 5.1); | |
2126 * OpenSSL support via 'set_groups'/'set_curves': | |
2127 * https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html | |
2128 */ | |
2129 CURLOPT(CURLOPT_SSL_EC_CURVES, CURLOPTTYPE_STRINGPOINT, 298), | |
2130 | |
2131 /* HSTS bitmask */ | |
2132 CURLOPT(CURLOPT_HSTS_CTRL, CURLOPTTYPE_LONG, 299), | |
2133 /* HSTS file name */ | |
2134 CURLOPT(CURLOPT_HSTS, CURLOPTTYPE_STRINGPOINT, 300), | |
2135 | |
2136 /* HSTS read callback */ | |
2137 CURLOPT(CURLOPT_HSTSREADFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 301), | |
2138 CURLOPT(CURLOPT_HSTSREADDATA, CURLOPTTYPE_CBPOINT, 302), | |
2139 | |
2140 /* HSTS write callback */ | |
2141 CURLOPT(CURLOPT_HSTSWRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 303), | |
2142 CURLOPT(CURLOPT_HSTSWRITEDATA, CURLOPTTYPE_CBPOINT, 304), | |
2143 | |
2144 /* Parameters for V4 signature */ | |
2145 CURLOPT(CURLOPT_AWS_SIGV4, CURLOPTTYPE_STRINGPOINT, 305), | |
2146 | |
2147 /* Same as CURLOPT_SSL_VERIFYPEER but for DoH (DNS-over-HTTPS) servers. */ | |
2148 CURLOPT(CURLOPT_DOH_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 306), | |
2149 | |
2150 /* Same as CURLOPT_SSL_VERIFYHOST but for DoH (DNS-over-HTTPS) servers. */ | |
2151 CURLOPT(CURLOPT_DOH_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 307), | |
2152 | |
2153 /* Same as CURLOPT_SSL_VERIFYSTATUS but for DoH (DNS-over-HTTPS) servers. */ | |
2154 CURLOPT(CURLOPT_DOH_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 308), | |
2155 | |
2156 /* The CA certificates as "blob" used to validate the peer certificate | |
2157 this option is used only if SSL_VERIFYPEER is true */ | |
2158 CURLOPT(CURLOPT_CAINFO_BLOB, CURLOPTTYPE_BLOB, 309), | |
2159 | |
2160 /* The CA certificates as "blob" used to validate the proxy certificate | |
2161 this option is used only if PROXY_SSL_VERIFYPEER is true */ | |
2162 CURLOPT(CURLOPT_PROXY_CAINFO_BLOB, CURLOPTTYPE_BLOB, 310), | |
2163 | |
2164 /* used by scp/sftp to verify the host's public key */ | |
2165 CURLOPT(CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256, CURLOPTTYPE_STRINGPOINT, 311), | |
2166 | |
2167 /* Function that will be called immediately before the initial request | |
2168 is made on a connection (after any protocol negotiation step). */ | |
2169 CURLOPT(CURLOPT_PREREQFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 312), | |
2170 | |
2171 /* Data passed to the CURLOPT_PREREQFUNCTION callback */ | |
2172 CURLOPT(CURLOPT_PREREQDATA, CURLOPTTYPE_CBPOINT, 313), | |
2173 | |
2174 /* maximum age (since creation) of a connection to consider it for reuse | |
2175 * (in seconds) */ | |
2176 CURLOPT(CURLOPT_MAXLIFETIME_CONN, CURLOPTTYPE_LONG, 314), | |
2177 | |
2178 /* Set MIME option flags. */ | |
2179 CURLOPT(CURLOPT_MIME_OPTIONS, CURLOPTTYPE_LONG, 315), | |
2180 | |
2181 /* set the SSH host key callback, must point to a curl_sshkeycallback | |
2182 function */ | |
2183 CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316), | |
2184 | |
2185 /* set the SSH host key callback custom pointer */ | |
2186 CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317), | |
2187 | |
2188 /* specify which protocols that are allowed to be used for the transfer, | |
2189 which thus helps the app which takes URLs from users or other external | |
2190 inputs and want to restrict what protocol(s) to deal with. Defaults to | |
2191 all built-in protocols. */ | |
2192 CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318), | |
2193 | |
2194 /* specify which protocols that libcurl is allowed to follow directs to */ | |
2195 CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319), | |
2196 | |
2197 /* websockets options */ | |
2198 CURLOPT(CURLOPT_WS_OPTIONS, CURLOPTTYPE_LONG, 320), | |
2199 | |
2200 /* CA cache timeout */ | |
2201 CURLOPT(CURLOPT_CA_CACHE_TIMEOUT, CURLOPTTYPE_LONG, 321), | |
2202 | |
2203 /* Can leak things, gonna exit() soon */ | |
2204 CURLOPT(CURLOPT_QUICK_EXIT, CURLOPTTYPE_LONG, 322), | |
2205 | |
2206 CURLOPT_LASTENTRY /* the last unused */ | |
2207 } CURLoption; | |
2208 | |
2209 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all | |
2210 the obsolete stuff removed! */ | |
2211 | |
2212 /* Backwards compatibility with older names */ | |
2213 /* These are scheduled to disappear by 2011 */ | |
2214 | |
2215 /* This was added in version 7.19.1 */ | |
2216 #define CURLOPT_POST301 CURLOPT_POSTREDIR | |
2217 | |
2218 /* These are scheduled to disappear by 2009 */ | |
2219 | |
2220 /* The following were added in 7.17.0 */ | |
2221 #define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD | |
2222 #define CURLOPT_FTPAPPEND CURLOPT_APPEND | |
2223 #define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY | |
2224 #define CURLOPT_FTP_SSL CURLOPT_USE_SSL | |
2225 | |
2226 /* The following were added earlier */ | |
2227 | |
2228 #define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD | |
2229 #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL | |
2230 | |
2231 /* */ | |
2232 #define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT | |
2233 | |
2234 #else | |
2235 /* This is set if CURL_NO_OLDIES is defined at compile-time */ | |
2236 #undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */ | |
2237 #endif | |
2238 | |
2239 | |
2240 /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host | |
2241 name resolves addresses using more than one IP protocol version, this | |
2242 option might be handy to force libcurl to use a specific IP version. */ | |
2243 #define CURL_IPRESOLVE_WHATEVER 0 /* default, uses addresses to all IP | |
2244 versions that your system allows */ | |
2245 #define CURL_IPRESOLVE_V4 1 /* uses only IPv4 addresses/connections */ | |
2246 #define CURL_IPRESOLVE_V6 2 /* uses only IPv6 addresses/connections */ | |
2247 | |
2248 /* Convenient "aliases" */ | |
2249 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER | |
2250 | |
2251 /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ | |
2252 enum { | |
2253 CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd | |
2254 like the library to choose the best possible | |
2255 for us! */ | |
2256 CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */ | |
2257 CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */ | |
2258 CURL_HTTP_VERSION_2_0, /* please use HTTP 2 in the request */ | |
2259 CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */ | |
2260 CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1 | |
2261 Upgrade */ | |
2262 CURL_HTTP_VERSION_3 = 30, /* Makes use of explicit HTTP/3 without fallback. | |
2263 Use CURLOPT_ALTSVC to enable HTTP/3 upgrade */ | |
2264 CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ | |
2265 }; | |
2266 | |
2267 /* Convenience definition simple because the name of the version is HTTP/2 and | |
2268 not 2.0. The 2_0 version of the enum name was set while the version was | |
2269 still planned to be 2.0 and we stick to it for compatibility. */ | |
2270 #define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0 | |
2271 | |
2272 /* | |
2273 * Public API enums for RTSP requests | |
2274 */ | |
2275 enum { | |
2276 CURL_RTSPREQ_NONE, /* first in list */ | |
2277 CURL_RTSPREQ_OPTIONS, | |
2278 CURL_RTSPREQ_DESCRIBE, | |
2279 CURL_RTSPREQ_ANNOUNCE, | |
2280 CURL_RTSPREQ_SETUP, | |
2281 CURL_RTSPREQ_PLAY, | |
2282 CURL_RTSPREQ_PAUSE, | |
2283 CURL_RTSPREQ_TEARDOWN, | |
2284 CURL_RTSPREQ_GET_PARAMETER, | |
2285 CURL_RTSPREQ_SET_PARAMETER, | |
2286 CURL_RTSPREQ_RECORD, | |
2287 CURL_RTSPREQ_RECEIVE, | |
2288 CURL_RTSPREQ_LAST /* last in list */ | |
2289 }; | |
2290 | |
2291 /* These enums are for use with the CURLOPT_NETRC option. */ | |
2292 enum CURL_NETRC_OPTION { | |
2293 CURL_NETRC_IGNORED, /* The .netrc will never be read. | |
2294 * This is the default. */ | |
2295 CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred | |
2296 * to one in the .netrc. */ | |
2297 CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored. | |
2298 * Unless one is set programmatically, the .netrc | |
2299 * will be queried. */ | |
2300 CURL_NETRC_LAST | |
2301 }; | |
2302 | |
2303 enum { | |
2304 CURL_SSLVERSION_DEFAULT, | |
2305 CURL_SSLVERSION_TLSv1, /* TLS 1.x */ | |
2306 CURL_SSLVERSION_SSLv2, | |
2307 CURL_SSLVERSION_SSLv3, | |
2308 CURL_SSLVERSION_TLSv1_0, | |
2309 CURL_SSLVERSION_TLSv1_1, | |
2310 CURL_SSLVERSION_TLSv1_2, | |
2311 CURL_SSLVERSION_TLSv1_3, | |
2312 | |
2313 CURL_SSLVERSION_LAST /* never use, keep last */ | |
2314 }; | |
2315 | |
2316 enum { | |
2317 CURL_SSLVERSION_MAX_NONE = 0, | |
2318 CURL_SSLVERSION_MAX_DEFAULT = (CURL_SSLVERSION_TLSv1 << 16), | |
2319 CURL_SSLVERSION_MAX_TLSv1_0 = (CURL_SSLVERSION_TLSv1_0 << 16), | |
2320 CURL_SSLVERSION_MAX_TLSv1_1 = (CURL_SSLVERSION_TLSv1_1 << 16), | |
2321 CURL_SSLVERSION_MAX_TLSv1_2 = (CURL_SSLVERSION_TLSv1_2 << 16), | |
2322 CURL_SSLVERSION_MAX_TLSv1_3 = (CURL_SSLVERSION_TLSv1_3 << 16), | |
2323 | |
2324 /* never use, keep last */ | |
2325 CURL_SSLVERSION_MAX_LAST = (CURL_SSLVERSION_LAST << 16) | |
2326 }; | |
2327 | |
2328 enum CURL_TLSAUTH { | |
2329 CURL_TLSAUTH_NONE, | |
2330 CURL_TLSAUTH_SRP, | |
2331 CURL_TLSAUTH_LAST /* never use, keep last */ | |
2332 }; | |
2333 | |
2334 /* symbols to use with CURLOPT_POSTREDIR. | |
2335 CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303 | |
2336 can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302 | |
2337 | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */ | |
2338 | |
2339 #define CURL_REDIR_GET_ALL 0 | |
2340 #define CURL_REDIR_POST_301 1 | |
2341 #define CURL_REDIR_POST_302 2 | |
2342 #define CURL_REDIR_POST_303 4 | |
2343 #define CURL_REDIR_POST_ALL \ | |
2344 (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303) | |
2345 | |
2346 typedef enum { | |
2347 CURL_TIMECOND_NONE, | |
2348 | |
2349 CURL_TIMECOND_IFMODSINCE, | |
2350 CURL_TIMECOND_IFUNMODSINCE, | |
2351 CURL_TIMECOND_LASTMOD, | |
2352 | |
2353 CURL_TIMECOND_LAST | |
2354 } curl_TimeCond; | |
2355 | |
2356 /* Special size_t value signaling a null-terminated string. */ | |
2357 #define CURL_ZERO_TERMINATED ((size_t) -1) | |
2358 | |
2359 /* curl_strequal() and curl_strnequal() are subject for removal in a future | |
2360 release */ | |
2361 CURL_EXTERN int curl_strequal(const char *s1, const char *s2); | |
2362 CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n); | |
2363 | |
2364 /* Mime/form handling support. */ | |
2365 typedef struct curl_mime curl_mime; /* Mime context. */ | |
2366 typedef struct curl_mimepart curl_mimepart; /* Mime part context. */ | |
2367 | |
2368 /* CURLMIMEOPT_ defines are for the CURLOPT_MIME_OPTIONS option. */ | |
2369 #define CURLMIMEOPT_FORMESCAPE (1<<0) /* Use backslash-escaping for forms. */ | |
2370 | |
2371 /* | |
2372 * NAME curl_mime_init() | |
2373 * | |
2374 * DESCRIPTION | |
2375 * | |
2376 * Create a mime context and return its handle. The easy parameter is the | |
2377 * target handle. | |
2378 */ | |
2379 CURL_EXTERN curl_mime *curl_mime_init(CURL *easy); | |
2380 | |
2381 /* | |
2382 * NAME curl_mime_free() | |
2383 * | |
2384 * DESCRIPTION | |
2385 * | |
2386 * release a mime handle and its substructures. | |
2387 */ | |
2388 CURL_EXTERN void curl_mime_free(curl_mime *mime); | |
2389 | |
2390 /* | |
2391 * NAME curl_mime_addpart() | |
2392 * | |
2393 * DESCRIPTION | |
2394 * | |
2395 * Append a new empty part to the given mime context and return a handle to | |
2396 * the created part. | |
2397 */ | |
2398 CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime); | |
2399 | |
2400 /* | |
2401 * NAME curl_mime_name() | |
2402 * | |
2403 * DESCRIPTION | |
2404 * | |
2405 * Set mime/form part name. | |
2406 */ | |
2407 CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name); | |
2408 | |
2409 /* | |
2410 * NAME curl_mime_filename() | |
2411 * | |
2412 * DESCRIPTION | |
2413 * | |
2414 * Set mime part remote file name. | |
2415 */ | |
2416 CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part, | |
2417 const char *filename); | |
2418 | |
2419 /* | |
2420 * NAME curl_mime_type() | |
2421 * | |
2422 * DESCRIPTION | |
2423 * | |
2424 * Set mime part type. | |
2425 */ | |
2426 CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype); | |
2427 | |
2428 /* | |
2429 * NAME curl_mime_encoder() | |
2430 * | |
2431 * DESCRIPTION | |
2432 * | |
2433 * Set mime data transfer encoder. | |
2434 */ | |
2435 CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part, | |
2436 const char *encoding); | |
2437 | |
2438 /* | |
2439 * NAME curl_mime_data() | |
2440 * | |
2441 * DESCRIPTION | |
2442 * | |
2443 * Set mime part data source from memory data, | |
2444 */ | |
2445 CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part, | |
2446 const char *data, size_t datasize); | |
2447 | |
2448 /* | |
2449 * NAME curl_mime_filedata() | |
2450 * | |
2451 * DESCRIPTION | |
2452 * | |
2453 * Set mime part data source from named file. | |
2454 */ | |
2455 CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part, | |
2456 const char *filename); | |
2457 | |
2458 /* | |
2459 * NAME curl_mime_data_cb() | |
2460 * | |
2461 * DESCRIPTION | |
2462 * | |
2463 * Set mime part data source from callback function. | |
2464 */ | |
2465 CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part, | |
2466 curl_off_t datasize, | |
2467 curl_read_callback readfunc, | |
2468 curl_seek_callback seekfunc, | |
2469 curl_free_callback freefunc, | |
2470 void *arg); | |
2471 | |
2472 /* | |
2473 * NAME curl_mime_subparts() | |
2474 * | |
2475 * DESCRIPTION | |
2476 * | |
2477 * Set mime part data source from subparts. | |
2478 */ | |
2479 CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part, | |
2480 curl_mime *subparts); | |
2481 /* | |
2482 * NAME curl_mime_headers() | |
2483 * | |
2484 * DESCRIPTION | |
2485 * | |
2486 * Set mime part headers. | |
2487 */ | |
2488 CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part, | |
2489 struct curl_slist *headers, | |
2490 int take_ownership); | |
2491 | |
2492 typedef enum { | |
2493 /********* the first one is unused ************/ | |
2494 CURLFORM_NOTHING CURL_DEPRECATED(7.56.0, ""), | |
2495 CURLFORM_COPYNAME CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"), | |
2496 CURLFORM_PTRNAME CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"), | |
2497 CURLFORM_NAMELENGTH CURL_DEPRECATED(7.56.0, ""), | |
2498 CURLFORM_COPYCONTENTS CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2499 CURLFORM_PTRCONTENTS CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2500 CURLFORM_CONTENTSLENGTH CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2501 CURLFORM_FILECONTENT CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"), | |
2502 CURLFORM_ARRAY CURL_DEPRECATED(7.56.0, ""), | |
2503 CURLFORM_OBSOLETE, | |
2504 CURLFORM_FILE CURL_DEPRECATED(7.56.0, "Use curl_mime_filedata()"), | |
2505 | |
2506 CURLFORM_BUFFER CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"), | |
2507 CURLFORM_BUFFERPTR CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2508 CURLFORM_BUFFERLENGTH CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2509 | |
2510 CURLFORM_CONTENTTYPE CURL_DEPRECATED(7.56.0, "Use curl_mime_type()"), | |
2511 CURLFORM_CONTENTHEADER CURL_DEPRECATED(7.56.0, "Use curl_mime_headers()"), | |
2512 CURLFORM_FILENAME CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"), | |
2513 CURLFORM_END, | |
2514 CURLFORM_OBSOLETE2, | |
2515 | |
2516 CURLFORM_STREAM CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"), | |
2517 CURLFORM_CONTENTLEN /* added in 7.46.0, provide a curl_off_t length */ | |
2518 CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"), | |
2519 | |
2520 CURLFORM_LASTENTRY /* the last unused */ | |
2521 } CURLformoption; | |
2522 | |
2523 /* structure to be used as parameter for CURLFORM_ARRAY */ | |
2524 struct curl_forms { | |
2525 CURLformoption option; | |
2526 const char *value; | |
2527 }; | |
2528 | |
2529 /* use this for multipart formpost building */ | |
2530 /* Returns code for curl_formadd() | |
2531 * | |
2532 * Returns: | |
2533 * CURL_FORMADD_OK on success | |
2534 * CURL_FORMADD_MEMORY if the FormInfo allocation fails | |
2535 * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form | |
2536 * CURL_FORMADD_NULL if a null pointer was given for a char | |
2537 * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed | |
2538 * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used | |
2539 * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error) | |
2540 * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated | |
2541 * CURL_FORMADD_MEMORY if some allocation for string copying failed. | |
2542 * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array | |
2543 * | |
2544 ***************************************************************************/ | |
2545 typedef enum { | |
2546 CURL_FORMADD_OK CURL_DEPRECATED(7.56.0, ""), /* 1st, no error */ | |
2547 | |
2548 CURL_FORMADD_MEMORY CURL_DEPRECATED(7.56.0, ""), | |
2549 CURL_FORMADD_OPTION_TWICE CURL_DEPRECATED(7.56.0, ""), | |
2550 CURL_FORMADD_NULL CURL_DEPRECATED(7.56.0, ""), | |
2551 CURL_FORMADD_UNKNOWN_OPTION CURL_DEPRECATED(7.56.0, ""), | |
2552 CURL_FORMADD_INCOMPLETE CURL_DEPRECATED(7.56.0, ""), | |
2553 CURL_FORMADD_ILLEGAL_ARRAY CURL_DEPRECATED(7.56.0, ""), | |
2554 /* libcurl was built with form api disabled */ | |
2555 CURL_FORMADD_DISABLED CURL_DEPRECATED(7.56.0, ""), | |
2556 | |
2557 CURL_FORMADD_LAST /* last */ | |
2558 } CURLFORMcode; | |
2559 | |
2560 /* | |
2561 * NAME curl_formadd() | |
2562 * | |
2563 * DESCRIPTION | |
2564 * | |
2565 * Pretty advanced function for building multi-part formposts. Each invoke | |
2566 * adds one part that together construct a full post. Then use | |
2567 * CURLOPT_HTTPPOST to send it off to libcurl. | |
2568 */ | |
2569 CURL_EXTERN CURLFORMcode CURL_DEPRECATED(7.56.0, "Use curl_mime_init()") | |
2570 curl_formadd(struct curl_httppost **httppost, | |
2571 struct curl_httppost **last_post, | |
2572 ...); | |
2573 | |
2574 /* | |
2575 * callback function for curl_formget() | |
2576 * The void *arg pointer will be the one passed as second argument to | |
2577 * curl_formget(). | |
2578 * The character buffer passed to it must not be freed. | |
2579 * Should return the buffer length passed to it as the argument "len" on | |
2580 * success. | |
2581 */ | |
2582 typedef size_t (*curl_formget_callback)(void *arg, const char *buf, | |
2583 size_t len); | |
2584 | |
2585 /* | |
2586 * NAME curl_formget() | |
2587 * | |
2588 * DESCRIPTION | |
2589 * | |
2590 * Serialize a curl_httppost struct built with curl_formadd(). | |
2591 * Accepts a void pointer as second argument which will be passed to | |
2592 * the curl_formget_callback function. | |
2593 * Returns 0 on success. | |
2594 */ | |
2595 CURL_EXTERN int CURL_DEPRECATED(7.56.0, "") | |
2596 curl_formget(struct curl_httppost *form, void *arg, | |
2597 curl_formget_callback append); | |
2598 /* | |
2599 * NAME curl_formfree() | |
2600 * | |
2601 * DESCRIPTION | |
2602 * | |
2603 * Free a multipart formpost previously built with curl_formadd(). | |
2604 */ | |
2605 CURL_EXTERN void CURL_DEPRECATED(7.56.0, "Use curl_mime_free()") | |
2606 curl_formfree(struct curl_httppost *form); | |
2607 | |
2608 /* | |
2609 * NAME curl_getenv() | |
2610 * | |
2611 * DESCRIPTION | |
2612 * | |
2613 * Returns a malloc()'ed string that MUST be curl_free()ed after usage is | |
2614 * complete. DEPRECATED - see lib/README.curlx | |
2615 */ | |
2616 CURL_EXTERN char *curl_getenv(const char *variable); | |
2617 | |
2618 /* | |
2619 * NAME curl_version() | |
2620 * | |
2621 * DESCRIPTION | |
2622 * | |
2623 * Returns a static ascii string of the libcurl version. | |
2624 */ | |
2625 CURL_EXTERN char *curl_version(void); | |
2626 | |
2627 /* | |
2628 * NAME curl_easy_escape() | |
2629 * | |
2630 * DESCRIPTION | |
2631 * | |
2632 * Escapes URL strings (converts all letters consider illegal in URLs to their | |
2633 * %XX versions). This function returns a new allocated string or NULL if an | |
2634 * error occurred. | |
2635 */ | |
2636 CURL_EXTERN char *curl_easy_escape(CURL *handle, | |
2637 const char *string, | |
2638 int length); | |
2639 | |
2640 /* the previous version: */ | |
2641 CURL_EXTERN char *curl_escape(const char *string, | |
2642 int length); | |
2643 | |
2644 | |
2645 /* | |
2646 * NAME curl_easy_unescape() | |
2647 * | |
2648 * DESCRIPTION | |
2649 * | |
2650 * Unescapes URL encoding in strings (converts all %XX codes to their 8bit | |
2651 * versions). This function returns a new allocated string or NULL if an error | |
2652 * occurred. | |
2653 * Conversion Note: On non-ASCII platforms the ASCII %XX codes are | |
2654 * converted into the host encoding. | |
2655 */ | |
2656 CURL_EXTERN char *curl_easy_unescape(CURL *handle, | |
2657 const char *string, | |
2658 int length, | |
2659 int *outlength); | |
2660 | |
2661 /* the previous version */ | |
2662 CURL_EXTERN char *curl_unescape(const char *string, | |
2663 int length); | |
2664 | |
2665 /* | |
2666 * NAME curl_free() | |
2667 * | |
2668 * DESCRIPTION | |
2669 * | |
2670 * Provided for de-allocation in the same translation unit that did the | |
2671 * allocation. Added in libcurl 7.10 | |
2672 */ | |
2673 CURL_EXTERN void curl_free(void *p); | |
2674 | |
2675 /* | |
2676 * NAME curl_global_init() | |
2677 * | |
2678 * DESCRIPTION | |
2679 * | |
2680 * curl_global_init() should be invoked exactly once for each application that | |
2681 * uses libcurl and before any call of other libcurl functions. | |
2682 | |
2683 * This function is thread-safe if CURL_VERSION_THREADSAFE is set in the | |
2684 * curl_version_info_data.features flag (fetch by curl_version_info()). | |
2685 | |
2686 */ | |
2687 CURL_EXTERN CURLcode curl_global_init(long flags); | |
2688 | |
2689 /* | |
2690 * NAME curl_global_init_mem() | |
2691 * | |
2692 * DESCRIPTION | |
2693 * | |
2694 * curl_global_init() or curl_global_init_mem() should be invoked exactly once | |
2695 * for each application that uses libcurl. This function can be used to | |
2696 * initialize libcurl and set user defined memory management callback | |
2697 * functions. Users can implement memory management routines to check for | |
2698 * memory leaks, check for mis-use of the curl library etc. User registered | |
2699 * callback routines will be invoked by this library instead of the system | |
2700 * memory management routines like malloc, free etc. | |
2701 */ | |
2702 CURL_EXTERN CURLcode curl_global_init_mem(long flags, | |
2703 curl_malloc_callback m, | |
2704 curl_free_callback f, | |
2705 curl_realloc_callback r, | |
2706 curl_strdup_callback s, | |
2707 curl_calloc_callback c); | |
2708 | |
2709 /* | |
2710 * NAME curl_global_cleanup() | |
2711 * | |
2712 * DESCRIPTION | |
2713 * | |
2714 * curl_global_cleanup() should be invoked exactly once for each application | |
2715 * that uses libcurl | |
2716 */ | |
2717 CURL_EXTERN void curl_global_cleanup(void); | |
2718 | |
2719 /* linked-list structure for the CURLOPT_QUOTE option (and other) */ | |
2720 struct curl_slist { | |
2721 char *data; | |
2722 struct curl_slist *next; | |
2723 }; | |
2724 | |
2725 /* | |
2726 * NAME curl_global_sslset() | |
2727 * | |
2728 * DESCRIPTION | |
2729 * | |
2730 * When built with multiple SSL backends, curl_global_sslset() allows to | |
2731 * choose one. This function can only be called once, and it must be called | |
2732 * *before* curl_global_init(). | |
2733 * | |
2734 * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The | |
2735 * backend can also be specified via the name parameter (passing -1 as id). | |
2736 * If both id and name are specified, the name will be ignored. If neither id | |
2737 * nor name are specified, the function will fail with | |
2738 * CURLSSLSET_UNKNOWN_BACKEND and set the "avail" pointer to the | |
2739 * NULL-terminated list of available backends. | |
2740 * | |
2741 * Upon success, the function returns CURLSSLSET_OK. | |
2742 * | |
2743 * If the specified SSL backend is not available, the function returns | |
2744 * CURLSSLSET_UNKNOWN_BACKEND and sets the "avail" pointer to a NULL-terminated | |
2745 * list of available SSL backends. | |
2746 * | |
2747 * The SSL backend can be set only once. If it has already been set, a | |
2748 * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE. | |
2749 */ | |
2750 | |
2751 struct curl_ssl_backend { | |
2752 curl_sslbackend id; | |
2753 const char *name; | |
2754 }; | |
2755 typedef struct curl_ssl_backend curl_ssl_backend; | |
2756 | |
2757 typedef enum { | |
2758 CURLSSLSET_OK = 0, | |
2759 CURLSSLSET_UNKNOWN_BACKEND, | |
2760 CURLSSLSET_TOO_LATE, | |
2761 CURLSSLSET_NO_BACKENDS /* libcurl was built without any SSL support */ | |
2762 } CURLsslset; | |
2763 | |
2764 CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name, | |
2765 const curl_ssl_backend ***avail); | |
2766 | |
2767 /* | |
2768 * NAME curl_slist_append() | |
2769 * | |
2770 * DESCRIPTION | |
2771 * | |
2772 * Appends a string to a linked list. If no list exists, it will be created | |
2773 * first. Returns the new list, after appending. | |
2774 */ | |
2775 CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *list, | |
2776 const char *data); | |
2777 | |
2778 /* | |
2779 * NAME curl_slist_free_all() | |
2780 * | |
2781 * DESCRIPTION | |
2782 * | |
2783 * free a previously built curl_slist. | |
2784 */ | |
2785 CURL_EXTERN void curl_slist_free_all(struct curl_slist *list); | |
2786 | |
2787 /* | |
2788 * NAME curl_getdate() | |
2789 * | |
2790 * DESCRIPTION | |
2791 * | |
2792 * Returns the time, in seconds since 1 Jan 1970 of the time string given in | |
2793 * the first argument. The time argument in the second parameter is unused | |
2794 * and should be set to NULL. | |
2795 */ | |
2796 CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused); | |
2797 | |
2798 /* info about the certificate chain, only for OpenSSL, GnuTLS, Schannel, NSS | |
2799 and GSKit builds. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */ | |
2800 struct curl_certinfo { | |
2801 int num_of_certs; /* number of certificates with information */ | |
2802 struct curl_slist **certinfo; /* for each index in this array, there's a | |
2803 linked list with textual information in the | |
2804 format "name: value" */ | |
2805 }; | |
2806 | |
2807 /* Information about the SSL library used and the respective internal SSL | |
2808 handle, which can be used to obtain further information regarding the | |
2809 connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */ | |
2810 struct curl_tlssessioninfo { | |
2811 curl_sslbackend backend; | |
2812 void *internals; | |
2813 }; | |
2814 | |
2815 #define CURLINFO_STRING 0x100000 | |
2816 #define CURLINFO_LONG 0x200000 | |
2817 #define CURLINFO_DOUBLE 0x300000 | |
2818 #define CURLINFO_SLIST 0x400000 | |
2819 #define CURLINFO_PTR 0x400000 /* same as SLIST */ | |
2820 #define CURLINFO_SOCKET 0x500000 | |
2821 #define CURLINFO_OFF_T 0x600000 | |
2822 #define CURLINFO_MASK 0x0fffff | |
2823 #define CURLINFO_TYPEMASK 0xf00000 | |
2824 | |
2825 typedef enum { | |
2826 CURLINFO_NONE, /* first, never use this */ | |
2827 CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1, | |
2828 CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2, | |
2829 CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3, | |
2830 CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4, | |
2831 CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5, | |
2832 CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6, | |
2833 CURLINFO_SIZE_UPLOAD CURL_DEPRECATED(7.55.0, "Use CURLINFO_SIZE_UPLOAD_T") | |
2834 = CURLINFO_DOUBLE + 7, | |
2835 CURLINFO_SIZE_UPLOAD_T = CURLINFO_OFF_T + 7, | |
2836 CURLINFO_SIZE_DOWNLOAD | |
2837 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SIZE_DOWNLOAD_T") | |
2838 = CURLINFO_DOUBLE + 8, | |
2839 CURLINFO_SIZE_DOWNLOAD_T = CURLINFO_OFF_T + 8, | |
2840 CURLINFO_SPEED_DOWNLOAD | |
2841 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SPEED_DOWNLOAD_T") | |
2842 = CURLINFO_DOUBLE + 9, | |
2843 CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T + 9, | |
2844 CURLINFO_SPEED_UPLOAD | |
2845 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SPEED_UPLOAD_T") | |
2846 = CURLINFO_DOUBLE + 10, | |
2847 CURLINFO_SPEED_UPLOAD_T = CURLINFO_OFF_T + 10, | |
2848 CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11, | |
2849 CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12, | |
2850 CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13, | |
2851 CURLINFO_FILETIME = CURLINFO_LONG + 14, | |
2852 CURLINFO_FILETIME_T = CURLINFO_OFF_T + 14, | |
2853 CURLINFO_CONTENT_LENGTH_DOWNLOAD | |
2854 CURL_DEPRECATED(7.55.0, | |
2855 "Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T") | |
2856 = CURLINFO_DOUBLE + 15, | |
2857 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T + 15, | |
2858 CURLINFO_CONTENT_LENGTH_UPLOAD | |
2859 CURL_DEPRECATED(7.55.0, | |
2860 "Use CURLINFO_CONTENT_LENGTH_UPLOAD_T") | |
2861 = CURLINFO_DOUBLE + 16, | |
2862 CURLINFO_CONTENT_LENGTH_UPLOAD_T = CURLINFO_OFF_T + 16, | |
2863 CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17, | |
2864 CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18, | |
2865 CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19, | |
2866 CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20, | |
2867 CURLINFO_PRIVATE = CURLINFO_STRING + 21, | |
2868 CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22, | |
2869 CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23, | |
2870 CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24, | |
2871 CURLINFO_OS_ERRNO = CURLINFO_LONG + 25, | |
2872 CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26, | |
2873 CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27, | |
2874 CURLINFO_COOKIELIST = CURLINFO_SLIST + 28, | |
2875 CURLINFO_LASTSOCKET CURL_DEPRECATED(7.45.0, "Use CURLINFO_ACTIVESOCKET") | |
2876 = CURLINFO_LONG + 29, | |
2877 CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30, | |
2878 CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31, | |
2879 CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32, | |
2880 CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, | |
2881 CURLINFO_CERTINFO = CURLINFO_PTR + 34, | |
2882 CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, | |
2883 CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36, | |
2884 CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37, | |
2885 CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38, | |
2886 CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39, | |
2887 CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40, | |
2888 CURLINFO_LOCAL_IP = CURLINFO_STRING + 41, | |
2889 CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42, | |
2890 CURLINFO_TLS_SESSION CURL_DEPRECATED(7.48.0, "Use CURLINFO_TLS_SSL_PTR") | |
2891 = CURLINFO_PTR + 43, | |
2892 CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44, | |
2893 CURLINFO_TLS_SSL_PTR = CURLINFO_PTR + 45, | |
2894 CURLINFO_HTTP_VERSION = CURLINFO_LONG + 46, | |
2895 CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47, | |
2896 CURLINFO_PROTOCOL CURL_DEPRECATED(7.85.0, "Use CURLINFO_SCHEME") | |
2897 = CURLINFO_LONG + 48, | |
2898 CURLINFO_SCHEME = CURLINFO_STRING + 49, | |
2899 CURLINFO_TOTAL_TIME_T = CURLINFO_OFF_T + 50, | |
2900 CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51, | |
2901 CURLINFO_CONNECT_TIME_T = CURLINFO_OFF_T + 52, | |
2902 CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53, | |
2903 CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54, | |
2904 CURLINFO_REDIRECT_TIME_T = CURLINFO_OFF_T + 55, | |
2905 CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56, | |
2906 CURLINFO_RETRY_AFTER = CURLINFO_OFF_T + 57, | |
2907 CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58, | |
2908 CURLINFO_PROXY_ERROR = CURLINFO_LONG + 59, | |
2909 CURLINFO_REFERER = CURLINFO_STRING + 60, | |
2910 CURLINFO_CAINFO = CURLINFO_STRING + 61, | |
2911 CURLINFO_CAPATH = CURLINFO_STRING + 62, | |
2912 CURLINFO_LASTONE = 62 | |
2913 } CURLINFO; | |
2914 | |
2915 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as | |
2916 CURLINFO_HTTP_CODE */ | |
2917 #define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE | |
2918 | |
2919 typedef enum { | |
2920 CURLCLOSEPOLICY_NONE, /* first, never use this */ | |
2921 | |
2922 CURLCLOSEPOLICY_OLDEST, | |
2923 CURLCLOSEPOLICY_LEAST_RECENTLY_USED, | |
2924 CURLCLOSEPOLICY_LEAST_TRAFFIC, | |
2925 CURLCLOSEPOLICY_SLOWEST, | |
2926 CURLCLOSEPOLICY_CALLBACK, | |
2927 | |
2928 CURLCLOSEPOLICY_LAST /* last, never use this */ | |
2929 } curl_closepolicy; | |
2930 | |
2931 #define CURL_GLOBAL_SSL (1<<0) /* no purpose since 7.57.0 */ | |
2932 #define CURL_GLOBAL_WIN32 (1<<1) | |
2933 #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) | |
2934 #define CURL_GLOBAL_NOTHING 0 | |
2935 #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL | |
2936 #define CURL_GLOBAL_ACK_EINTR (1<<2) | |
2937 | |
2938 | |
2939 /***************************************************************************** | |
2940 * Setup defines, protos etc for the sharing stuff. | |
2941 */ | |
2942 | |
2943 /* Different data locks for a single share */ | |
2944 typedef enum { | |
2945 CURL_LOCK_DATA_NONE = 0, | |
2946 /* CURL_LOCK_DATA_SHARE is used internally to say that | |
2947 * the locking is just made to change the internal state of the share | |
2948 * itself. | |
2949 */ | |
2950 CURL_LOCK_DATA_SHARE, | |
2951 CURL_LOCK_DATA_COOKIE, | |
2952 CURL_LOCK_DATA_DNS, | |
2953 CURL_LOCK_DATA_SSL_SESSION, | |
2954 CURL_LOCK_DATA_CONNECT, | |
2955 CURL_LOCK_DATA_PSL, | |
2956 CURL_LOCK_DATA_LAST | |
2957 } curl_lock_data; | |
2958 | |
2959 /* Different lock access types */ | |
2960 typedef enum { | |
2961 CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */ | |
2962 CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */ | |
2963 CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */ | |
2964 CURL_LOCK_ACCESS_LAST /* never use */ | |
2965 } curl_lock_access; | |
2966 | |
2967 typedef void (*curl_lock_function)(CURL *handle, | |
2968 curl_lock_data data, | |
2969 curl_lock_access locktype, | |
2970 void *userptr); | |
2971 typedef void (*curl_unlock_function)(CURL *handle, | |
2972 curl_lock_data data, | |
2973 void *userptr); | |
2974 | |
2975 | |
2976 typedef enum { | |
2977 CURLSHE_OK, /* all is fine */ | |
2978 CURLSHE_BAD_OPTION, /* 1 */ | |
2979 CURLSHE_IN_USE, /* 2 */ | |
2980 CURLSHE_INVALID, /* 3 */ | |
2981 CURLSHE_NOMEM, /* 4 out of memory */ | |
2982 CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */ | |
2983 CURLSHE_LAST /* never use */ | |
2984 } CURLSHcode; | |
2985 | |
2986 typedef enum { | |
2987 CURLSHOPT_NONE, /* don't use */ | |
2988 CURLSHOPT_SHARE, /* specify a data type to share */ | |
2989 CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */ | |
2990 CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */ | |
2991 CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */ | |
2992 CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock | |
2993 callback functions */ | |
2994 CURLSHOPT_LAST /* never use */ | |
2995 } CURLSHoption; | |
2996 | |
2997 CURL_EXTERN CURLSH *curl_share_init(void); | |
2998 CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, | |
2999 ...); | |
3000 CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *share); | |
3001 | |
3002 /**************************************************************************** | |
3003 * Structures for querying information about the curl library at runtime. | |
3004 */ | |
3005 | |
3006 typedef enum { | |
3007 CURLVERSION_FIRST, | |
3008 CURLVERSION_SECOND, | |
3009 CURLVERSION_THIRD, | |
3010 CURLVERSION_FOURTH, | |
3011 CURLVERSION_FIFTH, | |
3012 CURLVERSION_SIXTH, | |
3013 CURLVERSION_SEVENTH, | |
3014 CURLVERSION_EIGHTH, | |
3015 CURLVERSION_NINTH, | |
3016 CURLVERSION_TENTH, | |
3017 CURLVERSION_ELEVENTH, | |
3018 CURLVERSION_LAST /* never actually use this */ | |
3019 } CURLversion; | |
3020 | |
3021 /* The 'CURLVERSION_NOW' is the symbolic name meant to be used by | |
3022 basically all programs ever that want to get version information. It is | |
3023 meant to be a built-in version number for what kind of struct the caller | |
3024 expects. If the struct ever changes, we redefine the NOW to another enum | |
3025 from above. */ | |
3026 #define CURLVERSION_NOW CURLVERSION_ELEVENTH | |
3027 | |
3028 struct curl_version_info_data { | |
3029 CURLversion age; /* age of the returned struct */ | |
3030 const char *version; /* LIBCURL_VERSION */ | |
3031 unsigned int version_num; /* LIBCURL_VERSION_NUM */ | |
3032 const char *host; /* OS/host/cpu/machine when configured */ | |
3033 int features; /* bitmask, see defines below */ | |
3034 const char *ssl_version; /* human readable string */ | |
3035 long ssl_version_num; /* not used anymore, always 0 */ | |
3036 const char *libz_version; /* human readable string */ | |
3037 /* protocols is terminated by an entry with a NULL protoname */ | |
3038 const char * const *protocols; | |
3039 | |
3040 /* The fields below this were added in CURLVERSION_SECOND */ | |
3041 const char *ares; | |
3042 int ares_num; | |
3043 | |
3044 /* This field was added in CURLVERSION_THIRD */ | |
3045 const char *libidn; | |
3046 | |
3047 /* These field were added in CURLVERSION_FOURTH */ | |
3048 | |
3049 /* Same as '_libiconv_version' if built with HAVE_ICONV */ | |
3050 int iconv_ver_num; | |
3051 | |
3052 const char *libssh_version; /* human readable string */ | |
3053 | |
3054 /* These fields were added in CURLVERSION_FIFTH */ | |
3055 unsigned int brotli_ver_num; /* Numeric Brotli version | |
3056 (MAJOR << 24) | (MINOR << 12) | PATCH */ | |
3057 const char *brotli_version; /* human readable string. */ | |
3058 | |
3059 /* These fields were added in CURLVERSION_SIXTH */ | |
3060 unsigned int nghttp2_ver_num; /* Numeric nghttp2 version | |
3061 (MAJOR << 16) | (MINOR << 8) | PATCH */ | |
3062 const char *nghttp2_version; /* human readable string. */ | |
3063 const char *quic_version; /* human readable quic (+ HTTP/3) library + | |
3064 version or NULL */ | |
3065 | |
3066 /* These fields were added in CURLVERSION_SEVENTH */ | |
3067 const char *cainfo; /* the built-in default CURLOPT_CAINFO, might | |
3068 be NULL */ | |
3069 const char *capath; /* the built-in default CURLOPT_CAPATH, might | |
3070 be NULL */ | |
3071 | |
3072 /* These fields were added in CURLVERSION_EIGHTH */ | |
3073 unsigned int zstd_ver_num; /* Numeric Zstd version | |
3074 (MAJOR << 24) | (MINOR << 12) | PATCH */ | |
3075 const char *zstd_version; /* human readable string. */ | |
3076 | |
3077 /* These fields were added in CURLVERSION_NINTH */ | |
3078 const char *hyper_version; /* human readable string. */ | |
3079 | |
3080 /* These fields were added in CURLVERSION_TENTH */ | |
3081 const char *gsasl_version; /* human readable string. */ | |
3082 | |
3083 /* These fields were added in CURLVERSION_ELEVENTH */ | |
3084 /* feature_names is terminated by an entry with a NULL feature name */ | |
3085 const char * const *feature_names; | |
3086 }; | |
3087 typedef struct curl_version_info_data curl_version_info_data; | |
3088 | |
3089 #define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ | |
3090 #define CURL_VERSION_KERBEROS4 (1<<1) /* Kerberos V4 auth is supported | |
3091 (deprecated) */ | |
3092 #define CURL_VERSION_SSL (1<<2) /* SSL options are present */ | |
3093 #define CURL_VERSION_LIBZ (1<<3) /* libz features are present */ | |
3094 #define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */ | |
3095 #define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth is supported | |
3096 (deprecated) */ | |
3097 #define CURL_VERSION_DEBUG (1<<6) /* Built with debug capabilities */ | |
3098 #define CURL_VERSION_ASYNCHDNS (1<<7) /* Asynchronous DNS resolves */ | |
3099 #define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth is supported */ | |
3100 #define CURL_VERSION_LARGEFILE (1<<9) /* Supports files larger than 2GB */ | |
3101 #define CURL_VERSION_IDN (1<<10) /* Internationized Domain Names are | |
3102 supported */ | |
3103 #define CURL_VERSION_SSPI (1<<11) /* Built against Windows SSPI */ | |
3104 #define CURL_VERSION_CONV (1<<12) /* Character conversions supported */ | |
3105 #define CURL_VERSION_CURLDEBUG (1<<13) /* Debug memory tracking supported */ | |
3106 #define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */ | |
3107 #define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegation to winbind helper | |
3108 is supported */ | |
3109 #define CURL_VERSION_HTTP2 (1<<16) /* HTTP2 support built-in */ | |
3110 #define CURL_VERSION_GSSAPI (1<<17) /* Built against a GSS-API library */ | |
3111 #define CURL_VERSION_KERBEROS5 (1<<18) /* Kerberos V5 auth is supported */ | |
3112 #define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */ | |
3113 #define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used | |
3114 for cookie domain verification */ | |
3115 #define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */ | |
3116 #define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */ | |
3117 #define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */ | |
3118 #define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */ | |
3119 #define CURL_VERSION_HTTP3 (1<<25) /* HTTP3 support built-in */ | |
3120 #define CURL_VERSION_ZSTD (1<<26) /* zstd features are present */ | |
3121 #define CURL_VERSION_UNICODE (1<<27) /* Unicode support on Windows */ | |
3122 #define CURL_VERSION_HSTS (1<<28) /* HSTS is supported */ | |
3123 #define CURL_VERSION_GSASL (1<<29) /* libgsasl is supported */ | |
3124 #define CURL_VERSION_THREADSAFE (1<<30) /* libcurl API is thread-safe */ | |
3125 | |
3126 /* | |
3127 * NAME curl_version_info() | |
3128 * | |
3129 * DESCRIPTION | |
3130 * | |
3131 * This function returns a pointer to a static copy of the version info | |
3132 * struct. See above. | |
3133 */ | |
3134 CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion); | |
3135 | |
3136 /* | |
3137 * NAME curl_easy_strerror() | |
3138 * | |
3139 * DESCRIPTION | |
3140 * | |
3141 * The curl_easy_strerror function may be used to turn a CURLcode value | |
3142 * into the equivalent human readable error string. This is useful | |
3143 * for printing meaningful error messages. | |
3144 */ | |
3145 CURL_EXTERN const char *curl_easy_strerror(CURLcode); | |
3146 | |
3147 /* | |
3148 * NAME curl_share_strerror() | |
3149 * | |
3150 * DESCRIPTION | |
3151 * | |
3152 * The curl_share_strerror function may be used to turn a CURLSHcode value | |
3153 * into the equivalent human readable error string. This is useful | |
3154 * for printing meaningful error messages. | |
3155 */ | |
3156 CURL_EXTERN const char *curl_share_strerror(CURLSHcode); | |
3157 | |
3158 /* | |
3159 * NAME curl_easy_pause() | |
3160 * | |
3161 * DESCRIPTION | |
3162 * | |
3163 * The curl_easy_pause function pauses or unpauses transfers. Select the new | |
3164 * state by setting the bitmask, use the convenience defines below. | |
3165 * | |
3166 */ | |
3167 CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); | |
3168 | |
3169 #define CURLPAUSE_RECV (1<<0) | |
3170 #define CURLPAUSE_RECV_CONT (0) | |
3171 | |
3172 #define CURLPAUSE_SEND (1<<2) | |
3173 #define CURLPAUSE_SEND_CONT (0) | |
3174 | |
3175 #define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND) | |
3176 #define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT) | |
3177 | |
3178 #ifdef __cplusplus | |
3179 } /* end of extern "C" */ | |
3180 #endif | |
3181 | |
3182 /* unfortunately, the easy.h and multi.h include files need options and info | |
3183 stuff before they can be included! */ | |
3184 #include "easy.h" /* nothing in curl is fun without the easy stuff */ | |
3185 #include "multi.h" | |
3186 #include "urlapi.h" | |
3187 #include "options.h" | |
3188 #include "header.h" | |
3189 #include "websockets.h" | |
3190 | |
3191 /* the typechecker doesn't work in C++ (yet) */ | |
3192 #if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ | |
3193 ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \ | |
3194 !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK) | |
3195 #include "typecheck-gcc.h" | |
3196 #else | |
3197 #if defined(__STDC__) && (__STDC__ >= 1) | |
3198 /* This preprocessor magic that replaces a call with the exact same call is | |
3199 only done to make sure application authors pass exactly three arguments | |
3200 to these functions. */ | |
3201 #define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param) | |
3202 #define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg) | |
3203 #define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) | |
3204 #define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) | |
3205 #endif /* __STDC__ >= 1 */ | |
3206 #endif /* gcc >= 4.3 && !__cplusplus && !CURL_DISABLE_TYPECHECK */ | |
3207 | |
3208 #endif /* CURLINC_CURL_H */ |