opnsense-src/lib/libc/sys
Alexander V. Chernikov adaf752192 sockets: add MSG_TRUNC flag handling for recvfrom()/recvmsg().
Implement Linux-variant of MSG_TRUNC input flag used in recv(), recvfrom() and recvmsg().
Posix defines MSG_TRUNC as an output flag, indicating packet/datagram truncation.
Linux extended it a while (~15+ years) ago to act as input flag,
resulting in returning the full packet size regarless of the input
buffer size.
It's a (relatively) popular pattern to do recvmsg( MSG_PEEK | MSG_TRUNC) to get the
packet size, allocate the buffer and issue another call to fetch the packet.
In particular, it's popular in userland netlink code, which is the primary driving factor of this change.

This commit implements the MSG_TRUNC support for SOCK_DGRAM sockets (udp, unix and all soreceive_generic() users).

PR:		kern/176322
Reviewed by:	pauamma(doc)
Differential Revision: https://reviews.freebsd.org/D35909
MFC after:	1 month

(cherry picked from commit be1f485d7d)
2023-02-09 18:01:49 +00:00
..
__error.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
__vdso_gettimeofday.c libc binuptime(): use the right function to get the most significant bit index 2022-02-15 02:36:51 +02:00
_exit.2
_umtx_op.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
abort2.2
accept.2
accept.c
accept4.c
access.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
acct.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
adjtime.2 Remove references to timed(8) 2022-11-14 10:18:52 +01:00
aio_cancel.2
aio_error.2 Add aio_writev and aio_readv 2021-01-02 19:57:58 -07:00
aio_fsync.2 aio_fsync(2): Support O_DSYNC. 2021-01-08 13:15:56 +13:00
aio_mlock.2
aio_read.2 Add aio_writev and aio_readv 2021-01-02 19:57:58 -07:00
aio_return.2 lio_listio: validate aio_lio_opcode 2021-01-11 19:53:01 -07:00
aio_suspend.2 aio_suspend.2: properly canonicalize .Dd 2020-12-11 00:28:28 +00:00
aio_suspend.c
aio_waitcomplete.2
aio_write.2 Add aio_writev and aio_readv 2021-01-02 19:57:58 -07:00
bind.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
bindat.2 Clarify bindat/connectat use with AT_FDCWD 2018-04-30 17:16:17 +00:00
brk.2 Reimplement brk() and sbrk() to avoid the use of _end. 2018-06-04 19:35:15 +00:00
brk.c Reimplement brk() and sbrk() to avoid the use of _end. 2018-06-04 19:35:15 +00:00
cap_enter.2 cap_enter(2): fix CAVEATS section 2020-12-11 00:26:49 +00:00
cap_fcntls_limit.2 libcasper(3): Document HISTORY within the manpages 2020-06-16 16:48:52 +00:00
cap_ioctls_limit.2 libcasper(3): Document HISTORY within the manpages 2020-06-16 16:48:52 +00:00
cap_rights_limit.2 libcasper(3): Document HISTORY within the manpages 2020-06-16 16:48:52 +00:00
chdir.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
chflags.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
chmod.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
chown.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
chroot.2 chroot.2: Correct grammar errors. 2022-04-14 10:03:36 +10:00
clock_gettime.2 Remove references to timed(8) 2022-11-14 10:18:52 +01:00
clock_gettime.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
clock_nanosleep.c Remove 'All rights reserved' from my files 2018-05-09 20:12:59 +00:00
close.2 Mark all the system calls that were in 1st Edition Unix as such in the 2017-12-01 22:26:36 +00:00
close.c
closefrom.2 fd: add close_range(..., CLOSE_RANGE_CLOEXEC) 2022-03-07 12:15:47 +00:00
closefrom.c closefrom: clamp lowfd to >= 0; close_range's parameters are unsigned. 2020-04-14 23:24:24 +00:00
compat-ino64.h Regularize my copyright notice 2019-12-04 16:56:11 +00:00
compat-stub.c Remove bits of the old NUMA. 2018-07-10 22:00:20 +00:00
connect.2
connect.c
connectat.2 connectat(2): clarify that the s argument is socket 2021-05-03 04:26:50 +03:00
copy_file_range.2 copy_file_range(2): add recommendation to use large "len" 2021-01-02 17:21:21 -08:00
cpuset.2 cpuset: Fix sched_[g|s]etaffinity() for better compatibility with Linux. 2023-02-06 22:06:31 +03:00
cpuset_getaffinity.2 cpuset: Byte swap cpuset for compat32 on big endian architectures 2022-06-17 22:35:14 +03:00
cpuset_getdomain.2 cpuset{,_getaffinity,_getdomain}.2: fix SEE ALSO 2020-12-11 01:52:27 +00:00
dup.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
eventfd.2 eventfd.2: Add the mail address of the submitter into copyright. 2020-12-28 21:03:16 +02:00
execve.2 execve: disallow argc == 0 2022-02-10 14:21:59 -06:00
extattr_get_file.2 O_PATH: allow vfs_extattr syscalls 2021-10-16 16:01:47 +03:00
fcntl.2 fcntl(2): be more precise about third arg type 2021-12-13 02:58:22 +02:00
fcntl.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
fdatasync.c
ffclock.2
fhlink.2 document first appearance of fhlink et al 2023-01-27 08:39:45 -07:00
fhopen.2
fhreadlink.2 document first appearance of fhlink et al 2023-01-27 08:39:45 -07:00
flock.2
fork.2 fork(2): comment about doubtful use of stdio and exit(3) in example 2021-08-12 15:37:54 +03:00
fork.c
fstat.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
fstatat.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
fstatfs.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
fsync.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
fsync.c
getdents.c Forward compatibility for ino64. 2017-06-23 18:06:20 +00:00
getdirentries.2 Bump Dd in getdirentries.2 after c6487446. 2022-06-17 22:33:53 +03:00
getdirentries.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
getdtablesize.2
getfh.2 document first appearance of fhlink et al 2023-01-27 08:39:45 -07:00
getfsstat.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
getfsstat.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
getgid.2 libc manpages: various improvements from NetBSD 2020-06-14 05:59:30 +00:00
getgroups.2
getitimer.2 Fix a few mandoc issues 2020-10-09 19:12:44 +00:00
getlogin.2 getlogin_r: fix the type of len 2020-09-09 18:07:13 +00:00
getloginclass.2 Drop "All rights reserved" from all my stuff. This includes 2020-10-28 13:46:11 +00:00
getpeername.2
getpgrp.2
getpid.2
getpriority.2
getrandom.2 getrandom(2): Add Linux GRND_INSECURE API flag 2020-01-12 20:47:38 +00:00
getrlimit.2
getrusage.2
getsid.2
getsockname.2
getsockopt.2 getsockopt.2: Clarify the SO_REUSEPORT_LB text a bit 2022-11-10 12:02:47 -05:00
gettimeofday.2 Remove references to timed(8) 2022-11-14 10:18:52 +01:00
gettimeofday.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
getuid.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
interposing_table.c libthr: wrap pdfork(2), same as fork(2). 2021-01-11 22:59:52 +02:00
intro.2 Create new EINTEGRITY error with message "Integrity check failed". 2019-01-17 06:35:45 +00:00
ioctl.2
issetugid.2
jail.2 MFC jail: Change both root and working directories in jail_attach(2) 2021-02-21 21:49:40 -08:00
kenv.2 kenv: allow listing of static kernel environments 2021-08-26 01:35:33 -05:00
kevent.c
kill.2 Only return EPERM from kill(-pid) when no process was signalled. 2019-12-07 18:07:49 +00:00
kldfind.2
kldfirstmod.2
kldload.2
kldnext.2
kldstat.2
kldsym.2
kldunload.2
kqueue.2 kevent.2: Add an xref to listen.2 2022-06-27 10:11:27 -04:00
ktrace.2 ktrace.2: Document KTRFAC_STRUCT_ARRAY. 2022-11-11 10:18:54 -08:00
link.2 Fix mistakes in link(2) and shm_open(2) 2021-10-10 12:21:18 +03:00
lio_listio.2 lio_listio(2): fix manlint error 2020-12-08 03:48:05 +00:00
listen.2 Make sonewconn() overflow messages have per-socket rate-limits and values. 2020-04-14 15:38:18 +00:00
lseek.2 lseek(2): Document the seek behavior better and update the POSIX compliance 2020-07-13 15:52:57 +00:00
lstat.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
madvise.2
Makefile.inc Add sched_getcpu() 2022-01-14 18:17:29 +02:00
mincore.2 Include the psind in data returned by mincore(2). 2020-09-02 18:16:43 +00:00
minherit.2
mkdir.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
mkfifo.2 Trim some duplicate EIO descriptions. 2020-03-30 21:48:47 +00:00
mknod.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
mknod.c Commit the 64-bit inode project. 2017-05-23 09:29:05 +00:00
mlock.2 Provide separate accounting for user-wired pages. 2019-05-13 16:38:48 +00:00
mlockall.2 Provide separate accounting for user-wired pages. 2019-05-13 16:38:48 +00:00
mmap.2 mmap(2): Update .Dd missed in the last commit 2020-12-24 14:14:56 +00:00
modfind.2
modnext.2
modstat.2
mount.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
mprotect.2 Return ENOTSUP for mmap/mprotect if prot not subset of prot_max 2020-02-26 20:03:43 +00:00
mq_close.2
mq_getattr.2
mq_notify.2
mq_open.2 Revert the mode_t -> int changes and add a warning in the BUGS section instead. 2019-09-28 17:15:48 +00:00
mq_receive.2
mq_send.2
mq_setattr.2
msgctl.2 Avoid copying out kernel pointers from msgctl(IPC_STAT). 2020-07-09 17:26:49 +00:00
msgget.2 Refer to SysV IPC permissions as numeric constants. 2018-03-04 20:06:02 +00:00
msgrcv.2
msgsnd.2
msync.2
msync.c
munmap.2 Implement address space guards. 2017-06-24 17:01:11 +00:00
nanosleep.2 libc: Add HISTORY sections to the manual pages 2022-06-04 07:59:43 +02:00
nanosleep.c
nfssvc.2
ntp_adjtime.2
open.2 Mostly revert a5970a529c: Make files opened with O_PATH to not block non-forced unmount 2022-04-19 23:22:54 +03:00
open.c
openat.c libc: partially revert r326576 2020-04-25 14:24:54 +00:00
pathconf.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
pdfork.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
pdfork.c libthr: wrap pdfork(2), same as fork(2). 2021-01-11 22:59:52 +02:00
pipe.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
pipe.c
poll.2 poll(2): Add POLLRDHUP. 2022-06-17 22:22:13 +03:00
poll.c
POSIX2x_Fork.c libc: Fix build on case-insensitive file systems 2021-10-10 14:33:52 +01:00
posix_fadvise.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
posix_fallocate.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
posix_openpt.2
ppoll.c
procctl.2 procctl: actually require debug privileges over target 2021-10-26 05:26:27 +03:00
profil.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
pselect.2
pselect.c
ptrace.2 ptrace(2): document PT_SC_REMOTE 2023-01-20 05:21:11 +02:00
ptrace.c
quotactl.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
rctl_add_rule.2 rctl_add_rule(2): fix manlint warnings 2017-05-23 07:32:57 +00:00
read.2 vfs: add restrictions to read(2) of a directory [2/2] 2020-06-04 18:17:25 +00:00
read.c
readlink.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
readv.c
reboot.2 Tweak documentation to RB_ constants to reflect current use 2018-07-10 00:01:14 +00:00
recv.2 sockets: add MSG_TRUNC flag handling for recvfrom()/recvmsg(). 2023-02-09 18:01:49 +00:00
recvfrom.c
recvmsg.c
rename.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
revoke.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
rfork.2 posix_spawn(3): handle potential signal issues with vfork 2019-09-25 19:22:03 +00:00
rmdir.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
rtprio.2 Add idle priority scheduling privilege group to MAC/priority 2021-12-19 04:42:51 +02:00
sched_get_priority_max.2
sched_setparam.2
sched_setscheduler.2
sched_yield.2
sctp_generic_recvmsg.2
sctp_generic_sendmsg.2
sctp_peeloff.2
select.2 man page of select(2) should mention pselect(2) 2020-06-25 12:31:05 +00:00
select.c
semctl.2 Apply the logic from r363051 to semctl(2) and __sem_base field. 2020-07-09 18:34:54 +00:00
semget.2 Refer to SysV IPC permissions as numeric constants. 2018-03-04 20:06:02 +00:00
semop.2
send.2 Document handling of connection-mode sockets by sendto(2). 2020-04-27 16:12:32 +00:00
sendfile.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
sendmsg.c
sendto.c
setcontext.c libc: partially revert r326576 2020-04-25 14:24:54 +00:00
setfib.2 Don't end up manpage titles with a full stop. 2017-05-24 21:02:53 +00:00
setgroups.2 Update .Dd missed in -r328304. 2018-01-24 22:36:21 +00:00
setpgid.2
setregid.2
setresuid.2
setreuid.2
setsid.2
setuid.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
shm_open.2 Fix mistakes in link(2) and shm_open(2) 2021-10-10 12:21:18 +03:00
shm_open.c Fix error checking in shm_create_largepage(). 2020-09-18 12:30:15 +00:00
shmat.2 Implement shmat(2) flag SHM_REMAP. 2019-01-16 05:15:57 +00:00
shmctl.2
shmget.2 Refer to SysV IPC permissions as numeric constants. 2018-03-04 20:06:02 +00:00
shutdown.2
sigaction.2 [skip ci] document close_range(2) as async-signal-safe 2020-07-21 16:46:40 +00:00
sigaction.c
sigaltstack.2
sigfastblock.2 Add a way to manage thread signal mask using shared word, instead of syscall. 2020-02-09 11:53:12 +00:00
sigpending.2
sigprocmask.2
sigprocmask.c
sigqueue.2 Provide a freebsd32 implementation of sigqueue() 2017-05-05 18:49:39 +00:00
sigreturn.2
sigstack.2
sigsuspend.2
sigsuspend.c
sigtimedwait.c
sigwait.2
sigwait.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
sigwaitinfo.2 Fix sigtimedwait manpage. 2022-06-17 22:33:53 +03:00
sigwaitinfo.c
socket.2 man: fix socket.2 merge from a16f805f82 2023-01-24 21:44:51 +00:00
socketpair.2 socketpair.2: Reference relevant POSIX standards 2018-02-10 19:41:32 +00:00
stat.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
stat.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
statfs.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
statfs.c Regularize my copyright notice 2019-12-04 16:56:11 +00:00
swapcontext.c libc: partially revert r326576 2020-04-25 14:24:54 +00:00
swapon.2 Document new variant of swapoff(2) 2021-12-20 02:29:11 +02:00
Symbol.map Export _mmap and __sys_mmap from libc.so 2022-05-07 12:55:00 +01:00
symlink.2 Trim some duplicate EIO descriptions. 2020-03-30 21:48:47 +00:00
sync.2 Correct history for Unix 2nd Edition through 6th Edition for the 2017-12-01 22:48:20 +00:00
sysarch.2
syscall.2
thr_exit.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
thr_kill.2 Add HISTORY sections to document when this 2020-05-05 19:31:47 +00:00
thr_new.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
thr_self.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
thr_set_name.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
thr_suspend.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
thr_wake.2 libc: Fix most issues reported by mandoc 2020-12-19 14:54:28 +00:00
timer_create.2
timer_delete.2
timer_settime.2
trivial-vdso_tc.c
truncate.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
umask.2
undelete.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
unlink.2 open(2): Remove O_BENEATH and AT_BENEATH 2021-03-04 21:10:44 +02:00
utimensat.2 Add AT_EMPTY_PATH for several *at(2) syscalls 2021-04-23 14:14:10 +03:00
utimes.2 Document EINTEGRITY errors for many system calls. 2020-03-30 21:44:00 +00:00
utrace.2
uuidgen.2
vadvise.c Make vadvise compat freebsd11. 2018-05-25 20:40:23 +00:00
vfork.2
wait.2 wait.2: Remove sys/types.h from the list of required headers 2022-07-07 13:05:18 -04:00
wait4.c
wait6.c
write.2 pwrite(2): add a BUGS section 2021-02-25 06:57:35 +00:00
write.c
writev.c