[Spread-users] Bug in Spread for Windows?

Michael Chelnokov michelnok at mail.ru
Tue Nov 14 09:03:22 EST 2006


Hello Jonathan,

Thanks for your response.

As per spread.conf, I have to specify interfaces for the hosts.
I tried two different environments:

1. Computers with Windows XP SP2 and one network interface each, one subnet 
(192.168.0.0/24):

Spread_Segment  192.168.0.255:2345 {

 computer_11 192.168.0.11 {
 D 192.168.0.11
 C 127.0.0.1 }

 computer_12 192.168.0.12 {
 D 192.168.0.12
 C 127.0.0.1 }

}

2. Servers with Windows 2003 Standard Edition SP1 and two network interfaces 
each, two private networks (192.168.11.0/24 and 192.168.12.0/24) and two 
"public" networks (192.168.21.0/24 <- router -> 192.168.22.0/24):

Spread_Segment 192.168.11.255:2345 {

 server_11 192.168.21.11 {
 D 192.168.21.11
 D 192.168.11.11
 C 127.0.0.1 }

 server_12 192.168.21.12 {
 D 192.168.21.12
 D 192.168.11.12
 C 127.0.0.1 }

}

Spread_Segment 192.168.12.255:2345 {

 server_13 192.168.22.13 {
 D 192.168.22.13
 D 192.168.12.13
 C 127.0.0.1 }

 server_14 192.168.22.14 {
 D 192.168.22.14
 D 192.168.12.14
 C 127.0.0.1 }

}

In both cases the Spread daemon can not start because it tries to bind to a 
broadcast address.
I have tried the following binaries:
- Spread 3.17.3 binaries from spread.org;
- Spread 4.0.0rc2 built from sources by Visual Studio 2005 and with 
recommendations from Win32BuildInstructions.pdf

I sure UDP broadcast packets normally work, I have tested them. Windows does 
not replies to broadcast ping, but anyway, broadcast packets work both with 
my simple test program and with patched Spread :-)
I just disabled call to DL_init_channel( RECV_CHANNEL, My.port, 
Bcast_address, Bcast_address ) in Net_init() and Spread is working fine.

In UNIX, a socket has to be bound to a broadcast address in order to receive 
broadcast packets, it doesn't receive broadcast packets on a socket bound to 
a regular address. I.e. it is needed to bind two sockets to two addresses 
(192.168.0.255 and 192.168.0.11 in my 1st configuration for server_11).
In Windows, a socket can not be bound to a broadcast address, but a socket 
bound to a regular address will receive broadcast packets. I.e. it is enough 
to bind one socket to one address (192.168.0.11 in my 1st configuration for 
server_11) to receive both unicast and broadcast packets. A call to bind to 
192.168.0.255 fails with error WSAEADDRNOTAVAIL.

Best regards,
Michael Chelnokov.

----- Original Message ----- 
From: "Jonathan Stanton" <jonathan at cnds.jhu.edu>
To: "Michael Chelnokov" <michelnok at mail.ru>
Cc: <spread-users at lists.spread.org>
Sent: Tuesday, November 14, 2006 11:00 AM
Subject: Re: [Spread-users] Bug in Spread for Windows?


> Hello,
>
> I have not seen this problem before and we do use windows occasionally, so 
> it
> should work.
>
> In your spread.conf file, did you configure any specific interfaces for 
> the hosts
> in your Spread_segment? Or did you just list one IP for each machine? (The 
> reason
> I ask is that if you specify specific interfaces, that causes the binds to 
> be done
> differently)
>
> Are you sure that broadcast packets normally work on your machine (you can 
> ping the
> broadcast address for your network and get replies from many other 
> machines)? You
> can also replace the broadcast address in spread.conf with an IP multicast 
> address
> and try that. Let us know if that works while broadcast doesn't.
>
> If you can also let us know exactly what version of windows you are using 
> and how
> you built spread (or where you got the binaries)
>
> Thanks,
>
> Jonathan





More information about the Spread-users mailing list