FreeBSD src
Go to file
Gleb Smirnoff 78b1fc05b2 protosw: separate pr_input and pr_ctlinput out of protosw
The protosw KPI historically has implemented two quite orthogonal
things: protocols that implement a certain kind of socket, and
protocols that are IPv4/IPv6 protocol.  These two things do not
make one-to-one correspondence. The pr_input and pr_ctlinput methods
were utilized only in IP protocols.  This strange duality required
IP protocols that doesn't have a socket to declare protosw, e.g.
carp(4).  On the other hand developers of socket protocols thought
that they need to define pr_input/pr_ctlinput always, which lead to
strange dead code, e.g. div_input() or sdp_ctlinput().

With this change pr_input and pr_ctlinput as part of protosw disappear
and IPv4/IPv6 get their private single level protocol switch table
ip_protox[] and ip6_protox[] respectively, pointing at array of
ipproto_input_t functions.  The pr_ctlinput that was used for
control input coming from the network (ICMP, ICMPv6) is now represented
by ip_ctlprotox[] and ip6_ctlprotox[].

ipproto_register() becomes the only official way to register in the
table.  Those protocols that were always static and unlikely anybody
is interested in making them loadable, are now registered by ip_init(),
ip6_init().  An IP protocol that considers itself unloadable shall
register itself within its own private SYSINIT().

Reviewed by:		tuexen, melifaro
Differential revision:	https://reviews.freebsd.org/D36157
2022-08-17 11:50:31 -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 For man page references found in ports, indicate the respective port. 2022-08-14 15:02:06 +02: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 Import bionic's x86_64 optimized string routines 2022-08-16 13:27:11 -04:00
crypto OpenSSL: Merge OpenSSL 1.1.1q 2022-07-05 11:47:01 -04:00
etc pkgbase: mtree: Correctly tag /var/db entries 2022-08-16 21:14:56 +02:00
gnu libdialog: Bump shared library version to 10. 2021-10-27 09:30:24 -07:00
include Import OpenSSL 1.1.1q 2022-07-05 11:27:51 -04:00
kerberos5 pkgbase: split kerberos binaries and libs 2022-08-03 11:02:28 +01:00
lib lib: Gate libfigpar under MK_DIALOG 2022-08-16 21:15:12 +02:00
libexec rc: add ${name}_setup script support 2022-08-15 16:43:12 +02: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 Indicate which port gdb.1 and kgdb.1 come from. 2022-08-17 19:13:22 +02:00
secure libcrypto: Work around strict aliasing violations in bn_nist.c 2022-07-25 18:17:50 +01:00
share Indicate which port gdb.1 and kgdb.1 come from. 2022-08-17 19:13:22 +02:00
stand loader: zfs reader should only store devdesc in f_devdata 2022-08-15 21:07:23 +03:00
sys protosw: separate pr_input and pr_ctlinput out of protosw 2022-08-17 11:50:31 -07:00
targets bintrans: move files to a new directory 2022-04-18 10:53:11 +02:00
tests basic_signal test: really skip trap_signal_test on i386 2022-08-17 08:15:10 +08:00
tools stand: Flesh out the zfs image creation 2022-08-17 11:39:53 -06:00
usr.bin Indicate which port gpg.1 comes from. 2022-08-17 19:23:57 +02:00
usr.sbin Indicate which port gdb.1 and kgdb.1 come from. 2022-08-17 19:13:22 +02:00
.arcconfig Remove history.immutable from .arcconfig 2021-04-13 12:36:25 +01:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.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 LOCKS: update current locks 2018-06-09 03:08:04 +00:00
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 AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc ObsoleteFiles.inc: fix path of a few manual pages 2022-08-17 08:01:54 +00: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.