Subject: ISO networking - netmasks, ESH packets and argo_debug
To: None <tech-net@NetBSD.ORG>
From: George Harvey <fr30@dial.pipex.com>
List: tech-net
Date: 11/26/1997 21:15:23
(this is a follow-up to some questions I raised on the netbsd.misc
newsgroup a few weeks back, a couple of people suggested that this 
list was a more suitable place)

Background...

I am attempting to write a boot-server for an IsisCAD Prisma diskless 
workstation. This, rather uniquely, uses the ISO transport protocol over
a CLNP network layer to download its boot image. I am using the ISODE 8.0
code, on top of NetBSD's ISO networking, as my starting point. The host
system is an Amiga 3000T running NetBSD 1.2.1. This is my first serious
attempt to use ISO networking so please let me know if I am going down the
wrong track!

Netmasks

I don't seem to be able to configure an ISO netmask using 'ifconfig'. 
Ifconfig happily accepts all sorts of permutations of mask values but
when you query the configuration, no mask value is displayed. I have
looked through the code for ifconfig itself and it appears to be parsing
the mask string and correctly adding it into the structure being 
passed to the kernel. As far as I can tell, the ioctl should 
end up being handled in the 'iso_control()' function within netiso/iso.c
but when I add some debugging messages in there I can see the address
value but I get a nonsense value for the mask. My questions are:
1. For a NSAP of 49.00.01.00.60.30.00.22.33.00, what would be a correct
   mask value to give to ifconfig?
2. Am I looking in the right place in iso.c, and if so, why does the mask
   value not get there?

ESH packets

The reason I started digging around in the netmask code is that I have a
serious problem with incoming ESH packets. The Prisma sends ESH packets
and my understanding is that these are used to build up a cache of SNPA
addresses which is used something like the ARP cache in IP networking.
What happens is that as soon as the Amiga sees the ESH packet, it adds
a completely bogus SNPA address to its cache and then tries to use that
address to send packets back to the Prisma. I have had an analyser on the
network and the ESH packets from the Prisma are correctly formatted.
The correct address should be: 0000E9000185, what goes in the cache is
000030000085. I have had a hunt in the netiso/iso_snpac.c code for this
one but without any success. I don't know if the netmask issue has 
anything to do with the ESH problem but it seems possible that a bad
netmask might result in an incorrect SNPA entry.

Note: If I disable the handling of incoming ESH packets, NetBSD defaults
to using the end-system multicast address and I can successfully establish
an ISO TP connection with the Prisma so it's not all bad news :-)

Argo debug functions

And finally, it looks as though I should be able to turn various run-time
debugging options on and off by setting values in the argo_debug[] array 
but I can't see how to actually do this with a running kernel!


Any ideas?



    George Harvey                  | Amiga A3000T, CyberStorm-II 040,
    email: fr30@dial.pipex.com     | Picasso-II, MFC-III, Ariadne