freebsd with flexible iflib nic queues
Go to file
Mark Murray 10cb24248a This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random.
This code has had an extensive rewrite and a good series of reviews, both by the author and other parties. This means a lot of code has been simplified. Pluggable structures for high-rate entropy generators are available, and it is most definitely not the case that /dev/random can be driven by only a hardware souce any more. This has been designed out of the device. Hardware sources are stirred into the CSPRNG (Yarrow, Fortuna) like any other entropy source. Pluggable modules may be written by third parties for additional sources.

The harvesting structures and consequently the locking have been simplified. Entropy harvesting is done in a more general way (the documentation for this will follow). There is some GREAT entropy to be had in the UMA allocator, but it is disabled for now as messing with that is likely to annoy many people.

The venerable (but effective) Yarrow algorithm, which is no longer supported by its authors now has an alternative, Fortuna. For now, Yarrow is retained as the default algorithm, but this may be changed using a kernel option. It is intended to make Fortuna the default algorithm for 11.0. Interested parties are encouraged to read ISBN 978-0-470-47424-2 "Cryptography Engineering" By Ferguson, Schneier and Kohno for Fortuna's gory details. Heck, read it anyway.

Many thanks to Arthur Mesh who did early grunt work, and who got caught in the crossfire rather more than he deserved to.

My thanks also to folks who helped me thresh this out on whiteboards and in the odd "Hallway track", or otherwise.

My Nomex pants are on. Let the feedback commence!

Reviewed by:	trasz,des(partial),imp(partial?),rwatson(partial?)
Approved by:	so(des)
2014-10-30 21:21:53 +00:00
bin Treat IFS separators in "$*" as quoted. 2014-10-28 22:14:31 +00:00
cddl Correct the calculation of tcps_rto in the struct tcpcb -> tcpsinfo_t 2014-10-21 05:19:08 +00:00
contrib rping: make sure that the CQ event thread can never poll a CQ after it 2014-10-29 06:24:12 +00:00
crypto Merge OpenSSL 1.0.1j. 2014-10-15 19:12:05 +00:00
etc This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random. 2014-10-30 21:21:53 +00:00
games Update factor for changes to types in primes, which is a dependency. 2014-09-27 10:57:34 +00:00
gnu Build gperf only if we're using g++ (not clang++) 2014-10-09 23:05:31 +00:00
include Fix the build by installing acpi_hpet.h correctly. 2014-10-24 23:25:11 +00:00
kerberos5 Fix incremental builds involving non-root users with read-only source files. 2014-09-18 14:50:21 +00:00
lib Update acl(3) to expand on NFSv4 ACL support. 2014-10-30 10:56:38 +00:00
libexec This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random. 2014-10-30 21:21:53 +00:00
release Fix a few issues with creating VOLUME_LABEL for the 2014-10-26 01:41:54 +00:00
rescue Remove duplicate prog. 2014-09-28 08:59:38 +00:00
sbin Make UEFI booting of 4Kn disks work: 2014-10-30 15:52:01 +00:00
secure Merge OpenSSL 1.0.1j. 2014-10-15 19:29:22 +00:00
share This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random. 2014-10-30 21:21:53 +00:00
sys This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random. 2014-10-30 21:21:53 +00:00
tests Fix source address selection on unbound sockets in the presence of multiple 2014-09-16 15:28:19 +00:00
tools Remove an extra copy of hv_kvp_daemon(8) [1]. 2014-10-27 21:29:42 +00:00
usr.bin fix spelling of offset since that is what is used in the body... 2014-10-30 06:54:25 +00:00
usr.sbin Rework the EXAMPLES section to be a bit clearer. 2014-10-29 18:01:09 +00:00
.arcconfig Update the URL to the phabricator instance. 2014-08-14 16:25:43 +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 add myself as opencrypto maintainer as I'm doing some work in the 2014-08-11 19:03:20 +00:00
Makefile Import OpenSSL 1.0.1j. 2014-10-15 17:32:57 +00:00
Makefile.inc1 Rename XFLAGS to XCFLAGS and XXFLAGS to XCXXFLAGS 2014-10-27 23:31:07 +00:00
ObsoleteFiles.inc .a's are installed in /usr/lib, don't delete them. 2014-10-29 22:22:24 +00:00
README Import OpenSSL 1.0.1j. 2014-10-15 17:32:57 +00:00
UPDATING Build gperf only if we're using g++ (not clang++) 2014-10-09 23:05:31 +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