Skip to content

Commit ab3f77e

Browse files
committed
gnrc/ipv6/nib: rejoin ipv6_addr_all_nodes_link_local on interface up
1 parent 0e1632c commit ab3f77e

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

sys/net/gnrc/network_layer/ipv6/nib/_nib-router.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ static inline void _init_iface_router(gnrc_netif_t *netif)
5353
if (IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_6LBR)) {
5454
netif->flags |= GNRC_NETIF_FLAGS_6LO_ABR;
5555
}
56-
57-
gnrc_netif_ipv6_group_join_internal(netif, &ipv6_addr_all_routers_link_local);
5856
}
5957

6058
/**

sys/net/gnrc/network_layer/ipv6/nib/nib.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,14 @@ void gnrc_ipv6_nib_iface_up(gnrc_netif_t *netif)
145145
_init_iface_arsm(netif);
146146
netif->ipv6.rs_sent = 0;
147147
netif->ipv6.na_sent = 0;
148+
#if IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_ROUTER)
149+
if (gnrc_netif_ipv6_group_join_internal(netif, &ipv6_addr_all_routers_link_local)) {
150+
DEBUG("nib: Can't join link-local all-routers on interface %u\n", netif->pid);
151+
}
152+
#endif
153+
if (gnrc_netif_ipv6_group_join_internal(netif, &ipv6_addr_all_nodes_link_local) < 0) {
154+
DEBUG("nib: Can't join link-local all-nodes on interface %u\n", netif->pid);
155+
}
148156
_add_static_lladdr(netif);
149157
_auto_configure_addr(netif, &ipv6_addr_link_local_prefix, 64U);
150158
if (_should_search_rtr(netif)) {
@@ -190,6 +198,10 @@ void gnrc_ipv6_nib_iface_down(gnrc_netif_t *netif, bool send_final_ra)
190198
gnrc_netif_ipv6_addr_remove_internal(netif, &netif->ipv6.addrs[i]);
191199
}
192200
}
201+
gnrc_netif_ipv6_group_leave_internal(netif, &ipv6_addr_all_nodes_link_local);
202+
#if IS_ACTIVE(CONFIG_GNRC_IPV6_NIB_ROUTER)
203+
gnrc_netif_ipv6_group_leave_internal(netif, &ipv6_addr_all_routers_link_local);
204+
#endif
193205

194206
gnrc_netif_release(netif);
195207
}
@@ -208,13 +220,6 @@ void gnrc_ipv6_nib_init_iface(gnrc_netif_t *netif)
208220
#endif /* CONFIG_GNRC_IPV6_NIB_SLAAC || CONFIG_GNRC_IPV6_NIB_6LN */
209221
_init_iface_router(netif);
210222
gnrc_netif_init_6ln(netif);
211-
if (gnrc_netif_ipv6_group_join_internal(netif,
212-
&ipv6_addr_all_nodes_link_local) < 0) {
213-
DEBUG("nib: Can't join link-local all-nodes on interface %u\n",
214-
netif->pid);
215-
gnrc_netif_release(netif);
216-
return;
217-
}
218223

219224
gnrc_netif_release(netif);
220225
}

0 commit comments

Comments
 (0)