FreeBSD src
Go to file
Gleb Smirnoff 8624f4347e divert: declare PF_DIVERT domain and stop abusing PF_INET
The divert(4) is not a protocol of IPv4.  It is a socket to
intercept packets from ipfw(4) to userland and re-inject them
back.  It can divert and re-inject IPv4 and IPv6 packets today,
but potentially it is not limited to these two protocols.  The
IPPROTO_DIVERT does not belong to known IP protocols, it
doesn't even fit into u_char.  I guess, the implementation of
divert(4) was done the way it is done basically because it was
easier to do it this way, back when protocols for sockets were
intertwined with IP protocols and domains were statically
compiled in.

Moving divert(4) out of inetsw accomplished two important things:

1) IPDIVERT is getting much closer to be not dependent on INET.
   This will be finalized in following changes.
2) Now divert socket no longer aliases with raw IPv4 socket.
   Domain/proto selection code won't need a hack for SOCK_RAW and
   multiple entries in inetsw implementing different flavors of
   raw socket can merge into one without requirement of raw IPv4
   being the last member of dom_protosw.

Differential revision:	https://reviews.freebsd.org/D36379
2022-08-30 15:09:21 -07:00
.cirrus-ci Cirrus-CI: add some timing info on pkg install failure 2021-08-04 15:02:00 -04:00
.github .github: Attempt to fix and increase robustness of macOS action 2022-06-30 21:03:26 +01:00
bin cp: Fix build without VM_AND_BUFFER_CACHE_SYNCHRONIZED. 2022-08-30 10:51:21 -04:00
cddl In man page cross refs to sudo, indicate it comes from ports/security/sudo. 2022-08-14 11:44:43 +02:00
contrib snmp_mibII: use net.inet.ip.fragttl sysctl for ipReasmTimeout 2022-08-21 07:44:58 -07:00
crypto openssh: Remove description of VersionAddendum in upgrade doc 2022-08-19 10:39:17 -04:00
etc renice: add unit tests. 2022-08-25 20:06:20 +00:00
gnu libdialog: Bump shared library version to 10. 2021-10-27 09:30:24 -07:00
include libc: Add strverscmp(3) and versionsort(3) 2022-08-25 03:29:03 +03:00
kerberos5 pkgbase: split kerberos binaries and libs 2022-08-03 11:02:28 +01:00
lib divert: declare PF_DIVERT domain and stop abusing PF_INET 2022-08-30 15:09:21 -07:00
libexec rc.conf(5): add <service>_umask to run the service using this value 2022-08-28 12:48:58 +07:00
release release: Include an etcupdate tree in -DNO_ROOT release image builds 2022-08-09 22:58:01 +01:00
rescue Fix conflict between libnvpair and libnv when building rescue binaries. 2022-05-24 23:59:33 +03:00
sbin mount_nfs.8: Note that NFSv4 requires unique /etc/hostid's 2022-08-30 07:57:27 -07:00
secure libcrypto: Work around strict aliasing violations in bn_nist.c 2022-07-25 18:17:50 +01:00
share divert: declare PF_DIVERT domain and stop abusing PF_INET 2022-08-30 15:09:21 -07:00
stand stand: Document that boot0 uses BIOS 2022-08-26 22:17:56 -06:00
sys divert: declare PF_DIVERT domain and stop abusing PF_INET 2022-08-30 15:09:21 -07:00
targets bintrans: move files to a new directory 2022-04-18 10:53:11 +02:00
tests Reenable basic_signal:trap_signal_test on i386 2022-08-25 12:09:00 +08:00
tools stress2: Added a regression test 2022-08-25 09:47:58 +02:00
usr.bin divert: declare PF_DIVERT domain and stop abusing PF_INET 2022-08-30 15:09:21 -07:00
usr.sbin bhyve virtio-scsi: Avoid out of bounds accesses to guest requests. 2022-08-29 15:37:27 -07:00
.arcconfig arcanist: use FreeBSD/git project repository instead of FreeBSD/svn 2022-08-23 14:16:41 +00:00
.arclint
.cirrus.yml Cirrus-CI: update image to FreeBSD 13.1 (latest release) 2022-06-02 15:25:36 -04:00
.clang-format clang-format: Add bitset loop macros 2021-09-21 12:08:01 -04:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore gitignore: Ignore compile_commands.events.json 2022-05-30 10:43:25 -04:00
COPYRIGHT Welcome 2022, update copyrights. 2022-01-01 09:49:49 -07:00
LOCKS
MAINTAINERS Remove myself from bhyve maintenance; ENOTIME. 2021-11-19 07:09:30 +10:00
Makefile Import tzdata 2022c 2022-08-16 10:34:28 +08:00
Makefile.inc1 Makefile.inc1 release bsd.own.mk: Introduce and use TAR_CMD 2022-07-15 23:04:34 +01:00
Makefile.libcompat Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
Makefile.sys.inc
ObsoleteFiles.inc ObsoleteFiles: Follow awk test files move 2022-08-25 11:28:57 +08:00
README.md README.md: update gnu directory description 2021-12-17 08:45:31 -05:00
RELNOTES RELNOTES: Document ZFS support in makefs 2022-08-05 13:43:24 -04:00
UPDATING LinuxKPI: move pm_message_t from kernel.h to pm.h 2022-06-10 14:05:12 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory.

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), FreeBSD handbook on building userland, and Handbook for kernels for more information, including setting make(1) variables.

Source Roadmap:

Directory Description
bin System/user commands.
cddl Various commands and libraries under the Common Development and Distribution License.
contrib Packages contributed by 3rd parties.
crypto Cryptography stuff (see crypto/README).
etc Template files for /etc.
gnu Commands and libraries under the GNU General Public License (GPL) or Lesser General Public License (LGPL). Please see gnu/COPYING and gnu/COPYING.LIB for more information.
include System include files.
kerberos5 Kerberos5 (Heimdal) package.
lib System libraries.
libexec System daemons.
release Release building Makefile & associated tools.
rescue Build system for statically linked /rescue utilities.
sbin System commands.
secure Cryptographic libraries and commands.
share Shared resources.
stand Boot loader sources.
sys Kernel sources.
sys/arch/conf Kernel configuration files. GENERIC is the configuration used in release builds. NOTES contains documentation of all possible entries.
tests Regression tests which can be run by Kyua. See tests/README for additional information.
tools Utilities for regression testing and miscellaneous tasks.
usr.bin User commands.
usr.sbin System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see FreeBSD Handbook.