freebsd kernel with SKQ
Go to file
Adrian Chadd 0a100a6f1e Implement the first stage of multi-bind listen sockets and RSS socket
awareness.

* Introduce IP_BINDMULTI - indicating that it's okay to bind multiple
  sockets on the same bind details.

  Although the PCB code has been taught about this (see below) this patch
  doesn't introduce the rest of the PCB changes necessary to distribute
  lookups among multiple PCB entries in the global wildcard table.

* Introduce IP_RSS_LISTEN_BUCKET - placing an listen socket into the
  given RSS bucket (and thus a single PCBGROUP hash.)

* Modify the PCB add path to be aware of IP_BINDMULTI:
  + Only allow further PCB entries to be added if the owner credentials
    and IP_BINDMULTI has been specified.  Ie, only allow further
    IP_BINDMULTI sockets to appear if the first bind() was IP_BINDMULTI.

* Teach the PCBGROUP code about IP_RSS_LISTE_BUCKET marked PCB entries.
  Instead of using the wildcard logic and hashing, these sockets are
  simply placed into the PCBGROUP and _not_ in the wildcard hash.

* When doing a PCBGROUP lookup, also do a wildcard match as well.
  This allows for an RSS bucket PCB entry to appear in a PCBGROUP
  rather than having to exist in the wildcard list.

Tested:

* TCP IPv4 server testing with igb(4)
* TCP IPv4 server testing with ix(4)

TODO:

* The pcbgroup lookup code duplicated the wildcard and wildcard-PCB
  logic.  This could be refactored into a single function.

* This doesn't yet work for IPv6 (The PCBGROUP code in netinet6/ doesn't
  yet know about this); nor does it yet fully work for UDP.
2014-07-10 03:10:56 +00:00
bin sh: Add test for ${01} and ${010} that already works. 2014-07-08 22:04:44 +00:00
cddl MFV r268455: 2014-07-09 23:14:59 +00:00
contrib Update to bmake-20140620 2014-07-08 22:27:50 +00:00
crypto Merge OpenSSL 1.0.1h. 2014-06-09 05:50:57 +00:00
etc Remove ia64. 2014-07-07 00:27:09 +00:00
games Fix equation and limerick to be correct. NetBSD fixed this 14 years ago 2014-07-05 19:37:38 +00:00
gnu The GNU readline library is now an INTERNALLIB - that is, it is 2014-07-09 15:52:30 +00:00
include Don't install GSS-API headers when the GSSAPI option has been disabled. 2014-06-13 10:08:18 +00:00
kerberos5 In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE. 2014-06-08 17:29:31 +00:00
lib Implement sysconf(_SC_GETGR_R_SIZE_MAX) and sysconf(_SC_GETPW_R_SIZE_MAX). 2014-07-09 19:12:18 +00:00
libexec Fix atf-sh's integration_test 2014-07-09 00:55:50 +00:00
release Document r268461, readline(3) shlib no longer installed, and 2014-07-09 16:07:36 +00:00
rescue Remove ia64. 2014-07-07 00:27:09 +00:00
sbin Fix non-version text after .Fx macro usage. 2014-07-08 14:53:51 +00:00
secure Remove ia64. 2014-07-07 00:27:09 +00:00
share Now that pc98 no longer needs gcc to compile boot2, remove the special 2014-07-10 00:15:55 +00:00
sys Implement the first stage of multi-bind listen sockets and RSS socket 2014-07-10 03:10:56 +00:00
tests Fix unintended KBI change from r264905. Add _fib versions of 2014-05-29 21:03:49 +00:00
tools The GNU readline library is now an INTERNALLIB - that is, it is 2014-07-09 15:52:30 +00:00
usr.bin Update to bmake-20140620 2014-07-08 22:27:50 +00:00
usr.sbin Fix typos. 2014-07-09 09:51:14 +00:00
.arcconfig Prevent arc commands from overwriting history 2014-06-06 08:05:34 +00:00
.arclint arc: add linting for python files 2014-06-02 00:21:42 +00:00
COPYRIGHT Bump copyright year. 2013-12-31 12:18:10 +00:00
LOCKS
MAINTAINERS Remove send-pr, the supported interface to submit bugs is now via 2014-06-14 20:36:32 +00:00
Makefile Remove ia64 from the list of known architectures and add an entry to 2014-07-02 22:34:06 +00:00
Makefile.inc1 Typo means that this couldn't have possibly fixed anything, so revert 2014-07-08 02:11:48 +00:00
ObsoleteFiles.inc The GNU readline library is now an INTERNALLIB - that is, it is 2014-07-09 15:52:30 +00:00
README
UPDATING The GNU readline library is now an INTERNALLIB - that is, it is 2014-07-09 15:52:30 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

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, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
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.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* 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.

sys		Kernel sources.

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:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html