Revision tags: release/14.2.0 |
|
#
949190c5 |
| 28-Nov-2024 |
Zhenlei Huang <zlei@FreeBSD.org> |
udp: Prefer memcpy() over bcopy()
The variable b[] is on the stack, thus cannot overlap with ipov, which points to the heap area, so prefer memcpy() over memmove(), aka bcopy().
No functional chang
udp: Prefer memcpy() over bcopy()
The variable b[] is on the stack, thus cannot overlap with ipov, which points to the heap area, so prefer memcpy() over memmove(), aka bcopy().
No functional change intended.
Reviewed by: cc, rrs, cy, #transport, #network MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D47713
show more ...
|
#
0b4539ee |
| 14-Nov-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
inpcb: gc unused argument of in_pcbconnect()
|
Revision tags: release/13.4.0 |
|
#
4d32367a |
| 30-Jul-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
Revert "udp: improve handling of cached route"
This reverts commit 71867653008ce17a66a9c935e9dc29c1320bf48b. Two tests of the test suite are failing. Reverting the change until it is improved.
|
#
71867653 |
| 28-Jul-2024 |
Michael Tuexen <tuexen@FreeBSD.org> |
udp: improve handling of cached route
The inp_route pointer should only be provided to the network layer, when no destination address is provided. This is only one of the conditions, where a write l
udp: improve handling of cached route
The inp_route pointer should only be provided to the network layer, when no destination address is provided. This is only one of the conditions, where a write lock is needed. If, for example, the route is also cached, when the socket is unbound, problems show up, when the sendto is called, then connect and finally send, when the route for the addresses provided in the sendto and connect call use different outgoing interfaces. While there, clearly document why the write lock is taken.
Reported by: syzbot+59122d2e848087d3355a@syzkaller.appspotmail.com Reviewed by: Peter Lei, glebius MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D46056
show more ...
|
Revision tags: release/14.1.0, release/13.3.0 |
|
#
ce69e373 |
| 03-Feb-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Revert "sockets: retire sorflush()"
Provide a comment in sorflush() why the socket I/O sx(9) lock is actually important.
This reverts commit 507f87a799cf0811ce30f0ae7f10ba19b2fd3db3.
|
#
80044c78 |
| 16-Jan-2024 |
Xavier Beaudouin <xavier.beaudouin@klarasystems.com> |
Add UDP encapsulation of ESP in IPv6
This patch provides UDP encapsulation of ESP packets over IPv6. Ports the IPv4 code to IPv6 and adds support for IPv6 in udpencap.c As required by the RFC and un
Add UDP encapsulation of ESP in IPv6
This patch provides UDP encapsulation of ESP packets over IPv6. Ports the IPv4 code to IPv6 and adds support for IPv6 in udpencap.c As required by the RFC and unlike in IPv4 encapsulation, UDP checksums are calculated.
Co-authored-by: Aurelien Cazuc <aurelien.cazuc.external@stormshield.eu> Sponsored-by: Stormshield Sponsored-by: Wiktel Sponsored-by: Klara, Inc.
show more ...
|
#
507f87a7 |
| 16-Jan-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
sockets: retire sorflush()
With removal of dom_dispose method the function boils down to two meaningful function calls: socantrcvmore() and sbrelease(). The latter is only relevant for protocols th
sockets: retire sorflush()
With removal of dom_dispose method the function boils down to two meaningful function calls: socantrcvmore() and sbrelease(). The latter is only relevant for protocols that use generic socket buffers.
The socket I/O sx(9) lock acquisition in sorflush() is not relevant for shutdown(2) operation as it doesn't do any I/O that may interleave with read(2) or write(2). The socket buffer mutex acquisition inside sbrelease() is what guarantees thread safety. This sx(9) acquisition in soshutdown() can be tracked down to 4.4BSD times, where it used to be sblock(), and it was carried over through the years evolving together with sockets with no reconsideration of why do we carry it over. I can't tell if that sblock() made sense back then, but it doesn't make any today.
Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43415
show more ...
|
#
5bba2728 |
| 16-Jan-2024 |
Gleb Smirnoff <glebius@FreeBSD.org> |
sockets: make pr_shutdown fully protocol specific method
Disassemble a one-for-all soshutdown() into protocol specific methods. This creates a small amount of copy & paste, but makes code a lot more
sockets: make pr_shutdown fully protocol specific method
Disassemble a one-for-all soshutdown() into protocol specific methods. This creates a small amount of copy & paste, but makes code a lot more self documented, as protocol specific method would execute only the code that is relevant to that protocol and nothing else. This also fixes a couple recent regressions and reduces risk of future regressions. The extended KPI for the new pr_shutdown removes need for the extra pr_flush which was added for the sake of SCTP which could not perform its shutdown properly with the old one. Particularly for SCTP this change streamlines a lot of code.
Some notes on why certain parts of code were copied or were not to certain protocols: * The (SS_ISCONNECTED | SS_ISCONNECTING | SS_ISDISCONNECTING) check is needed only for those protocols that may be connected or disconnected. * The above reduces into only SS_ISCONNECTED for those protocols that always connect instantly. * The ENOTCONN and continue processing hack is left only for datagram protocols. * The SOLISTENING(so) block is copied to those protocols that listen(2). * sorflush() on SHUT_RD is copied almost to every protocol, but that will be refactored later. * wakeup(&so->so_timeo) is copied to protocols that can make a non-instant connect(2), can SO_LINGER or can accept(2).
There are three protocols (netgraph(4), Bluetooth, SDP) that did not have pr_shutdown, but old soshutdown() would still perform sorflush() on SHUT_RD for them and also wakeup(9). Those protocols partially supported shutdown(2) returning EOPNOTSUP for SHUT_WR/SHUT_RDWR, now they fully lost shutdown(2) support. I'm pretty sure netgraph(4) and Bluetooth are okay about that and SDP is almost abandoned anyway.
Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43413
show more ...
|
#
7df9da47 |
| 15-Dec-2023 |
Richard Kümmel <R.Kuemmel@beckhoff.com> |
Fix udp IPv4-mapped address
Do not use the cached route if the destination isn't the same. This fix a problem where an UDP packet will be sent via the wrong route and interface if a previous one was
Fix udp IPv4-mapped address
Do not use the cached route if the destination isn't the same. This fix a problem where an UDP packet will be sent via the wrong route and interface if a previous one was sent via them.
PR: 275774 Reviewed by: glebius, tuexen Sponsored by: Beckhoff Automation GmbH & Co. KG
show more ...
|
#
a13039e2 |
| 27-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
inpcb: reoder inpcb destruction
First, merge in_pcbdetach() with in_pcbfree(). The comment for in_pcbdetach() was no longer correct. Then, make sure we remove the inpcb from the hash before we com
inpcb: reoder inpcb destruction
First, merge in_pcbdetach() with in_pcbfree(). The comment for in_pcbdetach() was no longer correct. Then, make sure we remove the inpcb from the hash before we commit any destructive actions on it. There are couple functions that rely on the hash lock skipping SMR + inpcb lock to lookup an inpcb. Although there are no known functions that similarly rely on the global inpcb list lock, also do list removal before destructive actions.
PR: 273890 Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D43122
show more ...
|
#
29363fb4 |
| 23-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl s
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script.
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
03c3a70a |
| 05-Nov-2023 |
Michael Tuexen <tuexen@FreeBSD.org> |
udplite: make socketoption available on IPv6 sockets
This patch allows the IPPROTO_UDPLITE-level socket options UDPLITE_SEND_CSCOV and UDPLITE_RECV_CSCOV to be used on AF_INET6 sockets in addition t
udplite: make socketoption available on IPv6 sockets
This patch allows the IPPROTO_UDPLITE-level socket options UDPLITE_SEND_CSCOV and UDPLITE_RECV_CSCOV to be used on AF_INET6 sockets in addition to AF_INET sockets.
Reviewed by: ae, rscheff MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D42430
show more ...
|
#
aa64a8f5 |
| 01-Nov-2023 |
Michael Tuexen <tuexen@FreeBSD.org> |
udplite: fix checksum computation on the sender side
Don't fill the fields of the UDP/IP header not used for the checksum computation before performing the checksum computation.
Reviewed by: glebi
udplite: fix checksum computation on the sender side
Don't fill the fields of the UDP/IP header not used for the checksum computation before performing the checksum computation.
Reviewed by: glebius MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D42275
show more ...
|
#
abca3ae7 |
| 07-Oct-2023 |
Michael Tuexen <tuexen@FreeBSD.org> |
udp: fix sending of IPv4-mapped addresses
The inp_vflags field must be adjusted during the call of in_pcbbind_setup(). This is consistent with the other places in the code, but not elegant at all.
udp: fix sending of IPv4-mapped addresses
The inp_vflags field must be adjusted during the call of in_pcbbind_setup(). This is consistent with the other places in the code, but not elegant at all.
PR: 274009 Reported by: syzbot+81ccc423a2737ed031ac@syzkaller.appspotmail.com Reported by: syzbot+c8e3dac881bba85bc029@syzkaller.appspotmail.com Reviewed by: markj, rrs, rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D42031
show more ...
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0 |
|
#
96871af0 |
| 15-Feb-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
inpcb: use family specific sockaddr argument for bind functions
Do the cast from sockaddr to either IPv4 or IPv6 sockaddr in the protocol's pr_bind method and from there on go down the call stack wi
inpcb: use family specific sockaddr argument for bind functions
Do the cast from sockaddr to either IPv4 or IPv6 sockaddr in the protocol's pr_bind method and from there on go down the call stack with family specific argument.
Reviewed by: zlei, melifaro, markj Differential Revision: https://reviews.freebsd.org/D38601
show more ...
|
#
9e46ff4d |
| 03-Feb-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
netinet: don't return conflicting inpcb in in_pcbconnect_setup()
Last time this inpcb was actually used was in tcp_connect() before c94c54e4df9a.
|
#
a9d22cce |
| 03-Feb-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
inpcb: use family specific sockaddr argument for connect functions
Do the cast from sockaddr to either IPv4 or IPv6 sockaddr in the protocol's pr_connect method and from there on go down the call st
inpcb: use family specific sockaddr argument for connect functions
Do the cast from sockaddr to either IPv4 or IPv6 sockaddr in the protocol's pr_connect method and from there on go down the call stack with family specific argument.
Reviewed by: markj Differential revision: https://reviews.freebsd.org/D38356
show more ...
|
#
2589ec0f |
| 03-Feb-2023 |
Mark Johnston <markj@FreeBSD.org> |
pcb: Move an assignment into in_pcbdisconnect()
All callers of in_pcbdisconnect() clear the local address, so let's just do that in the function itself.
Note that the inp's local address is not a p
pcb: Move an assignment into in_pcbdisconnect()
All callers of in_pcbdisconnect() clear the local address, so let's just do that in the function itself.
Note that the inp's local address is not a parameter to the inp hash functions. No functional change intended.
Reviewed by: glebius MFC after: 2 weeks Sponsored by: Klara, Inc. Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D38362
show more ...
|
#
1aed3b34 |
| 07-Dec-2022 |
Gleb Smirnoff <glebius@FreeBSD.org> |
udp: add protocol method declarations to udp_var.h
They are shared between UDP over IPv4 and over IPv6. To prevent all possible kernel build failures wrap them in #ifdef _SYS_PROTOSW_H_. Prompted b
udp: add protocol method declarations to udp_var.h
They are shared between UDP over IPv4 and over IPv6. To prevent all possible kernel build failures wrap them in #ifdef _SYS_PROTOSW_H_. Prompted by feedback from jhb@ and jrtc27@ on c93db4abf454.
show more ...
|
#
32920f03 |
| 07-Dec-2022 |
Gleb Smirnoff <glebius@FreeBSD.org> |
udp: inline udp_output() into udp_send()
|
#
483fe965 |
| 07-Dec-2022 |
Gleb Smirnoff <glebius@FreeBSD.org> |
udp: embed inpcb into udpcb
See similar change to TCP e68b3792440 for more context. For UDP the change is much simplier, though.
|
#
294a609f |
| 07-Dec-2022 |
Gleb Smirnoff <glebius@FreeBSD.org> |
udp: destroy UDP and UDP-Lite inpcbinfos in single SYSUNINIT
They are created in a single SYSINIT, there is no reason to destroy them in separate functions.
|
#
0aa120d5 |
| 02-Dec-2022 |
Gleb Smirnoff <glebius@FreeBSD.org> |
inpcb: allow to provide protocol specific pcb size
The protocol specific structure shall start with inpcb.
Differential revision: https://reviews.freebsd.org/D37126
|
#
d00c2088 |
| 30-Nov-2022 |
John Baldwin <jhb@FreeBSD.org> |
udp[6]_multi_input: Don't unlock freed inp.
If udp[6]_append() returns non-zero, it is because the inp has gone away (inpcbrele_rlocked returned 1 after running the tunnel function).
Reviewed by: a
udp[6]_multi_input: Don't unlock freed inp.
If udp[6]_append() returns non-zero, it is because the inp has gone away (inpcbrele_rlocked returned 1 after running the tunnel function).
Reviewed by: ae Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D37511
show more ...
|