diff --git a/src/core/netif.c b/src/core/netif.c index e68545c5..4cb2f393 100644 --- a/src/core/netif.c +++ b/src/core/netif.c @@ -1404,17 +1404,17 @@ netif_ip6_addr_set_state(struct netif *netif, s8_t addr_idx, u8_t state) /* address state has changed -> call the callback function */ NETIF_STATUS_CALLBACK(netif); } - } #if LWIP_NETIF_EXT_STATUS_CALLBACK - { - netif_ext_callback_args_t args; - args.ipv6_addr_state_changed.addr_index = addr_idx; - args.ipv6_addr_state_changed.address = netif_ip_addr6(netif, addr_idx); - netif_invoke_ext_callback(netif, LWIP_NSC_IPV6_ADDR_STATE_CHANGED, &args); - } + { + netif_ext_callback_args_t args; + args.ipv6_addr_state_changed.addr_index = addr_idx; + args.ipv6_addr_state_changed.old_state = old_state; + args.ipv6_addr_state_changed.address = netif_ip_addr6(netif, addr_idx); + netif_invoke_ext_callback(netif, LWIP_NSC_IPV6_ADDR_STATE_CHANGED, &args); + } #endif - + } LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IPv6 address %d of interface %c%c set to %s/0x%"X8_F"\n", addr_idx, netif->name[0], netif->name[1], ip6addr_ntoa(netif_ip6_addr(netif, addr_idx)), netif_ip6_addr_state(netif, addr_idx))); diff --git a/src/include/lwip/netif.h b/src/include/lwip/netif.h index 45d0d5e2..c836d9fc 100644 --- a/src/include/lwip/netif.h +++ b/src/include/lwip/netif.h @@ -598,6 +598,8 @@ typedef union { /** Index of affected IPv6 address */ s8_t addr_index; + /** Old IPv6 address state */ + u8_t old_state; /** Affected IPv6 address */ const ip_addr_t* address; } ipv6_addr_state_changed;