nd6: add cleanup function

This commit is contained in:
Jan Breuer 2016-05-06 16:15:20 +02:00 committed by goldsimon
parent ac0af0d7c7
commit ac21a5f370
3 changed files with 34 additions and 0 deletions

View File

@ -1843,4 +1843,29 @@ nd6_reachability_hint(const ip6_addr_t * ip6addr)
}
#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */
void
nd6_cleanup_netif(struct netif * netif)
{
u8_t i;
s8_t router_index;
for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) {
if(prefix_list[i].netif == netif) {
prefix_list[i].netif = NULL;
prefix_list[i].flags = 0;
}
}
for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
if(neighbor_cache[i].netif == netif) {
for (router_index = 0; router_index < LWIP_ND6_NUM_ROUTERS; router_index++) {
if (default_router_list[router_index].neighbor_entry == &neighbor_cache[i]) {
default_router_list[router_index].neighbor_entry = NULL;
default_router_list[router_index].flags = 0;
}
}
neighbor_cache[i].isrouter = 0;
nd6_free_neighbor_cache_entry(i);
}
}
}
#endif /* LWIP_IPV6 */

View File

@ -68,6 +68,9 @@
#if LWIP_IPV6_MLD
#include "lwip/mld6.h"
#endif /* LWIP_IPV6_MLD */
#if LWIP_IPV6
#include "lwip/nd6.h"
#endif
#if LWIP_NETIF_STATUS_CALLBACK
#define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0)
@ -594,6 +597,11 @@ netif_set_down(struct netif *netif)
etharp_cleanup_netif(netif);
}
#endif /* LWIP_IPV4 && LWIP_ARP */
#if LWIP_IPV6
nd6_cleanup_netif(netif);
#endif /* LWIP_IPV6 */
NETIF_STATUS_CALLBACK(netif);
}
}

View File

@ -351,6 +351,7 @@ err_t nd6_queue_packet(s8_t neighbor_index, struct pbuf * p);
#if LWIP_ND6_TCP_REACHABILITY_HINTS
void nd6_reachability_hint(const ip6_addr_t * ip6addr);
#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */
void nd6_cleanup_netif(struct netif * netif);
#ifdef __cplusplus
}