nuttx/net
Gregory Nutt 7332d2decf net/: Add missing packet filtering checks
NuttX provides the UDP_BINDTODEVICE socket option.  This is a UDP protocol-specific implementation of the semi-standard Linux SO_BINDTODEVICE socket option:  "SO_BINDTODEVICE forces packets on the socket to only egress the bound interface, regardless of what the IP routing table would normally choose. Similarly only packets which ingress the bound interface will be received on the socket, packets from other interfaces will not be delivered to the socket." https://codingrelic.geekhold.com/2009/10/code-snippet-sobindtodevice.html

If CONFIG_NET_UDP_BINDTODEVICE is selected and a UDP socket is bound to the device, then unrecognized packets UDP packets must not be dropped, but must be forwarded along to the bound socket unconditionally.

It the typical case, this should have no impact.  It does effect the applications that use DHCP and do select the UDP_BINDTODEVICE socket option.

This PR replace existing improper logic in the code and also the improper attempts to fix problems from PR #3601 and PR #3598.  Those changes are improper because they expose DHCP appliction dependencies in the OS, breaking modularity and independence of the OS and application.

Tested with stm32f4discovery:netnsh with CONFIG_NET_UDP_BINDTODEVICE.  A proper DHCP test setup is needed, however.
2021-04-29 12:47:02 +08:00
..
arp net: arp: Fix a potential bug in arp_notify() 2021-03-31 12:23:35 -05:00
bluetooth libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
can sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
devif net/: Add missing packet filtering checks 2021-04-29 12:47:02 +08:00
icmp sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
icmpv6 sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
ieee802154 libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
igmp net/igmp: drop the invalid packet 2021-04-19 07:46:47 -05:00
inet net/socket: move si_send/recv into sendmsg/recvmsg 2021-03-05 04:46:13 -08:00
ipforward Fix typos reported by codespell 2021-02-25 11:31:49 -08:00
local net/local: correct the sendto() return length 2021-04-19 11:52:17 -05:00
mld sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
neighbor net: Author Gregory Nutt: update licenses to Apache 2021-02-20 00:38:18 -08:00
netdev net/dev: check the available address further 2021-03-23 06:52:32 -07:00
netlink net/socket: move si_send/recv into sendmsg/recvmsg 2021-03-05 04:46:13 -08:00
pkt sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
procfs sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
route Fix typos (and nxstyle errors) 2021-03-21 21:51:14 +01:00
rpmsg net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
sixlowpan NuttX: Gregory Nutt: update licenses to Apache 2021-04-03 04:20:31 -07:00
socket net/tcp: do not start the tcp monitor if unestablished 2021-03-19 17:23:18 +09:00
tcp tcp_netpoll.c: Fix a performance issue with CONFIG_NET_TCP_WRITE_BUFFERS 2021-04-05 06:16:46 -05:00
udp net/: Add missing packet filtering checks 2021-04-29 12:47:02 +08:00
usrsock net: fix nxstyle errors 2021-04-02 11:12:25 -05:00
utils NuttX: Gregory Nutt: update licenses to Apache 2021-04-03 04:20:31 -07:00
Kconfig net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
Makefile net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
net_initialize.c Remove the empty xxx_initialize functions 2021-03-03 08:21:04 +00: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   |
    +----------------------------------------------------------------+ +--------------------------+