#
# /vol/src/devel/gated/master/gated/README,v 1.11.2.7 1994/01/26 22:02:37 jch Exp
#
# Gated Release 3.0
# Copyright (c) 1990,1991,1992,1993 by Cornell University. All rights reserved.
# Refer to Particulars and other Copyright notices at the end of this file.
#

INSTALLATION OF GATED:

	The gated makefile system is setup to allow object directories
	for multiple architectures to use one source tree.  The object
	directories consist of a few configured files and symlinks for
	the majority of the gated files.  They are named obj.<arch>
	where arch is the architecture of your system as reported by
	the arch or machine program.  If one of these programs can not
	be found, the first part of your hostname is used, see
	src/util/archtype for more information.

	1. Create an object directory, "src/obj.<arch>".  Run
	   src/util/archtype to figure out what <arch> should be.  If
	   you will never compile gated on a second architecture you
	   can use "obj".

	   On BSD 4.3 Reno and later obj directories are supported in
	   the format the system sources use.  This support is not
	   direct, but a hack.  On these systems you will need to
	   specify the full path to some directories, for an example
	   see src/configs/vangogh.

	2. Build a config file.  This file is used as input to a
	   configuration script which builds a Makefile and system
	   specific header files.

	   A description of config file options is available in
	   src/configs/README.

	   Examples of quite a few config files are in src/configs,
	   pick the one that is closest to what you want and tailor it
	   to your specific configuration.  Install this config file
	   in the previously created object directory with the name
	   Config.

	3. Configure gated for this architecture by typing "make
	   config".  This will run an awk script on your
	   "obj.<arch>/Config" file which builds a sed script.  This
	   sed script is used to edit a Makefile template.  The
	   Makefile is then run to configure architecture specific
	   files, create symbolic links, and dependencies.

	4. Build gated by typing "make" in the src directory or the
	   object directory.

	5. Become root and install gated "make install" in the src or
	   object directory.  Then optionally type "make install-man"
	   in the same directory to install the man pages.
	   
	5. cd man, edit Makefile and install the man page "make install".

	6. Make up a configuration file.  Sample config files are in
	   the conf directory and the man page explains all config
	   options.  Install the config file in /etc/gated.conf

	7. Take cover and .... FIRE IT UP!



UDP Checksums.

	RIP will refuse to run if it determines that UDP checksums are
	disabled in the kernel.  Running without UDP checksums can
	lead to incorrect routing information being propagated,
	especially on serial links.  This check does not help you
	determine if RIP packets you receive are missing a checksum,
	but at least it prevents you from generating these packets and
	calls attention to the problem.

	There are two ways to enable UDP checksums.  Your operating
	system may provide enough source to enable checksums by
	default.  SunOS provides this in /sys/netinet/in_proto.c.
	Update the source and recompile the kernel.

	If your operating system does not provide the relevent source,
	you can patch the running kernel and disk image with a
	sequence similar to this (as root):

		adb -k -w /vmunix /dev/mem
		_udp_cksum/W 1
		_udp_cksum?W 1
		^D

	You can probably find the proper name for the UDP checksum
	value with:

		nm -a /vmunix | grep udp

	
IP Multicast support.

	The OSPF and RIP implementations (and in the future hopefully
	Router Discovery) make use of IP multicasting facilities.  If
	these facilities are not present, functionality is reduced.

	Some systems ship with IP multicasting support, namely Sun's
	Solaris 2.0 and Silicon Graphics' IRIX.  For other systems, IP
	multicasting support may be available (for example SunOS
	4.1.1, SunOS 4.1.2 and some versions of Ultrix), check the FTP
	directories on gregorio.stanford.edu.

	RIP-II and OSPF specify the use of IP multicast on P2P
	interfaces.  Due to bugs in most implementations of the IP
	multicast code gated will not be able to specify it's use on
	these interfaces.  Gated will automatically fall back to using
	the destination address of the P2P link.  In the OSPF case, no
	functionality will be lost, but in the RIP-II case you will
	loose the ability to pass arbitrary subnet masks via these
	interfaces. 


	Another bug in IP multicast support causes multicast packets
	to local-wire groups to fail if there is not a default route
	for IP, multicast, or the specific group.  As a workaround,
	gated installs a default route for any local-wire multicast
	group it uses via the loopback interface.  This default is not
	actually used, but it avoids a kernel bug sending to these
	groups.

	
Interfacing to the ISODE SMUX interface.

	This version of gated can do SNMP via the ISODE 7.0 SMUX
	interface.  If you don't already have ISODE 7.0 you may obtain
	a version with many SMUX/SNMP patches applied via FTP from
	gated.cornell.edu as pub/gated/isode-snmp-7.0.tar.Z.

	Even though the ISODE source requires alot of disk space, it
	isn't necessary to build and install all of ISODE, just the
	core distribution and the snmp code.  A partial install
	(inst-partial and inst-snmp) are the minimum required.

	Gated also supports the ISODE 6.8 based SMUX interface on AIX
	3 systems.  If you experience errors of the form:

		Building:       gated-mib.c
		mosy -s -c gated-mib.c ../mib/smi.my ../mib/mib.my ../mib/rt.my ../mib/bgp.my ../mib/ospf.my ../mib/rip.my
		mosy 6.8 of Sat Nov 23 12:30:27 CST 1991
		line 56: Warning: EXPORTS but no ModuleIdentifier
		last token read was ";"
		object enterprises: Warning: IMPORTS but no ModuleIdentifier
		object snmpEnableAuthenTraps: Warning: IMPORTS but no ModuleIdentifier
		object snmpEnableAuthenTraps: syntax error
		make: *** [gated-mib.c] Error 1

	change the default for ipForwardInfo to remove the second zero
	so it becomes:
	
		DEFVAL  { { 0 } } -- 0.0
	
	The mosy supplied with ISODE 6.8 could not parse this syntax,
	even though it is correct.


Running Gated on SunOS 4.0 systems:

	If gated gets sendto() network unreachable problems when running
	on SunOS 4.0 systems, add `hostname` to the ifconfigs for
	ie0/le0/ec0 in /etc/rc.local.  Otherwise SunOS has a
	misconception of the route to the attached network.


Running Gated on SunOS 4.* systems:

	It is common practice to add the Bind resolver routines to the
	system libraries to replace the NIS (YP) host name resolution
	routines.  If this is not done right, a socket variable could
	be initialized to 0 instead of -1 causing file descriptor zero
	to be closed when endhostent() is called.  This descriptor is
	frequently opened by gated code that traps output to stdio and
	stderr for logging.  The result of this will be an assertion
	failure in task_stdio_read().  The best workaround is not to
	use symbolic names in your configuration file, and specify
	`options noresolv ;'.

	In an attempt to make binaries that read kernel memory
	compatible between different kernel architectures, Sun has
	created libkvm.a.  Unfortunately, the dynamically loaded
	versions of these libraries are broken on SunOS 4.* systems,
	so gated must be statically linked.  This prevents the use of
	a gated binary compiled on one kernel architecuture (say
	sun4m) from working on another (sun4c).

Compiling Gated on systems with shared libraries:

	On systems without shared libraries, object files are included
	from libraries in the order they are specified on the `ld'
	command line.  Gated takes advantage of this by including the
	system libc before gated's libcompat causing routines missing
	from libc to be included from libcompat.  `Ld' automatically
	includes libc again at the end which will resolve any library
	routines required by routines in libcompat that have not
	already been included.

	This behaviour does not seem to be maintained when shared
	libraries are used.  Routines in libcompat end up being used
	even though the corresponding routine exists in libc.
	Currently the best workaround for the short term is to specify
	static linking (-Bstatic with SunOS, -static with gcc).


Using gated on AIX 3.1 and 3.2:

	Problems have been reported with yacc on at least some
	versions of AIX 3.1 and 3.2.  On of the problems is that Yacc
	does not report parse errors to the caller, resulting in gated
	trying to run with an incorrect configuration.  It is strongly
	recommended that you obtain GNU bison instead.  It is
	available for anonymous FTP from prep.ai.mit.edu in the
	pub/gnu directory.


Running HELLO and/or EGP on 4.2 based systems:

	If you would like to run HELLO or EGP on a 4.2 based system such as
	Ultrix 1.2, 2.0, 2.1 and SunOS 3.x you will need to add the
	following code to the following modules and rebuild your kernel. 

	/sys/netinet/in.h:

#define IPPROTO_EGP		8		/* exterior gateway protocol */

#define IPPROTO_HELLO		63		/* Fuzzball HELLO protocol */

	/sys/netinet/in_proto.c for SunOS 3.x:


 { SOCK_RAW,	PF_INET,	IPPROTO_HELLO,	PR_ATOMIC|PR_ADDR,
   rip_input,	rip_output,	0,	0,
   raw_usrreq,
   0,		0,		0,		0,
 },
 { SOCK_RAW,	PF_INET,	IPPROTO_EGP,	PR_ATOMIC|PR_ADDR,
   rip_input,	rip_output,	0,	0,
   raw_usrreq,
   0,		0,		0,		0,
 },


	/sys/netinet/in_proto.c for Ultrix 1.2, 2.0 and 2.2

{ SOCK_RAW,     &inetdomain,    IPPROTO_HELLO,    PR_ATOMIC|PR_ADDR,
  rip_input,    rip_output,     0,              0,
  raw_usrreq,
  0,            0,              0,              0,
  0,            0,              0,
},
{ SOCK_RAW,     &inetdomain,    IPPROTO_EGP,    PR_ATOMIC|PR_ADDR,
  rip_input,    rip_output,     0,              0,
  raw_usrreq,
  0,            0,              0,              0,
  0,            0,              0,
},



Bug reports, fixes, comments and HELP

	If you need assistance or have any questions, don't bang your
	head against the wall.  Post to the mailing list.  There are
	many people with gated experience who may be able to take a
	moment to help.

	When reporting a problem with gated, several pieces of
	information will greatly assist in debugging:

	    1)  Gated version

	    2)  What system it is running on, hardware, software and
		versions. 

	    3)  Your configuration file.

	    4)  The interface configuration.  It helps to provide this
	        as both the output of netstat -in (netstat -i -n on
	        4.2 based systems)
		and an ifconfig for each interface.

	    5)  The routing table, i.e. netstat -rn (netstat -r -n on
	        4.2 based systems)

	    6)  Gated's idea of the above.  To get this start gated with -t
        	(which is short for -tier).  Setting tracing options
		in the config file will not get all this information
		because gated scans the interfaces before parsing the
		config file. So you must specify tracing on the
		command line.

	    7)  Trace output of your problem.  If it is a RIP problem,
		turn on RIP tracing, an EGP problem, turn on EGP
		tracing.


	The mailing list can be reached at:

		gated-people@gated.cornell.edu
	
	Please report bugs, enhancements and comments to the mailing
	list or directly to the gated maintainers at one of the
	following addresses:

		gated@gated.cornell.edu
	
	To subscribe to the mailing list, send mail to the following
	address.  Note that your request is processed by a person, not
	a script.  If several people at your site are intersted in
	being on the mailing list, please consider setting up a local
	alias.  Send your requests to:

		gated-people-request@gated.cornell.edu

	There is an archive server for the gated mailing list.  For
	information on how to use it, send a message with a Subject:
	line of 'help' (no quotes) to:

		gated-people-archive@gatedcornell.edu


	I can be reached directly at:

		Jeffrey C Honig
		GateDaemon Project
		Information Technologies/Network Resources
		200 CCC, Garden Avenue
		Cornell University
		Ithaca, NY  14853-2601  USA

		Phone:	+1 607 255 6460
		FAX:	+1 607 255 9086

		jch@gated.cornell.edu

#
# ------------------------------------------------------------------------
# 
# 	GateD, Release 3
# 
# 	Copyright (c) 1990,1991,1992,1993 by Cornell University
# 	    All rights reserved.
# 
# 	THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY
# 	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
# 	LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# 	AND FITNESS FOR A PARTICULAR PURPOSE.
# 
# 	Royalty-free licenses to redistribute GateD Release
# 	3 in whole or in part may be obtained by writing to:
# 
# 	    GateDaemon Project
# 	    Information Technologies/Network Resources
# 	    200 CCC, Garden Avenue
# 	    Cornell University
# 	    Ithaca, NY  14853-2601  USA
# 
# 	GateD is based on Kirton's EGP, UC Berkeley's routing
# 	daemon	 (routed), and DCN's HELLO routing Protocol.
# 	Development of GateD has been supported in part by the
# 	National Science Foundation.
# 
# 	Please forward bug fixes, enhancements and questions to the
# 	gated mailing list: gated-people@gated.cornell.edu.
# 
# 	Authors:
# 
# 		Jeffrey C Honig <jch@gated.cornell.edu>
# 		Scott W Brim <swb@gated.cornell.edu>
# 
# ------------------------------------------------------------------------
# 
#       Portions of this software may fall under the following
#       copyrights:
# 
# 	Copyright (c) 1988 Regents of the University of California.
# 	All rights reserved.
# 
# 	Redistribution and use in source and binary forms are
# 	permitted provided that the above copyright notice and
# 	this paragraph are duplicated in all such forms and that
# 	any documentation, advertising materials, and other
# 	materials related to such distribution and use
# 	acknowledge that the software was developed by the
# 	University of California, Berkeley.  The name of the
# 	University may not be used to endorse or promote
# 	products derived from this software without specific
# 	prior written permission.  THIS SOFTWARE IS PROVIDED
# 	``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
# 	INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# 	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
