bss_dgram.c: fix compilation failure and warning on Windows with
[oweals/openssl.git] / crypto / bio / bss_dgram.c
index 0d3c1cf3426beb304205cb9303eebb532b3ef247..7b87a043c430fbe21691a1514f0206c87a22d2e5 100644 (file)
 #define IP_MTU      14 /* linux is lame */
 #endif
 
+#if OPENSSL_USE_IPV6 && !defined(IPPROTO_IPV6)
+#define IPPROTO_IPV6 41 /* windows is lame */
+#endif
+
 #if defined(__FreeBSD__) && defined(IN6_IS_ADDR_V4MAPPED)
 /* Standard definition causes type-punning problems. */
 #undef IN6_IS_ADDR_V4MAPPED
@@ -278,7 +282,7 @@ static void dgram_adjust_rcv_timeout(BIO *b)
 
                sz.i = sizeof(timeout);
                if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
-                                          (void*)&timeout, &sz) < 0)
+                                          (void*)&timeout, &sz.i) < 0)
                        { perror("getsockopt"); }
                else
                        {
@@ -748,7 +752,7 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
 
                sz.i = sizeof(timeout);
                if (getsockopt(b->num, SOL_SOCKET, SO_RCVTIMEO,
-                       (void*)&timeout, &sz) < 0)
+                       (void*)&timeout, &sz.i) < 0)
                        { perror("getsockopt"); ret = -1; }
                else
                        {
@@ -797,7 +801,7 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
 
                sz.i = sizeof(timeout);
                if (getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO,
-                       (void*)&timeout, &sz) < 0)
+                       (void*)&timeout, &sz.i) < 0)
                        { perror("getsockopt"); ret = -1; }
                else
                        {
@@ -805,7 +809,6 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
                        tv->tv_usec = (timeout % 1000) * 1000;
                        ret = sizeof(*tv);
                        }
-               }
 #else
                sz.i = sizeof(struct timeval);
                if ( getsockopt(b->num, SOL_SOCKET, SO_SNDTIMEO, 
@@ -875,7 +878,7 @@ static long dgram_ctrl(BIO *b, int cmd, long num, void *ptr)
                        case AF_INET6:
 #if defined(IPV6_DONTFRAG)
                                if ((ret = setsockopt(b->num, IPPROTO_IPV6, IPV6_DONTFRAG,
-                                       &sockopt_val, sizeof(sockopt_val))) < 0)
+                                       (const void *)&sockopt_val, sizeof(sockopt_val))) < 0)
                                        { perror("setsockopt"); ret = -1; }
 #elif defined(OPENSSL_SYS_LINUX) && defined(IPV6_MTUDISCOVER)
                                if ((sockopt_val = num ? IP_PMTUDISC_PROBE : IP_PMTUDISC_DONT),