Fixes for building with IPV6. Added new WOLFSSL_IPV6 define to indicate IPV6 support. Fix to not include connect() and socket() calls unless HAVE_HTTP_CLIENT, HAVE_OCSP or HAVE_CRL_IO defined. Typo fixes.

This commit is contained in:
David Garske
2017-03-15 11:25:24 -07:00
parent cf73a2244f
commit 4eb76e1d71
4 changed files with 36 additions and 30 deletions

View File

@ -326,7 +326,7 @@ AC_ARG_ENABLE([ipv6],
if test "$ENABLED_IPV6" = "yes"
then
AM_CFLAGS="$AM_CFLAGS -DTEST_IPV6"
AM_CFLAGS="$AM_CFLAGS -DTEST_IPV6 -DWOLFSSL_IPV6"
fi
AM_CONDITIONAL([BUILD_IPV6], [test "x$ENABLED_IPV6" = "xyes"])
@ -3340,7 +3340,7 @@ echo "#endif /* WOLFSSL_OPTIONS_H */" >> $OPTION_FILE
echo "" >> $OPTION_FILE
echo
#backwards compatability for those who have included options or version
#backwards compatibility for those who have included options or version
touch cyassl/options.h
echo "/* cyassl options.h" > cyassl/options.h
echo " * generated from wolfssl/options.h" >> cyassl/options.h

View File

@ -50,6 +50,7 @@ Possible IO enable options:
* USE_WOLFSSL_IO: Enables the wolfSSL IO functions default: off
* HAVE_HTTP_CLIENT: Enables HTTP client API's default: off
(unless HAVE_OCSP or HAVE_CRL_IO defined)
* HAVE_IO_TIMEOUT: Enables support for connect timeout default: off
*/
@ -421,12 +422,14 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
break;
case WOLFSSL_IP6:
#ifdef WOLFSSL_IPV6
if (XINET_NTOP(*fam, &(((SOCKADDR_IN6*)&peer)->sin6_addr),
ip, *ipSz) == NULL) {
WOLFSSL_MSG("XINET_NTOP error");
return SOCKET_ERROR_E;
}
*port = XNTOHS(((SOCKADDR_IN6*)&peer)->sin6_port);
#endif /* WOLFSSL_IPV6 */
break;
default:
@ -473,6 +476,7 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
break;
case WOLFSSL_IP6:
#ifdef WOLFSSL_IPV6
if (XINET_PTON(addr.ss_family, ip,
&(((SOCKADDR_IN6*)&addr)->sin6_addr)) <= 0) {
WOLFSSL_MSG("XINET_PTON error");
@ -486,6 +490,7 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
WOLFSSL_MSG("Import DTLS peer info error");
return ret;
}
#endif /* WOLFSSL_IPV6 */
break;
default:
@ -498,10 +503,32 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
#endif /* WOLFSSL_SESSION_EXPORT */
#endif /* WOLFSSL_DTLS */
int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
{
int recvd;
recvd = (int)RECV_FUNCTION(sd, buf, sz, rdFlags);
recvd = TranslateReturnCode(recvd, sd);
return recvd;
}
int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags)
{
int sent;
int len = sz;
sent = (int)SEND_FUNCTION(sd, &buf[sz - len], len, wrFlags);
sent = TranslateReturnCode(sent, sd);
return sent;
}
#endif /* USE_WOLFSSL_IO */
#if defined(USE_WOLFSSL_IO)
#ifdef HAVE_HTTP_CLIENT
#ifndef HAVE_IO_TIMEOUT
#define io_timeout_sec 0
@ -704,32 +731,6 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
#endif /* HAVE_SOCKADDR */
}
int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
{
int recvd;
recvd = (int)RECV_FUNCTION(sd, buf, sz, rdFlags);
recvd = TranslateReturnCode(recvd, sd);
return recvd;
}
int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags)
{
int sent;
int len = sz;
sent = (int)SEND_FUNCTION(sd, &buf[sz - len], len, wrFlags);
sent = TranslateReturnCode(sent, sd);
return sent;
}
#endif /* USE_WOLFSSL_IO */
#if defined(HAVE_HTTP_CLIENT)
#ifndef HTTP_SCRATCH_BUFFER_SIZE
#define HTTP_SCRATCH_BUFFER_SIZE 512
#endif

View File

@ -249,7 +249,7 @@
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr_storage SOCKADDR_S;
typedef struct sockaddr_in SOCKADDR_IN;
#ifdef TEST_IPV6
#ifdef WOLFSSL_IPV6
typedef struct sockaddr_in6 SOCKADDR_IN6;
#endif
typedef struct hostent HOSTENT;

View File

@ -1497,6 +1497,11 @@ static char *fgets(char *buff, int sz, FILE *fp)
#error old TLS requires MD5 and SHA
#endif
/* for backwards compatibility */
#if defined(TEST_IPV6) && !defined(WOLFSSL_IPV6)
#define WOLFSSL_IPV6
#endif
/* Place any other flags or defines here */