From: djh@munnari.OZ.AU (David Hornsby)
Newsgroups: comp.protocols.appletalk
Subject: CAP 6.0 Frequently Asked Questions
Date: 7 Jan 1993 14:36:09 +1100
Organization: University of Melbourne
NNTP-Posting-Host: munnari.oz.au


CAP FAQ
-------
Last update:
Thu Jan  7 14:30:39 EST 1993


> What is CAP ?

The Columbia AppleTalk Package (CAP) implements the AppleTalk protocol
stack on a variety of UNIX machines.  The main applications provide an
AppleShare 2.0 compatible server (aufs), a LaserWriter Spooler (lwsrv)
and a program to print to LaserWriters (papif).  The latter can be used
to talk to EtherTalk LaserWriters, LocalTalk LaserWriters used on Dayna
EtherPrint cards or on a LocalTalk/EtherTalk gateway.  There are also a
number of contributed packages bundled with CAP (see cap60/contrib).



> What extra hardware is required for CAP ?

On a SUN or ULTRIX machine, CAP can speak Phase 1 or Phase 2 EtherTalk
packets using packet filters based on the Stanford ENET model.  Where
available, CAP can also use Kernel based AppleTalk or run the UNIX
AppleTalk Bridge (UAB) to act as a gateway.  On other UNIX boxes you
need to have a gateway that can translate IPTalk packets.  Suitable
candidates are Shiva FastPath, Cayman GatorBox or Webster MultiPort Gateway.



> What machines will CAP run on ?

The CAP Configure script has specific support for the following
Operating Systems:

	sunos - SUN SunOS
	ultrixnn - DEC Ultrix 1.2, 2.0, 4.N
	irix - Silicon Graphics IRIS/IRIX
	aix - IBM AIX System V
	hpux - HP HP-UX 8.0
	uts - Amdahl UTS
	aux - Apple A/UX 2.0
	encore - Encore MultiMax BSD
	pyr - Pyramid (BSD Universe)
	next - NeXT/MACH
	dynix - Sequent Balance
	newsos - Sony NEWS
	bsd - BSD 4.2, 4.3



> What is the current CAP version ?

CAP is at version 6.0 with (currently) 126 patches to be applied, most of
which add extra functionality to the original.  To determine the current
patch level of your sources, check the cap60/README file for a line of
the form

	o CAP Distribution 6.0, Patch Level 126, July 1992



> Where can I get CAP ?

CAP can be obtained by anonymous FTP from

rutgers.EDU		src/{cap60.tar.Z,cap60.patches/*}
munnari.OZ.AU		mac/{cap60.tar.Z,cap.patches/*}
gatekeeper.DEC.COM	pub/net/appletalk/cap/{cap60.tar.Z,cap.patches/*}
ftp.kuis.kyoto-u.AC.JP	net/cap/{cap60.tar.Z,cap60.patches/*.Z}
src.doc.ic.AC.UK	mac/multigate/{cap60.tar.Z,cap.patches/*}

Please choose an appropriate site and an off-peak time for the transfer.

The patches are available individually or as the files "patches.1-75.tar.Z",
"patches.76-100.tar.Z" and "patches.101-126.tar.Z". Additionally, for new
users, a partially patched source file is available as "cap60.pl100.tar.Z"
(beware: the file cap60.tar.Z is totally unpatched).



> How do I apply the patches ?

To make the process of patching easier, you should get the 'patch' utility
written by Larry Wall, it is normally archived at sites that archive
comp.sources.unix in volume7/patch2.

For each of the patches, run 'patch -p < cap60.patch0NN' from the top level
cap60 directory, for example, in csh

		foreach i (cap60.patches/cap60.patch*)
		patch -p < $i >>& /tmp/patches
		end

and check the /tmp/patches file for patching errors (should be none).
To remove the *.orig files that patch leaves behind (containing the original
version of the file), run 'make spotless' from the top level directory (note
that spotless also removes all makefiles so gen.makes needs to be run to
regenerate them).



> I picked up CAP 6.0 from rutgers.edu, but our Unix system administrator
> refuses to install it because there are 74 patches (can't say I blame him)!

Sigh. Using the patch program to apply patches requires a minimal amount of
time and energy.  Taking time to install the patch program will pay off for
CAP and other program updates.

% date
Sat Mar  7 23:51:05 EST 1992
% touch /tmp/patches
% foreach i (cap60.patches/cap60.patch*)
? patch -p < $i >>& /tmp/patches
? end
% grep rej /tmp/patches
% date
Sat Mar  7 23:54:26 EST 1992

It took just 3:11 to apply 75 patches to the raw CAP tar source.  The extra
overhead is the time to FTP 3 files, cap60.tar.Z, patches.1-74.tar.Z and
cap60.patch075 and uncompress them.  The total time spent on this ... 0:8:02.



> Is CAP Public Domain ?

No, CAP is distributed with the following condition on its use:

  Copyright (c) 1986, 1987, 1988, The Trustees of Columbia University in
  the City of New York.  Charlie C. Kim, User Services Group, Academic
  Information Services Division, Libraries and Center for Computing
  Activities and Bill Schilit, formerly of Computer Research Facilities,
  Computer Science Department.

  Permission is granted to any individual or institution to use, copy,
  or redistribute this software so long as it is not sold for profit,
  provided that this notice and the original copyright notices are
  retained.  Columbia University makes no representations about the
  suitability of this software for any purpose.  It is provided "as is"
  without express or implied warranty.

Some portions of CAP have other copyrights and are suitably marked.



> Is there a version of CAP available that supports Ethertalk Phase 2 ?

Phase 2 support was added in CAP 6.0 patches 25, 28 & 35 for SUN NIT, ULTRIX
4.n and SUN enet driver respectively.



> Can a workstation with 2 ethernet cards running Cap s/w act as a phaseII
> to (phaseI or phaseII) "Gateway"? If so, what patch level of Cap do I need
> to do this?
 
The UNIX AppleTalk Bridge (UAB) is an EtherTalk gateway.  It can handle
multiple ethernet interfaces and gateway between them.  This is its primary
function but it can also be set up to provide CAP services.  But ...



> Does anyone have a patch that will support the phase 2 appletalk protocol
> on UAB (CAP6.0).

UAB supports Phase 1 only. 



> Is there any standard way yet of implementing a execute only, copy
> protected CAP AUFS server?

The original method of achieving this was to removing read permission from
the data fork of the Application (make it non-zero length if the file is
empty).  The current method involves using the Application Manager added in
patch number 61.  Either of these methods can be circumvented by users who
are either knowledgeable or determined.



> Recently I introduced a new color postscript printer, Tektronix Phaser III
> 4698PXi, under one of the LocalTalks.  It works fine from Macintosh's so I
> tried to use it from papif but failed.

CAP uses DDP checksums by default, the checksum code in the Phaser III PXi
and the Apple Personal LaserWriter NTR incorrectly calculate the checksum
value and the packet is dropped. The programs aufs, lwsrv, papif, atis,
atlooklws and tlw now support the -k option to disable CAP checksums on a
per-program basis. To disable CAP checksums completely, add the following
lines to the m4.features file, rerun gen.makes and remake CAP.

# + DONT_DOCHKSUM no DDP checksums (Tektronix Phaser III PXi & Apple LW NTR)
define(`specialcflags',concat(specialcflags,` -DDONT_DOCHKSUM'))
#

No other code changes are necessary.



> We've just upgraded our DECstations to version 4.2 of ULTRIX, and our CAP
> distribution very neatly broke.

You need to obtain the net_common.o and pfilt.o patches from Digital's
Customer Support (also for ULTRIX 4.2A).  Do not turn on the ifconfig
copyall (stop-gap measure previously suggested on the net).  Do not define
ULT42PFBUG in m4.features.



> Does anybody know if the packet-filter patches that were necessary
> to make CAP work under Ultrix 4.2 are built into Ultrix 4.3?

CAP under Ultrix 4.3 does not require the packet filter kernel patches.
Do not turn on the ifconfig copyall (stop-gap measure previously suggested
on the net).  Do not define ULT42PFBUG in m4.features.  See also the file
/pub/DEC/ultrix-faq.txt on gatekeeper.dec.com



> When we run aarpd with a command like:
> 	 aarpd pf0 our_zone
> the daemon doesn't start & we get the message 'failed to start ZIS listener'.

This means that something has been allocated the UPD port 774 (768+6)
by 'portmap'. You can check this with the command 'rpcinfo -p'.

There are two solutions, break 'start-cap-servers' into two so that aarpd
and atis is started before portmap. Alternatively, and preferably, install
the NIC assigned port numbers into /etc/services. See the doc in the file
cap60/doc/install.ms for more details.



> I have installed the enet driver. But aarpd won't start successfully.
> Instead the following error message is being printed.
> unix!: # aarpd le0 EtherTalk
> open: /dev/enetXX: No such file or directory

The ENET drivers use devices of the form enet0, enet1 etc. Replace the
string "le0" with "enet0".



> I tried to run aarpd, and what happened was:
> /dev/nit: Permission denied
> I also tried to do a chmod 777 /dev/nit, to no avail.

In addition to requiring the device node, /dev/nit, you have to make sure
your kernel has the NIT driver support in it.  Here's what it looks like in
the GENERIC configuration file for SunOS 4.1.1 (/sys/sun4c/conf/GENERIC):

#
# The following are for streams NIT support.  NIT is used by
# etherfind, traffic, rarpd, and ndbootd.  As a rule of thumb,
# NIT is almost always needed on a server and almost never
# needed on a diskless client.
#
pseudo-device   snit            # streams NIT
pseudo-device   pf              # packet filter
pseudo-device   nbuf            # NIT buffering module

#
# The following is for the "clone" device, used with streams devices.
# This is required if you include streams NIT support, RFS, or an audio
# device.
#
pseudo-device   clone           # clone device

If your kernel configuration doesn't have these pseudo-devices included,
add them, rebuild (config and make) your kernel, and reboot.



> We're running CAP with Native EtherTalk on a network without a router.
> atlook doesn't show our LaserWriter IIg and getzones fails with
> error -1096 getting zone list

Zone names are the responsibility of AppleTalk routers. Without a router,
there are no zones defined for the network and the zone name field in NBP
lookup packets must be * (or nothing at all). To use CAP with Native
EtherTalk in this situation, start 'aarpd' with "*" as the zone name,
any other zone name string may cause the lookup packet to be dropped.



> I had problems with the top level CAP folder losing icon positions.
> I thought I solved it by creating .finderinfo and .resource dirs in ..,
> and making everything rw for everyone, rwx for everyone but the problem
> remains ...

The Mac will not save any Finder Information unless the Volume is owned by
the connected user (so that the AFP "owner bit" is set, Inside AppleTalk,
2nd edition, page 13-88). The solution with CAP is to setuid the top-level
directory - then anyone with the appropriate UNIX permissions will be able
to save ICON positions etc.



> I need help with IPTalk.

Herewith 10 easy steps to installing CAP with IPTalk:

1. Make sure that you have the latest CAP code. If in doubt, FTP the CAP
FAQ file mac/cap.patches/CAP.faq from munnari.OZ.AU. It contains a list of
the sites where CAP is available, please choose the closest site.

2. Run the CAP Configure program, answer all of the questions with the
defaults (by hitting RETURN). Run gen.makes to create the makefiles.

3. Find out the IP address of the CAP host, say 132.45.67.89. This is a 32
bit number represented as four 8-bit quantities written as decimal numbers.
It could also be represented as a hexadecimal number, 0x842d4359. The CAP
host node number is the bottom eight bits of the IP address, written as a
decimal number, in this case 89.

4. Find out the IP address of the IPTalk compatible gateway, such as a
FastPath, GatorBox or MultiPort Gateway, say 132.45.67.90. The "bridge"
node number is the bottom eight bits of the IP address, in this case 90.

5. Check that the top 24-bits of the two IP addresses are identical, in
this case 132.45.67. For simplicity I'll call this the IP subnet number.
If they do not match you have to investigate the atalkad administration
package, or use CAP with Native EtherTalk or one of the AppleTalk routers.

6. Find out the IPTalk network number being used by the gateway. This is
a 16-bit number represented as two 8-bit quantities separated by periods
or a single decimal number. For example 93.57 is 93*256 + 57, or 23865.
Each IPTalk network number is uniquely associated with one IP subnet
number, each IPTalk installation must have a unique network number where
the IP subnets differ.

7. (optional) Check all the other network numbers in use on your network,
make sure that the IPTalk network number is not being used for LocalTalk,
EtherTalk (Phase 1 or Phase 2) or on any other IPTalk network where the
IP subnet numbers differ.

8. Find out the zone name associated with the IPTalk network number. This
may be the same as other zone names on the network but must be identical
to the zone name programmed into the IPTalk gateway. eg: unimelb-CompSci

9. Create a file called /etc/atalk.local using the template provided in
cap60/etc/atalk.local and the UNIX manual entry in cap60/man/atalk.local.5
As a minimum, the file would look like the following, using the numbers
from the examples used above, comment lines start with a '#'

# mynet         mynode          myzone
93.57		89		unimelb-CompSci
# bridgenet     bridgenode      bridgeIP
93.57		90		132.45.67.90

10. Find out what UDP ports are being used on the IP network. These are
also called the "NIC Assigned" ports. These ports map to AppleTalk socket
numbers and are used to deliver packets to the correct UNIX processes. By
default, CAP will use the ports starting at 768 so that the RTMP socket
number 1 maps to UDP port 769 and the ECHO socket 4 maps to 772. The
official port range starts at 200, so RTMP becomes 201 and ECHO becomes
204. To ensure that CAP uses the official ports, add the following entries
to the file /etc/services or the NIS database

at-rtmp         201/udp
at-nbp          202/udp
at-echo         204/udp
at-zis          206/udp

The port numbers should already be defined in the gateway configuration.

Continue testing from the [10] Verification step in cap60/doc/install.ms

Note: if you are using CAP with Native EtherTalk then ignore all but step 1.
The Native EtherTalk code is able to learn the network configuration. If
you have an /etc/atalk.local file, you should remove it. If there are no
other routers on the network, start aarpd with "*" as the zone name. The
UDP ports are also used in Native EtherTalk, as markers for sockets in use.
If a CAP process has trouble starting the ZIS listener or ECHO or NBP
sockets are unavailable, consider installing the official UDP port entries.


For more information, see the CAP60.README file in the CAP distribution.

Send CAP FAQ contributions to cap@munnari.OZ.AU