Subject: Re: appletalk broken somewhere between July 23rd and Sep 2nd?
To: Manuel Bouyer <bouyer@antioche.lip6.fr>
From: Bill Studenmund <wrstuden@nas.nasa.gov>
List: current-users
Date: 09/02/1999 12:18:01
On Thu, 2 Sep 1999, Manuel Bouyer wrote:

> On Thu, Sep 02, 1999 at 08:55:15AM -0400, John Kohl wrote:
> > [...]
> > example:  after starting atalkd, nbprgstr fails:
> > 
> > %  /usr/pkg/bin/nbprgstr -p 4 `hostname|sed 's/\..*$//'`:netatalk
> > nbp_rgstr: Connection timed out
> > Can't register kolvir:netatalk@*
> > Exit 1
> > 
> > % ifconfig ne0
> > ne0: flags=8b63<UP,BROADCAST,NOTRAILERS,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
> >         media: Ethernet manual
> >         inet 192.168.0.200 netmask 0xffffff00 broadcast 192.168.0.255
> >         atalk 192.200 range 0-65534 phase 2 broadcast 192.200
> 
> A few others have reported this problem as well, and I'ts likely related
> to the change I made to if.c to get atalk to properly work on my network.
> I suspect that the range (0-65534) given by atalkd to ne0 if wrong here, 
> as the network 0 is attributed to the loopback interface.
>
> I suspect the range should be 1-65534.
> (credits to Juergen Hannken-Illjes for discovering that changing the start from
> 0 to 1 makes it work).
> 
> Maybe someone knowing appletalk better than I do can comment ?

I've looked at this some, and I think the real problem is that netatalk is
playing fast&loose with the kernel routing table.

In Appletalk, net 0 is the local net, and node 0 is the local node. I
think what atalkd is trying to do with the lo0 route is make it so that
anything addressed to net 0 gets re-written to the right net (though I've
not dived into the daemon to see).

Does anyone have a PDF of inside Appletalk? Mine was on a machine which
died..

I think for the unrouted phase 2 case, Mats is right, we should only be
routing 65520-65534 out the interface.

There's another problem I've seen which we might as well fix - unrouted
phase 1 doesn't work due (once again) to how the loopback address is set
up. For phase 1 w/o a router, the whole wire is net 0. As the loopback
address gets set in as covering thw whole net, things don't work...

I think there are a few fixes we need. For unrouted phase 2, we should
only route 65520-65534 out the interface. The loopback interface should
only match the full address net 0 node 0. Then, if we're in anything other
than unrouted phase 1, we add a net 0 -> lo0 route.

Thoughts?

Take care,

Bill