gre/sit: Don't generate link-local addr if addr_gen_mode is IN6_ADDR_GEN_MODE_NONE
Subsystems (3)
PATCH 1/1 gre/sit: Don't generate link-local addr if addr_gen_mode is IN6_ADDR_GEN_MODE_NONE
When addr_gen_mode is set to IN6_ADDR_GEN_MODE_NONE, the link-local addr should not be generated. But it isn't the case for GRE (as well as GRE6) and SIT tunnels. Make it so that tunnels consider the addr_gen_mode, especially for IN6_ADDR_GEN_MODE_NONE.
Do this in add_v4_addrs() to cover both GRE and SIT only if the addr scope is link.
--- net/ipv6/addrconf.c | 3 +++ 1 file changed, 3 insertions(+)
net/ipv6/addrconf.c +3 -0
@@ -3110,6 +3110,9 @@ static void add_v4_addrs(struct inet6_dev *idev)memcpy (&addr.s6_addr32[3 ], idev->dev->dev_addr + offset,4 );if (idev->dev->flags&IFF_POINTOPOINT ) { +if (idev->cnf.addr_gen_mode ==IN6_ADDR_GEN_MODE_NONE ) +return ; + addr.s6_addr32[0 ] =htonl (0xfe800000 ); scope =IFA_LINK ; plen =64 ;
Signature · 1 line
2.25.1
Hi,
Quoted 18 lines · Stephen Suryaputra
When
addr_gen_modeis set toIN6_ADDR_GEN_MODE_NONE, the link-local addr should not be generated. But it isn't the case for GRE (as well as GRE6) and SIT tunnels. Make it so that tunnels consider theaddr_gen_mode, especially forIN6_ADDR_GEN_MODE_NONE.Do this in
add_v4_addrs()to cover both GRE and SIT only if the addr scope is link.Signed-off-by Stephen Suryaputra <[email protected]>--- net/ipv6/addrconf.c | 3 +++ 1 file changed, 3 insertions(+)net/ipv6/addrconf.c +0
-0
net/ipv6/addrconf.c static void add_v4_addrs(struct inet6_dev *idev) · line 3115
Quoted 6 lines
net/ipv6/addrconf.c +3
-0@@ -3110,6 +3110,9 @@ static void add_v4_addrs(struct inet6_dev *idev)memcpy (&addr.s6_addr32[3 ], idev->dev->dev_addr + offset,4 );if (idev->dev->flags&IFF_POINTOPOINT ) { +if (idev->cnf.addr_gen_mode ==IN6_ADDR_GEN_MODE_NONE ) +return ; +
Maybe I am missing something, but why checking the mode only for pointtopoint? If mode is NONE shouldn't this routine just abort regardless of the interface setup?
Cheers,
Quoted 4 lines
net/ipv6/addrconf.c +0
-0addr.s6_addr32[0 ] =htonl (0xfe800000 ); scope =IFA_LINK ; plen =64 ;
Signature · 1 line
Antonio Quartulli
Quoted 5 lines · Antonio Quartulli
Maybe I am missing something, but why checking the mode only for pointtopoint? If mode is NONE shouldn't this routine just abort regardless of the interface setup?
If it isn't pointtopoint, the function sets up IPv4-compatible IPv6 address, i.e. non link-local (FE80::). addr_gen_mode NONE (1) is only controlling the generation of link-local address. Quoting from the sysctl doc:
addr_gen_mode - INTEGER
Defines how link-local and autoconf addresses are generated.
0: generate address based on EUI64 (default)
1: do no generate a link-local address, use EUI64 for addresses generated
from autoconf
2: generate stable privacy addresses, using the secret from
stable_secret (RFC7217)
3: generate stable privacy addresses, using a random secret if unset
So, I thought the checking should be strictly when the link-local address is about to be generated.
Antonio Quartulli
Acked-byHi,
Quoted 21 lines · Stephen Suryaputra
Quoted 5 lines · Antonio Quartulli
Maybe I am missing something, but why checking the mode only for pointtopoint? If mode is NONE shouldn't this routine just abort regardless of the interface setup?
If it isn't pointtopoint, the function sets up IPv4-compatible IPv6 address, i.e. non link-local (FE80::).
addr_gen_modeNONE (1) is only controlling the generation of link-local address. Quoting from the sysctl doc:
addr_gen_mode- INTEGER
Defines how link-local and autoconf addresses are generated.0: generate address based on EUI64 (default)
1: do no generate a link-local address, use EUI64 for addresses generated
from autoconf
2: generate stable privacy addresses, using the secret from
stable_secret(RFC7217)
3: generate stable privacy addresses, using a random secret if unset
Quoted 2 lines
So, I thought the checking should be strictly when the link-local address is about to be generated.
Right.
IMHO it makes sense.
Signature · 1 line
Antonio Quartulli
This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <[email protected]>:
Hello:
This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <[email protected]>:
Quoted 9 lines · On Wed, 20 Oct 2021 16:06:18 -0400 you wrote:
When
addr_gen_modeis set toIN6_ADDR_GEN_MODE_NONE, the link-local addr should not be generated. But it isn't the case for GRE (as well as GRE6) and SIT tunnels. Make it so that tunnels consider theaddr_gen_mode, especially forIN6_ADDR_GEN_MODE_NONE.Do this in
add_v4_addrs()to cover both GRE and SIT only if the addr scope is link.[...]
Here is the summary with links:
- [net-next] gre/sit: Don't generate link-local addr if addr_gen_mode is IN6_ADDR_GEN_MODE_NONE
https://git.kernel.org/netdev/net-next/c/61e18ce7348b
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html