From: Michael Brown Date: Mon, 19 May 2008 15:19:46 +0000 (+0100) Subject: [IPv4] Fix multicast address checking X-Git-Tag: v0.9.4~165 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1dcc60e5ad4fe9653035282615e780c0bf64ce9e;p=thirdparty%2Fipxe.git [IPv4] Fix multicast address checking From: Viswanath Krishnamurthy The current ipv4 incorrectly checks the IP address for multicast address. This causes valid IPv4 unicast address to be trated as multicast address For e.g if the PXE/tftp server IP address is 192.168.4.XXX where XXX is 224 or greater, it gets treated as multicast address and a ethernet multicast address is sent out on the wire causing timeouts --- diff --git a/src/net/ipv4.c b/src/net/ipv4.c index 591293b7f..82a13c334 100644 --- a/src/net/ipv4.c +++ b/src/net/ipv4.c @@ -273,7 +273,7 @@ static int ipv4_ll_addr ( struct in_addr dest, struct in_addr src, memcpy ( ll_dest, ll_protocol->ll_broadcast, ll_protocol->ll_addr_len ); return 0; - } else if ( IN_MULTICAST ( dest.s_addr ) ) { + } else if ( IN_MULTICAST ( ntohl ( dest.s_addr ) ) ) { /* Special case: IPv4 multicast over Ethernet. This * code may need to be generalised once we find out * what happens for other link layers.