Subject: Re: [netatalk-admins] Using Netatalk as a Router
From: Andras Kadinger (bandit@freeside.elte.hu)
Date: Sun May 03 1998 - 03:50:53 EDT
Hello Bob, William and others,
Thank You for correcting me. On the day I wrote my 'correcting', but as
well wrong message, I found out that I was wrong (which was pointed
out); it is a weak explanation to say, my Friday message correcting
myself didn't make it to the list.
I apologize for again not telling the truth and causing another
misunderstanding.
bsmith@h-e.com wrote:
> Original message sent on Fri, May 1 1:09 AM by bandit@freeside.elte.hu (Andras
> Kadinger) :
>
> >> Do you need a router?
> >
> >No. You should be able to do this even on a Linux machine without any
> >network connectivity (atalkd must have a network interface to bind to,
> >though), and define Zones.
[Please note the word 'should'.]
[...]
> I tried putting a different range for "-net", but every time it would revert to
> "0-65534", and every time the "-zone" options disappeared. There is also a
> comment in atalkd.conf that says "-seed only works if you have
> multi-interfaces." From all this I conclude that you cannot use atalkd to
> define zones when there is only one interface on your Unix machine and no other
> router on your network.
This behaviour seems to be wrong in the scenario, where You are in a
zoned environment, but no other routers did start up yet (like starting
up in the morning): atalkd would start up without zones, but later, when
routers start up, I doubt, it would be able to switch to a zoned
environment (and would correctly notify all running appletalk services).
[...]
> The important detail here might be not having any other routers on the network.
> If your network has other routers that show the same structure as atalkd.conf,
> it might appear that atalkd is seeding when actually it is probing and finding
> the structure defined by the other routers, and writing that to atalkd.conf. If
> the other routers were not there, the zone list in atalkd.conf would disappear.
> This might explain why it seems to work in some cases.
Unfortunately, the situation is even worse.
I have another router on my network (not atalkd), seeding five or six
ethernet segments (on one of these segments is a Linux machine with
netatalk).
I define one network interface in atalkd.conf.
Now unless I make atalkd.conf read-only, atalkd ignores all my requests
to work in a multi-zone ('seeded') network: even if the config agrees to
the last bit with that of the other router, atalkd rewrites atalkd.conf
to be like just as if there were no routers at all, removing all the
'-seed' and '-zone' directives - indeed nbplkup can not see any other
objects on the (fully populated) network, just as other hosts can't see
the netatalk box.
Making atalkd.conf read-only does not remove atalkd's complaints to
syslog, but at least makes it integrate into the network and behave; if
I had no other routers, atalkd would only complain to syslog and deny
start-up completely (although I have to check this once again).
So even the presence of an other router would not stop atalkd from
removing the zoning information; I must admit, my original posting was
based on pure logical conclusions, and I stick to that we _should_ be
able to define zones and 'seed' our networks - I risk, even with no
other routers around.
Quickly checking atalkd source, it seems, it only honors the '-seed'
option when having multiple interface definitions, where I think from
the above explanations, it shouldn't need to make this distinction.
Sincerely,
Andras Kadinger
bandit@freeside.elte.hu
PS: I include a completely untested patch here (I am no appletalk
expert, so my fix might be wrong); as I won't be able to get to any
AppleTalk network in a couple of days, people might want to test this
out. It bypasses the test of having only one interface, and lets atalkd
go on as there were more, thus allowing -seed to get effect. Warning:
untested, although compliles.
--- etc/atalkd/main.c.orig Sun May 3 08:46:04 1998
+++ etc/atalkd/main.c Sun May 3 08:46:33 1998
@@ -170,7 +170,7 @@
iface->i_time++;
} else {
iface->i_flags |= IFACE_NOROUTER;
- if ( ninterfaces > IFBASE ) {
+ if ( 1 ) {
if (( iface->i_flags & IFACE_SEED ) == 0 ) {
/*
* No seed info, and we've got multiple
interfaces.
This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:32:38 EST