summaryrefslogtreecommitdiffstats
path: root/demos/guide/quic-client-block.c
diff options
context:
space:
mode:
Diffstat (limited to 'demos/guide/quic-client-block.c')
-rw-r--r--demos/guide/quic-client-block.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/demos/guide/quic-client-block.c b/demos/guide/quic-client-block.c
index 782f571559..baf5292c47 100644
--- a/demos/guide/quic-client-block.c
+++ b/demos/guide/quic-client-block.c
@@ -27,7 +27,7 @@
/* Helper function to create a BIO connected to the server */
static BIO *create_socket_bio(const char *hostname, const char *port,
- BIO_ADDR **peer_addr)
+ int family, BIO_ADDR **peer_addr)
{
int sock = -1;
BIO_ADDRINFO *res;
@@ -37,7 +37,7 @@ static BIO *create_socket_bio(const char *hostname, const char *port,
/*
* Lookup IP address info for the server.
*/
- if (!BIO_lookup_ex(hostname, port, BIO_LOOKUP_CLIENT, 0, SOCK_DGRAM, 0,
+ if (!BIO_lookup_ex(hostname, port, BIO_LOOKUP_CLIENT, family, SOCK_DGRAM, 0,
&res))
return NULL;
@@ -128,14 +128,24 @@ int main(int argc, char *argv[])
char buf[160];
BIO_ADDR *peer_addr = NULL;
char *hostname, *port;
+ int argnext = 1;
+ int ipv6 = 0;
- if (argc != 3) {
- printf("Usage: quic-client-block hostname port\n");
+ if (argc < 3) {
+ printf("Usage: quic-client-block [-6] hostname port\n");
goto end;
}
- hostname = argv[1];
- port = argv[2];
+ if (!strcmp(argv[argnext], "-6")) {
+ if (argc < 4) {
+ printf("Usage: quic-client-block [-6] hostname port\n");
+ goto end;
+ }
+ ipv6 = 1;
+ argnext++;
+ }
+ hostname = argv[argnext++];
+ port = argv[argnext];
/*
* Create an SSL_CTX which we can use to create SSL objects from. We
@@ -172,7 +182,7 @@ int main(int argc, char *argv[])
* Create the underlying transport socket/BIO and associate it with the
* connection.
*/
- bio = create_socket_bio(hostname, port, &peer_addr);
+ bio = create_socket_bio(hostname, port, ipv6 ? AF_INET6 : AF_INET, &peer_addr);
if (bio == NULL) {
printf("Failed to crete the BIO\n");
goto end;