generic: 5.10: backport Treat IPv4 segment's lowest address as unicast
Backport patch from kernel 5.14. Treat only the highest, not the lowest, IPv4 address within a local subnet as a broadcast address, as subnets do not need two different broadcast addresses and networking documentation consistently prefers the highest address as broadcast. This patch was merged in upstream net-next tree in May 2021 at https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=94c821c74bf5 This eventually frees up one address per subnet. It matches behavior suggested in our Internet-Draft, and also the default behavior of OpenBSD and FreeBSD. Signed-off-by: Seth David Schoen <schoen@loyalty.org>
This commit is contained in:
		 Seth David Schoen
					Seth David Schoen
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							738b04c881
						
					
				
				
					commit
					68f983ba41
				
			| @@ -0,0 +1,32 @@ | |||||||
|  | From 94c821c74bf5fe0c25e09df5334a16f98608db90 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Seth David Schoen <schoen@loyalty.org> | ||||||
|  | Date: Wed, 12 May 2021 21:37:49 -0700 | ||||||
|  | Subject: [PATCH] ip: Treat IPv4 segment's lowest address as unicast | ||||||
|  |  | ||||||
|  | Treat only the highest, not the lowest, IPv4 address within a local | ||||||
|  | subnet as a broadcast address. | ||||||
|  |  | ||||||
|  | Signed-off-by: Seth David Schoen <schoen@loyalty.org> | ||||||
|  | Suggested-by: John Gilmore <gnu@toad.com> | ||||||
|  | Acked-by: Dave Taht <dave.taht@gmail.com> | ||||||
|  | Reviewed-by: David Ahern <dsahern@kernel.org> | ||||||
|  | Signed-off-by: David S. Miller <davem@davemloft.net> | ||||||
|  | Link: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=94c821c74bf5 | ||||||
|  | --- | ||||||
|  |  net/ipv4/fib_frontend.c | 4 +--- | ||||||
|  |  1 file changed, 1 insertion(+), 3 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/net/ipv4/fib_frontend.c | ||||||
|  | +++ b/net/ipv4/fib_frontend.c | ||||||
|  | @@ -1129,10 +1129,8 @@ void fib_add_ifaddr(struct in_ifaddr *if | ||||||
|  |  				  prefix, ifa->ifa_prefixlen, prim, | ||||||
|  |  				  ifa->ifa_rt_priority); | ||||||
|  |   | ||||||
|  | -		/* Add network specific broadcasts, when it takes a sense */ | ||||||
|  | +		/* Add the network broadcast address, when it makes sense */ | ||||||
|  |  		if (ifa->ifa_prefixlen < 31) { | ||||||
|  | -			fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix, 32, | ||||||
|  | -				  prim, 0); | ||||||
|  |  			fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix | ~mask, | ||||||
|  |  				  32, prim, 0); | ||||||
|  |  			arp_invalidate(dev, prefix | ~mask, false); | ||||||
		Reference in New Issue
	
	Block a user