9fans archive / 1997 / 07 / 3 /    prev next

From: G. David Butler gdb@dbS...
Subject: multiple ethernet interfaces, naming
Date: Thu, 3 Jul 1997 08:34:24 -0500

I am well on the way to supporting multiple ethernet interfaces
on the PC on Plan9 and I thought I would get some input.

Currently the ether device is #l and the card is called simply
ether.  I think the cards should be ether0, ether1, etc.  This
requires changes in a few programs and files to look for
/net/ether0 instead of /net/ether during the boot of the computer.
This also requires the lance device in other ports to call the card
ether0.  I have done all of these.

The next step is the interesting one.  In the kernel there are two
ways of doing multiple devices off one driver.  Examples are the
serial devices eia[0-?] on #t and the network protocols on #I.
The main difference can be seen by a ls '#t' and ls '#I'.  The
second one comes back with "ls: #I: network protocol not supported".
You must specify which protocol you want by ls '#Itcp', for example.
(This is different in Inferno, you don't have to add the tcp part,
if that makes a difference.)

My work so far is to make the ether devices behave like #I.  So one
must bind #lether0, #lether1, etc. separately.  In addition I also
am forcing the ethernet naming specified in plan9.ini instead of
the current driver's way of assiging to "ether" the first card that
probes successfully.  I think this is important since you don't want
to assign any old IP address to any old network card.  Ether0 is
connected to a specific network and a different address would not work.

This is where I want to start the discussion.  First I would like to
understand the thinking behind the #I semantics, especially since it
changed in Inferno.  Next, should #l behave like #I as I have it now
or like #t and why?  Should the semantics of #I change?  And lastly,
if #I changes, what is the use of strings after the initial character
in devices like #Itcp?

As always, thanks for any input.

David Butler
gdb@dbS...