nuttx/net
chao.an 9bdeed73e2 net/tcp: fix assertion of fallback connection alloc
When the free connection list is unenough to alloc a new instance,
the TCP stack will reuse the currently closed connection, but if
the handle is not released by the user via close(2), the reference
count of the connection remains in a non-zero value, it will cause
the assertion to fail, so when the handle is not released we should
not use such a conn instance when being actively closed, and ensure
that the reference count is assigned within the net lock protection

|(gdb) bt
|#0  up_assert (filename=0x565c78f7 "tcp/tcp_conn.c", lineno=771) at sim/up_assert.c:75
|#1  0x56566177 in _assert (filename=0x565c78f7 "tcp/tcp_conn.c", linenum=771) at assert/lib_assert.c:36
|#2  0x5657d620 in tcp_free (conn=0x565fb3e0 <g_tcp_connections>) at tcp/tcp_conn.c:771
|#3  0x5657d5a1 in tcp_alloc (domain=2 '\002') at tcp/tcp_conn.c:700
|#4  0x565b1f50 in inet_tcp_alloc (psock=0xf3dea150) at inet/inet_sockif.c:144
|#5  0x565b2082 in inet_setup (psock=0xf3dea150, protocol=0) at inet/inet_sockif.c:253
|#6  0x565b1bf0 in psock_socket (domain=2, type=1, protocol=0, psock=0xf3dea150) at socket/socket.c:121
|#7  0x56588f5f in socket (domain=2, type=1, protocol=0) at socket/socket.c:278
|#8  0x565b11c0 in hello_main (argc=1, argv=0xf3dfab10) at hello_main.c:35
|#9  0x56566631 in nxtask_startup (entrypt=0x565b10ef <hello_main>, argc=1, argv=0xf3dfab10) at sched/task_startup.c:70
|#10 0x565597fa in nxtask_start () at task/task_start.c:134

Signed-off-by: chao.an <anchao@xiaomi.com>
2022-07-09 09:37:49 +09:00
..
arp net: Remove devif_timer from comment 2022-06-07 20:15:41 +03:00
bluetooth net: Remove the unnecessary initialization code 2022-03-12 19:24:17 +02:00
can net: Fix typos, update comments in Kconfigs 2022-05-06 08:54:58 +02:00
devif Packet dropped in IPv4/v6 input is now an info, not a warning 2022-06-09 16:07:34 +02:00
icmp net: Ensure sendmsg and sendfile return -EAGAIN in case of timeout 2022-06-28 06:19:13 +03:00
icmpv6 net: Ensure sendmsg and sendfile return -EAGAIN in case of timeout 2022-06-28 06:19:13 +03:00
ieee802154 net: Remove the unnecessary initialization code 2022-03-12 19:24:17 +02:00
igmp net/igmp: Remove igmp_initialize 2022-03-12 19:24:17 +02:00
inet tcp: added debug asserts and logging to investigate the rare (conn->dev == NULL) bug in callback handlers 2022-02-26 11:48:07 -03:00
ipforward net: Remove devif_timer from comment 2022-06-07 20:15:41 +03:00
local fs/poll: change format for type pollevent_t 2022-04-07 12:14:06 +08:00
mld net/tcp/netdev/mld: correct the netlock handling 2022-02-03 11:09:18 -03:00
neighbor net: use HTONS, NTOHS, HTONL, NTOHL macro in kernel code 2022-01-18 10:59:47 +01:00
netdev net_if: add IFF_LOOPBACK/POINTOPOINT/MULTICAST/BROADCAST 2022-07-03 09:57:10 -04:00
netlink Fix ENOENT errors when polling on Netlink socket 2022-05-14 00:35:29 +03:00
pkt net: Remove the unnecessary initialization code 2022-03-12 19:24:17 +02:00
procfs libc: Rename match to fnmatch 2021-08-02 08:23:35 -03:00
route use rmutex inside of all repeated implementation 2022-05-30 19:43:48 +08:00
rpmsg openamp: Change the dependence from OPENAMP to RPTUN 2022-04-05 10:05:41 +03:00
sixlowpan net: Ensure sendmsg and sendfile return -EAGAIN in case of timeout 2022-06-28 06:19:13 +03:00
socket net:fix coverity warning 2022-04-03 14:37:53 +03:00
tcp net/tcp: fix assertion of fallback connection alloc 2022-07-09 09:37:49 +09:00
udp sched/wqueue: Change the return type of work_notifier_teardown to void 2022-05-14 00:35:29 +03:00
usrsock fix: usrsock iovec_do skip empty iov 2022-04-14 02:47:31 +08:00
utils Replace nxsem_timedwait_uninterruptible with nxsem_tickwait_uninterruptible 2022-05-15 13:55:58 +03:00
Kconfig net: Fix typos, update comments in Kconfigs 2022-05-06 08:54:58 +02:00
Makefile
net_initialize.c net: Reoder the initialize sequence(mac->ip->tcp/udp) 2022-03-12 19:24:17 +02:00
README.txt net/loopback: Move g_lo_* global variable to libc/net/ 2020-03-30 09:47:28 -06:00

README
======

Directory Structure
===================

  nuttx/
   |
   `- net/
       |
       +- arp        - Address resolution protocol (IPv4)
       +- bluetooth  - PF_BLUETOOTH socket interface
       +- devif      - Stack/device interface layer
       +- icmp       - Internet Control Message Protocol (IPv4)
       +- icmpv6     - Internet Control Message Protocol (IPv6)
       +- ieee802154 - PF_IEEE802154 socket interface
       +- inet       - PF_INET/PF_INET6 socket interface
       +- ipforward  - IP forwarding logic
       +- local      - Unix domain (local) sockets
       +- mld        - Multicast Listener Discovery (MLD)
       +- neighbor   - Neighbor Discovery Protocol (IPv6)
       +- netdev     - Socket network device interface
       +- netlink    - Netlink IPC socket interface
       +- pkt        - "Raw" packet socket support
       +- sixlowpan  - 6LoWPAN implementation
       +- socket     - BSD socket interface
       +- route      - Routing table support
       +- tcp        - Transmission Control Protocol
       +- udp        - User Datagram Protocol
       +- usrsock    - User socket API for user-space networking stack
       `- utils      - Miscellaneous utility functions

    +-------------------------------------------------------------------++------------------------+
    |                     Application layer                             || usrsock daemon         |
    +-------------------------------------------------------------------++------------------------+
    +-------------------------------------------------------------------++----------------+ +-----+
    |                   Socket layer (socket/)                          || /dev/usrsock   | |     |
    +-------------------------------------------------------------------++----------------+ |     |
    +------------++--------------------------------------------------++-------------------+ |     |
    |  Network   || Protocol stacks (arp, ipv6, icmp, pkt, tcp, udp) || usrsock/          | |     |
    |   Device   |+--------------------------------------------------++-------------------+ |     |
    | Interface  |+------------------------------------++---------------------------------+ |     |
    | (netdev/)  ||  Network Device Interface (devif/) || Utilities                       | |     |
    +------------++------------------------------------++---------------------------------+ |     |
    +----------------------------------------------------------------+                      |     |
    |                    Network Device Drivers                      |                      | HAL |
    +----------------------------------------------------------------+                      +-----+
    +----------------------------------------------------------------+ +--------------------------+
    |                    Networking Hardware                         | |  Hardware TCP/IP Stack   |
    +----------------------------------------------------------------+ +--------------------------+