mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2025-08-04 13:34:38 +08:00
nd6: add cleanup function
This commit is contained in:
parent
ac0af0d7c7
commit
ac21a5f370
@ -1843,4 +1843,29 @@ nd6_reachability_hint(const ip6_addr_t * ip6addr)
|
|||||||
}
|
}
|
||||||
#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */
|
#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 */
|
#endif /* LWIP_IPV6 */
|
||||||
|
@ -68,6 +68,9 @@
|
|||||||
#if LWIP_IPV6_MLD
|
#if LWIP_IPV6_MLD
|
||||||
#include "lwip/mld6.h"
|
#include "lwip/mld6.h"
|
||||||
#endif /* LWIP_IPV6_MLD */
|
#endif /* LWIP_IPV6_MLD */
|
||||||
|
#if LWIP_IPV6
|
||||||
|
#include "lwip/nd6.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if LWIP_NETIF_STATUS_CALLBACK
|
#if LWIP_NETIF_STATUS_CALLBACK
|
||||||
#define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0)
|
#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);
|
etharp_cleanup_netif(netif);
|
||||||
}
|
}
|
||||||
#endif /* LWIP_IPV4 && LWIP_ARP */
|
#endif /* LWIP_IPV4 && LWIP_ARP */
|
||||||
|
|
||||||
|
#if LWIP_IPV6
|
||||||
|
nd6_cleanup_netif(netif);
|
||||||
|
#endif /* LWIP_IPV6 */
|
||||||
|
|
||||||
NETIF_STATUS_CALLBACK(netif);
|
NETIF_STATUS_CALLBACK(netif);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -351,6 +351,7 @@ err_t nd6_queue_packet(s8_t neighbor_index, struct pbuf * p);
|
|||||||
#if LWIP_ND6_TCP_REACHABILITY_HINTS
|
#if LWIP_ND6_TCP_REACHABILITY_HINTS
|
||||||
void nd6_reachability_hint(const ip6_addr_t * ip6addr);
|
void nd6_reachability_hint(const ip6_addr_t * ip6addr);
|
||||||
#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */
|
#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */
|
||||||
|
void nd6_cleanup_netif(struct netif * netif);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user