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

$USAGI: CONFIG.linux22,v 1.8 2002/09/26 04:20:01 sekiya Exp $
==============================================================

  **CAUTION**

   On most linux distributions, 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  --->
   [*]   Restricted SO_REUSEADDR only for same user
     *CONFIG_NET_RESTRICTED_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.

   <*>   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: Restrict "double binding" only for same user
     *CONFIG_IPV6_RESTRICTED_DOUBLE_BIND

	+ With this option, kernel doesn't allow bind the same port 
	  number of socket which already binded by other user with
	  other protocol.  For example, If user A binds #8000 port with
	  IPv6 protocol kernel doesn't allow to bind #8000 port with IPv4
	  protocol other than user A. For security reason, we recommend
	  say Y.

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

	+ If you want to use 6to4 transition mechanism which is defined by
	  RFC2529, Say Y. It configures dynamic IPv6 over IPv4 tunnel
	  according to 6to4 addresses which are registerd in DNS.
	  If unsure, 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: Debug on source address selection
     *CONFIG_IPV6_ACONF_DEBUG_SADDR

	+ Debugging option, the kernel outputs verbose debugging
	  messages regarding Source Address Selection Algorithm.
	  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.
