nuttx/net
Zhe Weng 7c422381ca net/tcp: Set SO_ERROR for poll error in setup
Normally, `SO_ERROR` for disconn events will be set by `tcp_poll_eventhandler`, but when the socket is closed before poll, we should also set the `SO_ERROR`.

On Linux, `tcp_poll` returns `EPOLLERR` event when `sk->sk_err` has value but doesn't let `poll` fail (doesn't set `errno`). https://github.com/torvalds/linux/blob/v6.5/net/ipv4/tcp.c#L594-L596
Note: `sk->sk_err` can be get by socket option `SO_ERROR` on Linux, so `POLLERR` will always be together with `SO_ERROR`.

Common libs like curl may try to read `SO_ERROR` on `POLLERR`.

Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
2023-09-14 14:32:56 +08:00
..
arp net/arp: arp should depends on MM_IOB 2023-09-12 16:24:52 +08:00
bluetooth net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
can socketcan/recv : fixed recv filter not work in special case 2023-09-11 19:29:47 +08:00
devif mm/iob: Add support for increasing length in iob_update_pktlen 2023-08-22 16:34:21 +09:00
icmp cmake:complete missing changes during reforming for net 2023-09-13 21:51:20 +08:00
icmpv6 cmake:complete missing changes during reforming for net 2023-09-13 21:51:20 +08:00
ieee802154 net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
igmp mm/alloc: remove all unnecessary cast for alloc 2023-08-30 14:34:20 +08:00
inet inet_sendto: correct error messages and remove the comment 2023-09-09 00:16:52 +08:00
ipforward build: add initial cmake build system 2023-07-08 13:50:48 +08:00
ipfrag net/ipfrag:Fixed ref not initializing warning issue 2023-07-26 08:36:04 -03:00
local net/local: fix build error on CONFIG_DEBUG_OPTLEVEL="-O3" 2023-09-09 17:08:23 +03:00
mld MLD: add byte order conversion for ipv6 address printing 2023-09-09 00:23:35 +08:00
nat mm/alloc: remove all unnecessary cast for alloc 2023-08-30 14:34:20 +08:00
neighbor build: add initial cmake build system 2023-07-08 13:50:48 +08:00
netdev socket can : support ioctl cmd SIOCCANRECOVERY 2023-08-21 13:18:51 +08:00
netfilter build: add initial cmake build system 2023-07-08 13:50:48 +08:00
netlink net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
pkt net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
procfs cmake:complete missing changes during reforming for net 2023-09-13 21:51:20 +08:00
route build: add initial cmake build system 2023-07-08 13:50:48 +08:00
rpmsg rpmsg_sockif: add recvlock for conn->sendsize in connect 2023-09-09 00:17:36 +08:00
sixlowpan net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
socket net/socket/bind: make sure that an address was provided 2023-08-29 19:42:36 +08:00
tcp net/tcp: Set SO_ERROR for poll error in setup 2023-09-14 14:32:56 +08:00
udp net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
usrsock net/assert: remove all unnecessary check for psock/conn 2023-08-30 20:36:49 +08:00
utils net: remove [enter|leave]_critical_section and sched_[un]lock 2023-08-10 12:24:30 +03:00
CMakeLists.txt build: add initial cmake build system 2023-07-08 13:50:48 +08:00
Kconfig arch: Remove up_netinitialize 2023-08-20 14:33:17 +03:00
Makefile Support fragmentation and reassembly 2023-01-17 14:01:37 +08:00
net_initialize.c net: Reoder the initialize sequence(mac->ip->tcp/udp) 2022-03-12 19:24:17 +02:00
README.txt Support fragmentation and reassembly 2023-01-17 14:01:37 +08:00

README
======

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

  nuttx/
   |
   `- net/
       |
       +- arp        - Address resolution protocol (IPv4)
       +- bluetooth  - PF_BLUETOOTH socket interface
       +- devif      - Stack/device interface layer
       +- ipfrag     - Fragmentation and reassembly
       +- 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   |
    +----------------------------------------------------------------+ +--------------------------+