Skip to content

Commit d3623dd

Browse files
Guillaume NaultPaolo Abeni
authored andcommitted
ipv6: Simplify link-local address generation for IPv6 GRE.
Since commit 3e6a024 ("gre: Fix again IPv6 link-local address generation."), addrconf_gre_config() has stopped handling IP6GRE devices specially and just calls the regular addrconf_addr_gen() function to create their link-local IPv6 addresses. We can thus avoid using addrconf_gre_config() for IP6GRE devices and use the normal IPv6 initialisation path instead (that is, jump directly to addrconf_dev_config() in addrconf_init_auto_addrs()). See commit 3e6a024 ("gre: Fix again IPv6 link-local address generation.") for a deeper explanation on how and why GRE devices started handling their IPv6 link-local address generation specially, why it was a problem, and why this is not even necessary in most cases (especially for GRE over IPv6). Signed-off-by: Guillaume Nault <gnault@redhat.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/a9144be9c7ec3cf09f25becae5e8fdf141fde9f6.1750075076.git.gnault@redhat.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent f6be1f2 commit d3623dd

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

net/ipv6/addrconf.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3208,7 +3208,7 @@ static void add_addr(struct inet6_dev *idev, const struct in6_addr *addr,
32083208
}
32093209
}
32103210

3211-
#if IS_ENABLED(CONFIG_IPV6_SIT) || IS_ENABLED(CONFIG_NET_IPGRE) || IS_ENABLED(CONFIG_IPV6_GRE)
3211+
#if IS_ENABLED(CONFIG_IPV6_SIT) || IS_ENABLED(CONFIG_NET_IPGRE)
32123212
static void add_v4_addrs(struct inet6_dev *idev)
32133213
{
32143214
struct in6_addr addr;
@@ -3463,6 +3463,7 @@ static void addrconf_dev_config(struct net_device *dev)
34633463
(dev->type != ARPHRD_IEEE1394) &&
34643464
(dev->type != ARPHRD_TUNNEL6) &&
34653465
(dev->type != ARPHRD_6LOWPAN) &&
3466+
(dev->type != ARPHRD_IP6GRE) &&
34663467
(dev->type != ARPHRD_TUNNEL) &&
34673468
(dev->type != ARPHRD_NONE) &&
34683469
(dev->type != ARPHRD_RAWIP)) {
@@ -3518,7 +3519,7 @@ static void addrconf_sit_config(struct net_device *dev)
35183519
}
35193520
#endif
35203521

3521-
#if IS_ENABLED(CONFIG_NET_IPGRE) || IS_ENABLED(CONFIG_IPV6_GRE)
3522+
#if IS_ENABLED(CONFIG_NET_IPGRE)
35223523
static void addrconf_gre_config(struct net_device *dev)
35233524
{
35243525
struct inet6_dev *idev;
@@ -3536,7 +3537,7 @@ static void addrconf_gre_config(struct net_device *dev)
35363537
* which is in EUI64 mode (as __ipv6_isatap_ifid() would fail in this
35373538
* case). Such devices fall back to add_v4_addrs() instead.
35383539
*/
3539-
if (!(dev->type == ARPHRD_IPGRE && *(__be32 *)dev->dev_addr == 0 &&
3540+
if (!(*(__be32 *)dev->dev_addr == 0 &&
35403541
idev->cnf.addr_gen_mode == IN6_ADDR_GEN_MODE_EUI64)) {
35413542
addrconf_addr_gen(idev, true);
35423543
return;
@@ -3557,8 +3558,7 @@ static void addrconf_init_auto_addrs(struct net_device *dev)
35573558
addrconf_sit_config(dev);
35583559
break;
35593560
#endif
3560-
#if IS_ENABLED(CONFIG_NET_IPGRE) || IS_ENABLED(CONFIG_IPV6_GRE)
3561-
case ARPHRD_IP6GRE:
3561+
#if IS_ENABLED(CONFIG_NET_IPGRE)
35623562
case ARPHRD_IPGRE:
35633563
addrconf_gre_config(dev);
35643564
break;

0 commit comments

Comments
 (0)