==============================================================
How to Configure Linux-2.2.X USAGI kernel

$USAGI: CONFIG.linux22,v 1.2 2001/09/10 13:04:34 yoshfuji Exp $
==============================================================

  **CAUTION**

   On most linux distributiors, the maintainers apply many unofficial
   patches against the original linux kernel for their products. 
   USAGI patches don't include such the patches. It includes only our
   improvements, so you may get some troubles if you build a kernel
   applying only the usagi patch.

   To eliminate this (possible) issue, we provide binary packges basen on 
   our stable releases. If you want to build your kernel from original
   kernel source, you have better to apply distribution-oriented patches
   before applying the USAGI patch. 

   The binary packages are found at 
   <ftp://ftp.linux-ipv6.org/pub/usagi/stable/package/>.


---------------------------------------------------
Customizing the linux-2.2 kernerl with USAGI patch
---------------------------------------------------
We reccomend to configure kernel options as follows.

  Code maturity level options  ---> 
   [*] Prompt for development and/or incomplete code/drivers  

	+ Enabling the option, you can use experimental features
	  including IPv6. Say Y.

  
  Networking options  --->
   [*]   Moderate SO_REUSEADDR behavior
     *CONFIG_NET_MODERATE_REUSE

	+ With this option, kernel restrict effect of SO_REUSEADDR to prevent 
	  other users from performing 'binding closer' type attacks like NFS 
	  theft.  Say Y.

   [ ]   IP: IPv6 over IPv4 tunneling support (replaces sitXX devices)
     *CONFIG_NET_IPIP_IPV6

	+ If you say Y here, you can transport IPv6 packet over the tunlXX 
	  devices;  The sitXX devices will be dissappeared with this option.
	  Note: tunnel manipulation commands such as iptunnel should be 
	  updated.

   <*>   The IPv6 protocol (EXPERIMENTAL)
     *CONFIG_IPV6

	+ Say Y. In order to avoid some troubles, we recommend to build
	  IPv6 protocol stack as a build-in function. Of course you can
	  build it as a module. It's up to you.

   [ ]     IPv6: Verbose debugging messages
     *CONFIG_IPV6_DEBUG

	+ Debugging option. It makes a lot of debug messages. It's only
	  for debugging purpose. If you want to track some behaviours of
	  IPv6 protocol stack, you can enable the option, otherwise
	  say N.

   [ ]    IPv6: sin6_scope_id support
     *CONFIG_IPV6_SCOPE_ID

	+ RFC2553 introduced a new member into ipv6 socket address
	  structure sockaddr_in6{}.  Because old linux kernels and
	  glibc do not have this member and its size is smaller than
	  new one, thie option may breaks binaries which blindly 
	  uses socket address size from kernel (via getsockname(2) 
	  or recvfrom(2) etc.), from kernel (via getsockname(2) or 
	  recvfrom(2) etc.).  If unsure, say N.

   [*]     IPv6: Loose scope_id
     *CONFIG_IPV6_LOOSE_SCOPE_ID

	+ Enabling the option, the kernel checks the size of struct
	  sockaddr_in6 loosely (and act as before if it is not included /
	  or it is set to zero);  otherwise, kernel will complain
	  if you pass a sockaddr_in6{} without scope-id (or with zero'ed
	  scope-id) for link-scope addressed.  Though we don't recommend 
	  you to set this option enabled (so say N), in fact, there're  
	  many applications which do not set scope-id properly.
	  If you're using glibc-2.1.x, you may want to try this option
	  enabled.

   [*]     IPv6: drop packets with fake ipv4-mapped address(es)  
     *CONFIG_IPV6_DROP_FAKE_V4MAPPED

	+ We reccomend to enable the option from security point of
	  view. Enabling the option, the linux kernel drops the
	  IPv6 packets which destination or source addresses are
	  IPv4-mapped IPv6 addresses. Say Y.

   [*]	   IPv6: Moderate double binding behavior
     *CONFIG_IPV6_MODERATE_DOUBLE_BIND

	+ With this option, kernel will not allow other users to do double 
	  binding.  Say Y.

   [ ]	   IPv6: 6to4-address in nexthop support
     *CONFIG_IPV6_6TO4_NEXTHOP

	+ Say N.

   [ ]     IPv6: Privacy Extensions (RFC 3041) Support
     *CONFIG_IPV6_PRIVACY

	+ Privacy Extensions for Stateless Address Autoconfiguration in IPv6
	  support.  With this option, additional periodically-alter 
	  pseudo-random global-scope unicast address(es) will assigned to
	  your interface(s).  At this moment, automatic source address
	  selection won't choose temporary address, so this option is 
	  only for testing purposes.

   [ ]     IPv6: Neighbor Discovery debugging       
     *CONFIG_IPV6_NDISC_DEBUG

	+ Debugging option, the kernel outputs verbose debugging
	  messages regarding Neighbour Discovery Protocol. Say N.

   [ ]     IPv6: Address Autoconfigration debugging
     *CONFIG_IPV6_ACONF_DEBUG

	+ Debugging option. the kernel outputs verbose debugging
	  messages regarding Stateless Auto Address Configuration.
	  Say N.

   [ ]     IPv6: Routing Informtation debugging
     *CONFIG_IPV6_RT6_DEBUG

	+ Debugging option. the kernel outputs verbose debugging
	  messages regarding IPv6 Routing Informations. Say N.

   [*]     IPv6: allow default route when forwarding is enabled
     *CONFIG_IPV6_EN_DFLT

	+ The original linux kernel purges IPv6 default route when IPv6
	  forwarding is enabled. Enabling the option, the kernel doesn't
	  purge the default route. Say Y, if unsure say N.

   [ ]     IPv6: Multicast Listener Discovery debugging
     *CONFIG_IPV6_MLD6_DEBUG

	+ Debugging option. the kernel outputs verbose debugging
	  messages regarding Multicast Listener Discovery messages.
	  Say N.

   [ ]     IPv6: Do not suppress MLD6 Done message
     *CONFIG_IPV6_MLD6_NO_SUPPRESS_DONE

	+ Enabling the option, the kernel sends MLD6(Multicast Listener
	  Discovery Protocol, defined in RFC2710) done message when
	  your linux box leaves a multicast group. Say N.

   [ ]     IPv6: enable Node Information Queries
     *CONFIG_IPV6_NODEINFO

	+ Enabling the ICMP name lookup feature which described in
	  <draft-ietf-ipngwg-icmp-name-lookups-07>. Enabling the option,
	  your linux box answers its host name or its ipv6/4 address(es)
	  in reply to Node Information Query.  These information is
	  useful for administration, but it may also cause information
	  flaws.  if unsure, say N.

   [ ]       IPv6: Node Information Queries debugging
     *CONFIG_IPV6_NODEINFO_DEBUG

	+ Debugging option. The kernel outputs verbose debugging messages
	  regarding ICMPv6 node-info queries. Say N.

   [ ]       IPv6: regard NIS domain as DNS domain
     *CONFIG_IPV6_NODEINFO_USE_UTS_DOMAIN

	+ The kernel replies a NIS domain name as a domain name of
	  ICMP name reply. If unsure, say N.
