From 1dcc60e5ad4fe9653035282615e780c0bf64ce9e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 19 May 2008 16:19:46 +0100 Subject: [PATCH] [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 --- src/net/ipv4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/ipv4.c b/src/net/ipv4.c index 591293b7..82a13c33 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.