> So the problem turned out to be that somehow, when ethermediumlink()
> is called, its view of the namespace doesn't include /net as a
> separate mount. So I figured the devroot reset routine was getting
> called somehow after all the ip stuff attached. I reordered stuff to
> attempt to guarantee this wasn't the case, but didn't have much luck
> with that either. However, manually changing all the chandial lines to
> use #l/ether0 (instead of argv[2], which was /net/ether0) causes stuff
> to `just work'.
>
> Clearly my idea of what's happening in what order is kind of screwy.
> I've plopped things in various orders, but the only way things are
> running is if I use that hack. I see that '#l' is bound to /net in
> /lib/namespace, so it's happening before rio starts (and even if
> that's not where that happened; I put a bind -a '#l' /net in
> /usr/glenda/lib/profile prior to rio starting and that didn't help).
> Regarding the order of things:
>
> I'm calling links() after initseg() as it is in Plan 9's main.c;
> inside links(), I call ethervelink() (my virtual ethernet driver),
> ethermediumlink(), netdevmediumlink() and loopbackmediumlink().
>
> Any ideas now that the issue is a bit less arcane?

The link routines happen very early, before any user code has run.
/lib/namespace is processed by user code.
So when the links are running, I think it is simply
that there is nothing bound to /net.

Russ

Reply via email to