NRL IPv6/IPsec Software Distribution
Alpha Release 4      Linux 2.0 Notes                            September, 1996
====================================                            ===============

Introduction
------------

	New to this release is a port of PORTIONS of the code to Linux 2.0.
Specifically, we have built and run the Key Engine, support library (with
IPv6 support disabled), key(8), and a few applications such as tcpdump under
current patchlevels of Linux 2.0/i386. Other architectures should work, but
have not been tested at all. We have no data on whether or not the code will
run in a 64-bit kernel and we have no data on whether or not the Linux-
specific portions of the code will run on a big-endian machine. This port is
still VERY experimental.

	Most of the user-space applications in this release will build and run
with the Linux IPv6 code. Some of these require special and careful setup to
build. This release has no explicit support for this; you are completely on
your own trying to build these apps for Linux.

	This release does not include any kernel IPv6 code. This work is being
done by members of the Linux community and we do not have any plans to work on
it at NRL. Please DO NOT ask us about a "port" of our kernel code to the Linux
kernel. Its architecture is NOT the same as 4.4BSD or even close. While it's
not impossible to port our code to the Linux kernel, it would be a far more
productive use of time to contribute to the existing Linux IPv6 project.

Known Problems
--------------

	* Recent versions of the Linux libc and the Linux GCC interact in
	  ways that break limits.h and cause ULONG_MAX to be undefined. A
	  quick fix is to change the line in /usr/include/limits.h that
	  reads:

#if __GNUC__ >= 2

	  To:

#if 0 /* __GNUC__ >= 2 */

	* You NEED the 4.4BSD make program to build the code. GNU make will not 
	  work. Some Linux distributions give you this version of make but
	  name it "pmake" instead of "make".

Installation
------------

	To install the kernel code on Linux, you will need:

	* A system that runs Linux. We've only tested i386.
	* The Linux kernel source tree unpacked in /usr/src/linux
	* GNU patch 2.1 or later. Our diffs are in unified diff format.

	Unpack the NRL code into a temporary directory (NOT /tmp or a moral
equivalent!).

	Then:

	* Copy the sys.common/netkey directory to /usr/src/linux/net/key.
	* Apply the patches in the diff.linux directory to your source
	  tree:

	cat diff.linux/* | ( cd /usr/src ; patch -p0 )

	* Make a symlink in the directory net/key to netkey:

	(cd /usr/src/linux/net/key ; ln -snf . netkey)

	* Re-configure your kernel and add key engine support. We STRONGLY
	  urge you to build the key engine as a loadable module. Remember
	  that it is alpha test code.
	* Build a fresh kernel:

	make clean ; make dep ; make zImage

	* Install this kernel and reboot.
	* Edit Makefile.config
	* Build the support library from the support subdirectory.
	* Build the key(8) program and the keyd(8) test program.
