zephyr/subsys/net/ip
Tobias Frauenschläger dcc63120cf net: sockets: add support for SO_REUSEPORT
This commits adds support for the SO_REUSEPORT socket option.

The implementation follows the behavior of BSD and tries to also follow
the specific additional features of linux with the following
limitations:
* SO_REUSEADDR and SO_REUSEPORT are not "the same" for client sockets,
  as we do not have a trivial way so identify a socket as "client"
  during binding. To get the Linux behavior, one has to use SO_REUSEPORT
  with Zephyr
* No prevention of "port hijacking"
* No support for the load balancing stuff for incoming
  packets/connections

There is also a new Kconfig option to control this feature, which is
enabled by default if TCP or UDP is enabled.

Signed-off-by: Tobias Frauenschläger <t.frauenschlaeger@me.com>
2023-09-20 08:56:31 +02:00
..
6lo_private.h
6lo.c net: ip: 6lo: Fix corner case with packet format after IPHC 2023-02-19 20:33:36 -05:00
6lo.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
canbus_socket.c net: core: clean up inbound packet handling 2022-09-05 14:35:17 +00:00
canbus_socket.h
CMakeLists.txt net: syscalls: use zephyr_syscall_header 2023-06-17 07:57:45 -04:00
connection.c net: sockets: add support for SO_REUSEPORT 2023-09-20 08:56:31 +02:00
connection.h net: lib: sockets: improve scalability through a hidden var 2022-09-05 14:35:17 +00:00
dhcpv4.c net: dhcpv4: Accept unicast replies 2023-07-25 14:15:45 +02:00
dhcpv4.h net: dhcpv4: Accept unicast replies 2023-07-25 14:15:45 +02:00
icmpv4.c net: Add configuration option to allow any priority 2023-09-12 21:26:28 -04:00
icmpv4.h net: Add priority to ping 2023-09-12 21:26:28 -04:00
icmpv6.c net: Add configuration option to allow any priority 2023-09-12 21:26:28 -04:00
icmpv6.h net: Add priority to ping 2023-09-12 21:26:28 -04:00
igmp.c net: iface: Improve thread safety of net_if_ipv*_maddr_* functions 2023-05-10 11:06:15 +02:00
ipv4_autoconf_internal.h includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
ipv4_autoconf.c net: ipv4: Fix subnet mask setting when autoconf is used 2023-02-06 10:10:54 +01:00
ipv4_fragment.c net: fix few mismatched CONTAINER_OF 2023-08-30 10:21:31 +02:00
ipv4.c net: dhcpv4: Accept unicast replies 2023-07-25 14:15:45 +02:00
ipv4.h net: context: Set priority based on DSCP 2023-05-16 13:21:25 +02:00
ipv6_fragment.c net: fix few mismatched CONTAINER_OF 2023-08-30 10:21:31 +02:00
ipv6_mld.c net: iface: Improve thread safety of net_if_ipv*_maddr_* functions 2023-05-10 11:06:15 +02:00
ipv6_nbr.c net: if: Add possibility to disable ND per interface 2023-04-29 12:24:49 +02:00
ipv6.c net: pkt_filter: Introduce additional hooks for pkt_filter 2023-07-10 09:27:47 +02:00
ipv6.h net: context: Set priority based on DSCP 2023-05-16 13:21:25 +02:00
Kconfig net: sockets: add support for SO_REUSEPORT 2023-09-20 08:56:31 +02:00
Kconfig.debug kconfig: remove Enable from boolean prompts 2022-03-09 15:35:54 +01:00
Kconfig.ipv4 net: dhcpv4: Accept unicast replies 2023-07-25 14:15:45 +02:00
Kconfig.ipv6 net: ipv6: Fix Kconfig dependencies when native IPv6 is disabled 2023-03-21 18:11:06 +00:00
Kconfig.mgmt kernel/timeout: introduce the timepoint API 2023-07-25 09:12:26 +02:00
Kconfig.stack
Kconfig.stats net: ip: stats: changed dependency for PPP stats 2023-09-15 15:13:06 -05:00
nbr.c all: logging: Remove log_strdup function 2022-06-23 13:42:23 +02:00
nbr.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
net_context.c net: sockets: add support for SO_REUSEPORT 2023-09-20 08:56:31 +02:00
net_core.c init: remove the need for a dummy device pointer in SYS_INIT functions 2023-04-12 14:28:07 +00:00
net_if.c net: ip: use default interface while matching LL src address 2023-09-19 15:24:04 +01:00
net_mgmt.c net: mgmt: Fix memory corruption in wait_on_iface 2023-09-07 09:44:06 +02:00
net_pkt.c kernel: Modify the signature of k_mem_slab_free() 2023-09-03 18:20:59 -04:00
net_private.h net: sockets: add support for SO_REUSEPORT 2023-09-20 08:56:31 +02:00
net_shell.c net: Add priority to ping 2023-09-12 21:26:28 -04:00
net_shell.h
net_stats.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
net_stats.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
net_tc_mapping.h
net_tc.c all: Fix "#if IS_ENABLED(CONFIG_FOO)" occurrences 2022-12-21 10:09:23 +01:00
net_timeout.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
packet_socket.c all: Fix "#if IS_ENABLED(CONFIG_FOO)" occurrences 2022-12-21 10:09:23 +01:00
packet_socket.h
promiscuous.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
route.c net: fix few mismatched CONTAINER_OF 2023-08-30 10:21:31 +02:00
route.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
tcp_internal.h net: socket: asynchronous connect 2023-04-17 11:35:20 +02:00
tcp_private.h net: tcp: Implement TCP new Reno collision avoidance 2023-08-04 15:05:17 +02:00
tcp.c net: sockets: add support for SO_REUSEADDR 2023-09-20 08:56:31 +02:00
tcp.h net: tcp: Remove net_tcp_unref() 2023-01-26 12:34:04 +00:00
tp_priv.h includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
tp.c
tp.h all: Fix "#if IS_ENABLED(CONFIG_FOO)" occurrences 2022-12-21 10:09:23 +01:00
trickle.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
udp_internal.h subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
udp.c subsystems: migrate includes to <zephyr/...> 2022-05-09 12:07:35 +02:00
utils.c net: utils: fix offset used before range check 2023-06-16 05:46:05 -04:00