[Spread-users] bzero and bind() on FreeBSD

Yair Amir yairamir at cnds.jhu.edu
Sat Apr 6 21:40:57 EST 2002


Hi Joshua,

The idea behind the fix looks good to me.
Probably using memset is better than bzero for portability sake.

	Cheers,

	:) Yair.

Joshua Goodall wrote:

> This was interesting: whilst working on the updated FreeBSD port
> for 3.16.2, I ran into some trouble when testing Spread_Segment
> with the extra interface stanza (e.g.
> 
> Spread_Segment 10.1.2.255 {
>         host1   10.1.2.1 {
>                 D 10.1.2.1
>                 C 127.0.0.1
>         }
>         host2   10.1.2.2 {
>                 D 10.1.2.2
>                 C 127.0.0.1
>         }
> }
> 
> ... the OS refused to allow a UDP bind to 10.1.2.1!
> 
> Much head-scratching ensued. The problem eventually revealed itself
> as a lack of bzero'ing the struct sockaddr_in, to which the syscall
> was very sensitive (in particular, the sin_zero part).
> 
> The following patches fixed the problem. I have not tested them
> on any other platform, but they fixed this oddity, and they're going
> into the FreeBSD port of 3.16.2.
> 
> Joshua
> 
> --- data_link.c.orig	Sat Apr  6 22:45:23 2002
> +++ data_link.c	Sat Apr  6 22:48:01 2002
> @@ -93,6 +93,7 @@
>  	{
>          	soc_addr.sin_family    	= AF_INET;
>          	soc_addr.sin_port	= htons(port);
> +		bzero(&soc_addr.sin_zero, sizeof(soc_addr.sin_zero));
>                  if (interface_address == 0)
>                          soc_addr.sin_addr.s_addr= INADDR_ANY;
>                  else 
> --- session.c.orig	Sat Apr  6 22:47:26 2002
> +++ session.c	Sat Apr  6 22:47:42 2002
> @@ -347,6 +347,7 @@
>  
>  	/* Initiation of the INET socket */
>  
> +	bzero(&inet_addr.sin_zero, sizeof(inet_addr.sin_zero));
>  	inet_addr.sin_family	= AF_INET;
>  	inet_addr.sin_port	= htons(port);
>          Accept_inet_mbox_num = 0;
> 
> 
> _______________________________________________
> Spread-users mailing list
> Spread-users at lists.spread.org
> http://lists.spread.org/mailman/listinfo/spread-users
> 
> 
> 







More information about the Spread-users mailing list