Public Release 3

$Id: INSTALL,v 1.3 1998/06/30 14:34:39 wfs Exp $

INSTALLATION of GateD R3_5

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.`src/util/archtype`. Run 
    src/util/archtype directly to display the architecture. If you will never
    compile GateD on a second architecture you can use obj. For example, on a 
    Sun SPARCstation running SunOS 4.1.1: 
        
        sun% src/util/archtype
        SunOS-4.1.1-sun4
        sun% mkdir src/obj.`src/util/archtype`
        sun% ls -d src/obj.*
        src/obj.SunOS-4.1.1-sun4/
        
    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. 

    Under Linux you will need either 40Mb of virtual memory or to use BSD or
    minix free versions of sed to build the configurations.

 3. Configure GateD for this architecture by typing make config. This will run
    an awk script on your obj.`src/util/archtype`/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. 

 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! 

------------------------------------------------------------------------



Notes


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): 
        
        sun# adb -k -w /vmunix /dev/mem
        _udp_cksum/W 1
        _udp_cksum:     0x0             =       0x1
        _udp_cksum?W 1
        _udp_cksum:     0x0             =       0x1
        ^D
        sun# 
        
    You can probably find the proper name for the UDP checksum value with: 
          
        sun# nm -o /vmunix | grep udp_c
        /vmunix:f80fa35c D _udp_cksum
        /vmunix:f801bd10 T _udp_ctlinput
        sun#
        
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 BSDI's BSD/386 1.0,
    Sun's Solaris 2.0 and Silicon Graphics' IRIX. For other systems, IP
    multicasting support may be available (for example SunOS 4.1.* and some 
    versions of Ultrix), check the FTP directories on  gregorio.stanford.edu, 
    parcftp.xerox.com and ftp.isi.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 ifconfig commands for ie0/le0/ec0 in 
    /etc/rc.local. Otherwise SunOS has a misconception of the route to the
    attached network. 

    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). 

Running GateD on AIX 3.2 systems 
    AIX 3.2 has networking code based on BSD 4.3 Reno, including variable
    length subnet masks and the routing socket. Some of the extensions are
    available when the system is not running in BSD 4.3 compatibility mode
    (see the compat_43 variable and no). Amoung these are the ability to
    determine the destination address of a RIP packet (used when GateD is
    responding to the ripquery program). GateD can run in either mode with a
    slight loss of functionality in BSD 4.3 compatability mode. Make sure you
    compile with -D_BSD=44! 

    In order to generate a core dump useful for debugging on AIX 3, the
    default limit on the core size must be increased. This can be accomplished
    via the shell, or automatically when GateD is started via gdc. Some
    compilation-time configuring is necessary for this to work. Either define 
    GDC_CORESIZE=RLIM_INFINITY in the obj/Config file, or define GDC_RESOURCE 
    and use the -c option to gdc at run time. 

Compiling GateD on systems with shared libraries 
    If an assertion failure occurs in task_stdio_read(), it is because a file
    descriptor was improperly closed. This can occur when the named resolver
    libraries are improperly installed in the system shared libraries. If the
    socket used by the shared libraries is not statically initialized to -1,
    file descriptor zero will be closed when GateD calls endhostent(). The
    solution is to fix the shared libraries. A workaround would be to not use
    any symbolic names in the config file and specify options noresolv ;. 

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 EGP on 4.2 based systems 
    If you would like to run 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 */

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

        { 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_EGP,    PR_ATOMIC|PR_ADDR,
          rip_input,    rip_output,     0,              0,
          raw_usrreq,
          0,            0,              0,              0,
          0,            0,              0,
        },
        


------------------------------------------------------------------------

Last Updated 1994/09/07 00:50:41. 

gated@gated.cornell.edu
