diff options
| author | Frédéric Desbiens <[email protected]> | 2026-01-09 10:11:33 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-09 10:11:33 -0500 |
| commit | a7aa567522229d230f873b08bc9b8a3fb19efe4d (patch) | |
| tree | 6bfbb1aa5c9af4797c0141973c1775b1932f60de | |
| parent | e306027c2f60db4653e120460da523ec561edd1d (diff) | |
| parent | 77a63c7ab198c0ba75397dda26d67b411ae109fd (diff) | |
Merge commit from fork
When processing PACKET_TOO_BIG, send ND request if a new ND entry is created
| -rw-r--r-- | common/src/nx_icmpv6_process_packet_too_big.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/common/src/nx_icmpv6_process_packet_too_big.c b/common/src/nx_icmpv6_process_packet_too_big.c index 53294b16..a7adb947 100644 --- a/common/src/nx_icmpv6_process_packet_too_big.c +++ b/common/src/nx_icmpv6_process_packet_too_big.c @@ -164,6 +164,20 @@ NX_INTERFACE *if_ptr; status = _nx_icmpv6_dest_table_add(ip_ptr, original_destination_ip, &dest_entry_ptr, &default_next_hop_address[0], mtu, 0, packet_ptr -> nx_packet_address.nx_packet_ipv6_address_ptr); + + /* If a new ND cache is created, force the entry to be "INCOMPLETE" so that the timer logic will + re-try, and then timeout if no responses are received. */ + if(dest_entry_ptr -> nx_ipv6_destination_entry_nd_entry != NX_NULL) + { + ND_CACHE_ENTRY *nd_entry = dest_entry_ptr -> nx_ipv6_destination_entry_nd_entry; + if(nd_entry -> nx_nd_cache_nd_status == ND_CACHE_STATE_CREATED) + { + _nx_icmpv6_send_ns(ip_ptr, &nd_entry -> nx_nd_cache_dest_ip[0], 1, + nd_entry -> nx_nd_cache_outgoing_address, 0, nd_entry); + nd_entry->nx_nd_cache_num_solicit = NX_MAX_MULTICAST_SOLICIT - 1; + nd_entry->nx_nd_cache_timer_tick = ip_ptr -> nx_ipv6_retrans_timer_ticks; + } + } } /* Release the packet. */ |
