Issue:
A bug was identified where calling dns_clear_cache() after a DNS query request
but before the query response is received causes the dns_clear_cache() function
to clear the dns_table database. This results in the netconn layer
waiting indefinitely for the dns_call_found() callback, leading to a deadlock.
Resolution:
Added logic to invoke dns_call_found() for any active DNS entries before
clearing the entire DNS cache in the dns_clear_cache() function.
This change ensures that in-use entries are handled properly,
preventing the system from entering a deadlock state.
* This issue should be fixed for the upstream
* Reference to the RFC-4861#section-4.3 source Link-Layer address
SHOULD be included in unicast solicitations. But there might be
some NS messages which do not contain source link-layer address option.
* NA will be replied to those NS messages which do not contain
source link layer option.
1. Fix enable/disable to properly allocate and deallocate tables.
Current algorithm is just broken.
2. Introduce eviction policy when table gets full: oldest connection
is evicted, instead of new ones getting silently dropped. this
results in much better behavior with small tables than before.
When TCP connection is dropped, RSTs are sent both ways to inform
parties instead of dropping silently. thiw requires additional 8
bytes per entry but is, again, a big improvement for clients in
terms of usability.
3. FIxed handling of timestamp wraparound (every ~50 days of uptime).
3. Added ip_portmap_get() to retrieve current port mapping settings.
4. Added ip_napt_get_stats() for some insight into the state of NAT.
This is a minor fix, as sys_sem_t is defined as
`typedef struct sys_sem * sys_sem_t;`
so the size is still the same (size of pointer)
Closes https://github.com/espressif/esp-lwip/issues/54
In case FIN flag was present in the *next* segment,
it's copied to the current *inseg* and thus it's length
needs to be adjusted, so the segment is trimmed correctly.
Fix for the h_length field of struct hostent returned by gethostbyname() functions was returning 24 bytes instead of 4 and h_addrtype was returning AF_INET even for IPv6 address.
Closes https://github.com/espressif/esp-lwip/issues/50
As this tcp_abort could be directly called by application thread without
locking the TCP/TP core.
This commit also reworks and fixes CI:
1) Unit tests build with format-f warnings with GCC-11
2) Reworked to use common shell scripts from both GitLab and GitHub CI