[comp.protocols.appletalk] Rutgers CAP - Updated again.

rapatel@khnphwzhn.njin.net ( Rakesh Patel) (11/27/90)

Yet another updated Rutgers cap is available via anonymous ftp
from rutgers.edu (src/ru-cap2.tar.Z).

This time it runs on the NeXT properly (additional patches were
necessary).

In addition, this version will support ethertalk on the pyramid.
However, in order to add the enet driver, you'll need to have kernel
source for the pyramid.  System V shared memory is used to use
/etc/cap.ether.shared.

The System V shared memory support is #ifdef'd for the pyramid. 
If someone wishes to port the enet driver to other machines that
contain system V shared memory, the ifdefs can be altered to use
a configuration option instead.


Rakesh Patel.

trier@cwlim.INS.CWRU.Edu (Stephen C. Trier) (11/28/90)

Does this new version contain any other changes besides the NeXT and
Pyramid support?

-- 
Stephen Trier                              Case Western Reserve University
Work: trier@cwlim.ins.cwru.edu             Information Network Services
Home: sct@seldon.clv.oh.us               %% Any opinions above are my own. %%

rapatel@khnphwzhn.njin.net ( Rakesh Patel) (11/28/90)

No other changes were made if you are comparing it to the last time I 
announced an update on November 20 (only a week ago). That version
contained some important bug fixes - the latest version just adds
the patches to make it work on NeXT and Pyramid machines.

Rakesh Patel.

kludge@scb3.larc.nasa.gov (Scott Dorsey 44056) (11/28/90)

In article <Nov.27.16.40.31.1990.805@khnphwzhn.njin.net> rapatel@khnphwzhn.njin.net ( Rakesh Patel) writes:
>No other changes were made if you are comparing it to the last time I 
>announced an update on November 20 (only a week ago). That version
>contained some important bug fixes - the latest version just adds
>the patches to make it work on NeXT and Pyramid machines.

We are running Ultrix V4.0 on a number of DECStation 5000 machines, talking
to appletalk through Kinetics Fastpath boxes, as well as Sun machines.  No
problem with the suns, but atlook on the DS5000 only returns three or four
lines (instead of the 90-odd that atlook on the sun does), and of course the
papif and tlw stuff doesn't see anything other than those three entries.  I
just got the new Rutgers stuff and it doesn't do any better.  Help!
--scott

hedrick@athos.rutgers.edu (Charles Hedrick) (11/30/90)

If I understand correctly the way atlook works, I believe it sends a
request to the nearest Appletalk router, asking the router to
broadcast an NBP lookup on all networks in the zone you are asking
about.  Every host on such a network will then send a response
directly back to your machine.  This means you get lots of packets
coming back all at once.  My suspicion is that somehow you are unable
to handle lots of packets at once.  There are several possibilities.
The first to check is whether the UDP socket being used by atlook is
properly set up.  When packets come in they are put on a queue until
the program can read them.  That queue has a finite size.  Could be
it's simply too small.  I'm not sure quite how to change it.  It could
be a parameter when building the kernel, an ioctl, or both.  Another
possibility is that your system simply can't handle large numbers of
packets arriving at the same time.  Some of the DEC Ethernet
interfaces were well known for having this problem, but the 5000 is
recent enough that this wouldn't be my first thought.

kludge@scb3.larc.nasa.gov (Scott Dorsey 44056) (12/01/90)

In article <Nov.30.00.19.10.1990.2967@athos.rutgers.edu> hedrick@athos.rutgers.edu (Charles Hedrick) writes:
>to handle lots of packets at once.  There are several possibilities.
>The first to check is whether the UDP socket being used by atlook is
>properly set up.  When packets come in they are put on a queue until
>the program can read them.  That queue has a finite size.  Could be
>it's simply too small.  I'm not sure quite how to change it.  It could
>be a parameter when building the kernel, an ioctl, or both.  

Yep, that was the problem.  Many thanks to djh@munnari who provided
the following code:

{ long len;

  len = 6 * 1024; /* should be enough ?? */
  if(setsockopt(fd,SOL_SOCKET,SO_RCVBUF,(char *)&len,sizeof(long))!=0){
	fprintf(stderr, "Couldn't set socket options\n");
  }
}

Place this just after the call to socket() in the abkip.c file in lib/cap
(and then remake CAP completely). The code sets the socket buffer size to 6k.
It might be a good idea to put this in an #IFDEF in the distribution, as it
most certainly does work.  I thank you and djh.  My laserwriters thank you
as well.
--scott