Hi Bruno,
if (wsa->addr->sa_family == WS_AF_INET)
{
/* When the target IPv4 address ends in 255 we must always send it as
* a broadcast. Trying to send the packet without setting SO_BROADCAST
* results in EACCES, to avoid that we will manually enable the flag
* and send the packet, after that we will restore the disabled flag
* behavior. This is the most common estimate as the broadcast address
* should actually be calculated using the netmask for the interface. */
It should really be calculated using the netmask, sending a broadcast packet here is wrong if the user is not in a /24 network.
On Tue, Dec 22, 2015 at 7:58 PM, Hans Leidekker hans@codeweavers.com wrote:
Hi Bruno,
if (wsa->addr->sa_family == WS_AF_INET)
{
/* When the target IPv4 address ends in 255 we must always send it as
* a broadcast. Trying to send the packet without setting SO_BROADCAST
* results in EACCES, to avoid that we will manually enable the flag
* and send the packet, after that we will restore the disabled flag
* behavior. This is the most common estimate as the broadcast address
* should actually be calculated using the netmask for the interface. */
It should really be calculated using the netmask, sending a broadcast packet here is wrong if the user is not in a /24 network.
Hi, Hans. Thanks for the reply, I'll update the patch when I have time.
On Tuesday, December 22, 2015, Bruno Jesus 00cpxxx@gmail.com wrote:
On Tue, Dec 22, 2015 at 7:58 PM, Hans Leidekker <hans@codeweavers.com javascript:;> wrote:
Hi Bruno,
if (wsa->addr->sa_family == WS_AF_INET)
{
/* When the target IPv4 address ends in 255 we must always
send it as
* a broadcast. Trying to send the packet without setting
SO_BROADCAST
* results in EACCES, to avoid that we will manually enable
the flag
* and send the packet, after that we will restore the
disabled flag
* behavior. This is the most common estimate as the
broadcast address
* should actually be calculated using the netmask for the
interface. */
It should really be calculated using the netmask, sending a broadcast
packet here
is wrong if the user is not in a /24 network.
Hi, Hans. Thanks for the reply, I'll update the patch when I have time.
Actually I have no idea how to do this because I would have to check every UDP packet destination against all configured IP broadcast address, this would slow down too much.
And caching the broadcast addresses would introduce the problem of watching for network changes.
I believe that the current solution is ok for most use cases and I don't know if it is an issue to attempt a broadcast to a non broadcast address, I have to check that.
Or I am missing something obvious that someone will tell me in the next reply ;-)
Best wishes, Bruno