examples/ipv6.c: new example showing IPv6-only internet transfer

Closes #12671
This commit is contained in:
Daniel Stenberg 2024-01-09 23:42:17 +01:00
parent ebbc6243d7
commit dd09f88f13
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -22,41 +22,27 @@
* *
***************************************************************************/ ***************************************************************************/
/* <DESC> /* <DESC>
* HTTP GET to an IPv6 address with specific scope * HTTPS GET using IPv6 only
* </DESC> * </DESC>
*/ */
#include <stdio.h> #include <stdio.h>
#include <curl/curl.h> #include <curl/curl.h>
#ifndef _WIN32
#include <net/if.h>
#endif
int main(void) int main(void)
{ {
#ifndef _WIN32
/* Windows users need to find how to use if_nametoindex() */
CURL *curl; CURL *curl;
CURLcode res; CURLcode res = CURLE_OK;
curl = curl_easy_init(); curl = curl_easy_init();
if(curl) { if(curl) {
long my_scope_id; curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
my_scope_id = if_nametoindex("eth0"); curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/");
curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl); res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
} }
#endif
return 0; return (int)res;
} }