@@ -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