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
.
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
.
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.
make
in the src directory or
the object directory.
make install
in the
src or object directory. Then optionally type make
install-man
in the same directory to install the man
pages.
/etc/gated.conf
.
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#
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.
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 1change the default for ipForwardInfo to remove the second zero so it becomes:
DEFVAL { { 0 } } -- 0.0The mosy supplied with ISODE 6.8 could not parse this syntax, even though it is correct.
`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).
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.
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 ;
.
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.
/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, },