freebsd-src/include
Alexander V. Chernikov 2cef62886d pf: convert state retrieval to netlink
Use netlink to export pf's state table.

The primary motivation is to improve how we deal with very large state
stables. With the previous implementation we had to build the entire
list (both in the kernel and in userspace) before we could start
processing. With netlink we start to get data in userspace while the
kernel is still generating more. This reduces peak memory consumption
(which can get to the GB range once we hit millions of states).

Netlink also makes future extension easier, in that we can easily add
fields to the state export without breaking userspace. In that regard
it's similar to an nvlist-based approach, except that it also deals
with transport to userspace and that it performs significantly better
than nvlists. Testing has failed to measure a performance difference
between the previous struct-copy based ioctl and the netlink approach.

Differential Revision:	https://reviews.freebsd.org/D38888
2023-10-10 11:48:21 +02:00
..
arm arm64 lib32: prepare arm64 headers to redirect to arm 2023-07-25 18:59:26 -05:00
arpa Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
gssapi Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
i386 include/i386: fix release builds 2022-06-13 21:37:34 +01:00
protocols Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
rpc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
rpcsvc Remove $FreeBSD$: one-line xdr pattern 2023-08-16 11:55:47 -06:00
xlocale Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
_ctype.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
a.out.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
ar.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
assert.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
bitstring.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
byteswap.h byteswap.h: Add a glibc/linux compatible byteswap.h 2023-01-20 16:37:39 -07:00
complex.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
cpio.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ctype.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
db.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
dirent.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
dlfcn.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
elf-hints.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
elf.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
endian.h linux: For better compatibility, provide compatible endian.h 2023-01-20 16:32:45 -07:00
err.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
fmtmsg.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
fnmatch.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
fstab.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
fts.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
ftw.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
getopt.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
glob.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
grp.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
gssapi.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
hesiod.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
iconv.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
ieeefp.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
ifaddrs.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
inttypes.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
iso646.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
kenv.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
langinfo.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
libgen.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
limits.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
link.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
locale.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
Makefile pf: convert state retrieval to netlink 2023-10-10 11:48:21 +02:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.inc pkgbase: Move headers and libs out of runtime and utilities 2023-09-12 13:22:21 +01:00
malloc_np.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
malloc.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
memory.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
mk-osreldate.sh Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
monetary.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
mpool.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
mqueue.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ndbm.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
netconfig.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
netdb.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
nl_types.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
nlist.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
nss.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
nsswitch.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
paths.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
printf.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
proc_service.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pthread_np.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pthread.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pwd.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
ranlib.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
readpassphrase.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
regex.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
res_update.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
resolv.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
runetype.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
sched.h sched.h: Use pid_t type for pid argument 2021-12-17 08:22:21 +02:00
search.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
semaphore.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
setjmp.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
signal.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
spawn.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
stab.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
stdalign.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
stdbool.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
stdckdint.h include: Implement N2867. 2023-09-07 06:40:14 +00:00
stddef.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
stdio.h Restrict the glibc compat cookie open functions to __BSD_VISIBLE 2023-09-17 09:11:57 -06:00
stdlib.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
stdnoreturn.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
string.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
stringlist.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
strings.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
sysexits.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
tar.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
termios.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
tgmath.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
time.h time.h: Fix visibility check for C11 and C23 features. 2023-09-06 03:38:01 +02:00
timeconv.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
timers.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ttyent.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
uchar.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ulimit.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
unistd.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
utime.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
utmpx.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
uuid.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
varargs.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
wchar.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
wctype.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
wordexp.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
xlocale.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00