Index: apps/s_cb.c
===================================================================
RCS file: /v/openssl/cvs/openssl/apps/s_cb.c,v
retrieving revision 1.30
diff -r1.30 s_cb.c
694a695,697
> #if OPENSSL_USE_IPV6
> 	struct sockaddr_storage peer;
> #else
696c699,700
< 	
---
> #endif
> 
711a716,731
> #if OPENSSL_USE_IPV6
> 	length = 0;
> 	switch (peer.ss_family)
> 		{
> 	case AF_INET:
> 		length += sizeof(struct in_addr);
> 		break;
> 	case AF_INET6:
> 		length += sizeof(struct in6_addr);
> 		break;
> 	default:
> 		OPENSSL_assert(0);
> 		break;
> 		}
> 	length += sizeof(in_port_t);
> #else
713a734
> #endif
721,723c742,769
< 	
< 	memcpy(buffer, &peer.sin_addr, sizeof(peer.sin_addr));
< 	memcpy(buffer + sizeof(peer.sin_addr), &peer.sin_port, sizeof(peer.sin_port));
---
> 
> #if OPENSSL_USE_IPV6
> 	switch (peer.ss_family)
> 		{
> 	case AF_INET:
> 		memcpy(buffer,
> 		       &(((struct sockaddr_in *)&peer)->sin_port),
> 		       sizeof(in_port_t));
> 		memcpy(buffer + sizeof(in_port_t),
> 		       &(((struct sockaddr_in *)&peer)->sin_addr),
> 		       sizeof(struct in_addr));
> 		break;
> 	case AF_INET6:
> 		memcpy(buffer,
> 		       &(((struct sockaddr_in6 *)&peer)->sin6_port),
> 		       sizeof(in_port_t));
> 		memcpy(buffer + sizeof(in_port_t),
> 		       &(((struct sockaddr_in6 *)&peer)->sin6_addr),
> 		       sizeof(struct in6_addr));
> 		break;
> 	default:
> 		OPENSSL_assert(0);
> 		break;
> 		}
> #else
> 	memcpy(buffer, &peer.sin_port, sizeof(peer.sin_port));
> 	memcpy(buffer + sizeof(peer.sin_port), &peer.sin_addr, sizeof(peer.sin_addr));
> #endif
739a786,788
> #if OPENSSL_USE_IPV6
> 	struct sockaddr_storage peer;
> #else
741c790,791
< 	
---
> #endif
> 
749a800,815
> #if OPENSSL_USE_IPV6
> 	length = 0;
> 	switch (peer.ss_family)
> 		{
> 	case AF_INET:
> 		length += sizeof(struct in_addr);
> 		break;
> 	case AF_INET6:
> 		length += sizeof(struct in6_addr);
> 		break;
> 	default:
> 		OPENSSL_assert(0);
> 		break;
> 		}
> 	length += sizeof(in_port_t);
> #else
751a818
> #endif
759,761c826,853
< 	
< 	memcpy(buffer, &peer.sin_addr, sizeof(peer.sin_addr));
< 	memcpy(buffer + sizeof(peer.sin_addr), &peer.sin_port, sizeof(peer.sin_port));
---
> 
> #if OPENSSL_USE_IPV6
> 	switch (peer.ss_family)
> 		{
> 	case AF_INET:
> 		memcpy(buffer,
> 		       &(((struct sockaddr_in *)&peer)->sin_port),
> 		       sizeof(in_port_t));
> 		memcpy(buffer + sizeof(in_port_t),
> 		       &(((struct sockaddr_in *)&peer)->sin_addr),
> 		       sizeof(struct in_addr));
> 		break;
> 	case AF_INET6:
> 		memcpy(buffer,
> 		       &(((struct sockaddr_in6 *)&peer)->sin6_port),
> 		       sizeof(in_port_t));
> 		memcpy(buffer + sizeof(in_port_t),
> 		       &(((struct sockaddr_in6 *)&peer)->sin6_addr),
> 		       sizeof(struct in6_addr));
> 		break;
> 	default:
> 		OPENSSL_assert(0);
> 		break;
> 		}
> #else
> 	memcpy(buffer, &peer.sin_port, sizeof(peer.sin_port));
> 	memcpy(buffer + sizeof(peer.sin_port), &peer.sin_addr, sizeof(peer.sin_addr));
> #endif
767c859
< 	
---
> 
Index: crypto/bio/bss_dgram.c
===================================================================
RCS file: /v/openssl/cvs/openssl/crypto/bio/bss_dgram.c,v
retrieving revision 1.23
diff -r1.23 bss_dgram.c
111c111,115
< 	struct sockaddr peer;
---
> #if OPENSSL_USE_IPV6
> 	struct sockaddr_storage peer;
> #else
> 	struct sockaddr_in peer;
> #endif
277c281,285
< 	struct sockaddr peer;
---
> #if OPENSSL_USE_IPV6
> 	struct sockaddr_storage peer;
> #else
> 	struct sockaddr_in peer;
> #endif
290c298
< 		ret=recvfrom(b->num,out,outl,0,&peer,(void *)&peerlen);
---
> 		ret=recvfrom(b->num,out,outl,0,(struct sockaddr *)&peer,(void *)&peerlen);
315,317c323,327
<     if ( data->connected )
<         ret=writesocket(b->num,in,inl);
<     else
---
> 	if ( data->connected )
> 		ret=writesocket(b->num,in,inl);
> 	else
> #if OPENSSL_USE_IPV6
> 		if (data->peer.ss_family == AF_INET)
319c329
<         ret=sendto(b->num, (char *)in, inl, 0, &data->peer, sizeof(data->peer));
---
> 			ret=sendto(b->num, (char *)in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in));
321c331,344
<         ret=sendto(b->num, in, inl, 0, &data->peer, sizeof(data->peer));
---
> 			ret=sendto(b->num, in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in));
> #endif
> 		else
> #if defined(NETWARE_CLIB) && defined(NETWARE_BSDSOCK)
> 			ret=sendto(b->num, (char *)in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in6));
> #else
> 			ret=sendto(b->num, in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in6));
> #endif
> #else
> #if defined(NETWARE_CLIB) && defined(NETWARE_BSDSOCK)
> 		ret=sendto(b->num, (char *)in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in));
> #else
> 		ret=sendto(b->num, in, inl, 0, (const struct sockaddr *)&data->peer, sizeof(struct sockaddr_in));
> #endif
408c431,435
< 			memcpy(&(data->peer),to, sizeof(struct sockaddr));
---
> #if OPENSSL_USE_IPV6
> 			memcpy(&(data->peer),to, sizeof(struct sockaddr_storage));
> #else
> 			memcpy(&(data->peer),to, sizeof(struct sockaddr_in));
> #endif
513c540,544
< 			memcpy(&(data->peer),to, sizeof(struct sockaddr));
---
> #if OPENSSL_USE_IPV6
> 			memcpy(&(data->peer),to, sizeof(struct sockaddr_storage));
> #else
> 			memcpy(&(data->peer),to, sizeof(struct sockaddr_in));
> #endif
518c549,553
< 			memset(&(data->peer), 0x00, sizeof(struct sockaddr));
---
> #if OPENSSL_USE_IPV6
> 			memset(&(data->peer), 0x00, sizeof(struct sockaddr_storage));
> #else
> 			memset(&(data->peer), 0x00, sizeof(struct sockaddr_in));
> #endif
521,522c556,557
<     case BIO_CTRL_DGRAM_GET_PEER:
<         to = (struct sockaddr *) ptr;
---
> 	case BIO_CTRL_DGRAM_GET_PEER:
> 		to = (struct sockaddr *) ptr;
524,528c559,568
<         memcpy(to, &(data->peer), sizeof(struct sockaddr));
< 		ret = sizeof(struct sockaddr);
<         break;
<     case BIO_CTRL_DGRAM_SET_PEER:
<         to = (struct sockaddr *) ptr;
---
> #if OPENSSL_USE_IPV6
> 		memcpy(to, &(data->peer), sizeof(struct sockaddr_storage));
> 		ret = sizeof(struct sockaddr_storage);
> #else
> 		memcpy(to, &(data->peer), sizeof(struct sockaddr_in));
> 		ret = sizeof(struct sockaddr_in);
> #endif
> 		break;
> 	case BIO_CTRL_DGRAM_SET_PEER:
> 		to = (struct sockaddr *) ptr;
530,531c570,575
<         memcpy(&(data->peer), to, sizeof(struct sockaddr));
<         break;
---
> #if OPENSSL_USE_IPV6
> 		memcpy(&(data->peer), to, sizeof(struct sockaddr_storage));
> #else
> 		memcpy(&(data->peer), to, sizeof(struct sockaddr_in));
> #endif
> 		break;
533c577
< 		memcpy(&(data->next_timeout), ptr, sizeof(struct timeval));		
---
> 		memcpy(&(data->next_timeout), ptr, sizeof(struct timeval));
