Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 01 Oct 1997 00:18:58 +0930
From:      Mike Smith <mike@smith.net.au>
To:        hackers@freebsd.org
Subject:   Interface configuration : call for ideas.
Message-ID:  <199709301449.AAA00810@word.smith.net.au>

next in thread | raw e-mail | index | archive | help

In the light of various issues I've been considering the way that 
network interface configuration is handled from user-space.

Currently, interface configuration is handled by /etc/rc.network at 
startup for static network interfaces, by /etc/ppcard.ether for PCCARDs
and by assorted internal configuration magic for PPP and SLIP links.

In many cases this diversity is undesirable.  It doesn't handle adding 
such extra interface attributes such as static routes in a consistent 
fashion, and it is difficult to configure.

To address some of these concerns, a model along the following lines is 
proposed.  Please note that there are undoubtably problems with this 
model, and the author would appreciate vigorous criticism of any 
percieved weaknesses.

If this is swallowed reasonably well, a proposed '/etc/rc.interface' 
and accompanying details will be put forward.  Comments?

 = = = = = = = = =

The arrival of an unconfigured interface is viewed as an event.  The set 
of consequences of this event should include:

 - Startup script(s) for the interface and address families being run.
 - The interface being given address details, possibly for more than
   one address family.

In order to achieve this, the following information may need to be
available or inferrable:

 o An association between an interface name or type and an address.
   This may be effected by allowing interface address details to be
   attached to an interface name or type.  On interface arrival, if no 
   address details are attached to the name of the interface, details 
   should be retrieved from the first association to the interface type.

   One means of achieving this would be to evolve from the current
   rc.conf parameters.  For example, consider :

   ifconfig_ed0="inet 10.2.3.4"
   ifconfig_lan="inet 10.5.6.7"

   The arrival of the interface "ed0" would result in it having the 
   address 10.2.3.4 configured.  If the interface "fxp0" were to 
   arrive, there would be no address directly associated with it.  
   In this case, as "fxp0" is of type "lan", the generic "lan"
   address 10.5.6.7 would be assigned to it.

   Notes: It might be seen as desirable to have more than one of these 
          generic type-associated addresses available, however it is 
          not clear how it could safely be determined which interface
          should obtain which address.

          "Address" should be considered to include "address 
          solicitation technique" (eg. BOOTP, DHCP).

 o An association between the specific arrival event, interface name 
   and address details.  Such information may be attached to the 
   arrival event, as it is likely to have been derived as part of the 
   arrival process (eg. PPP negotiation, SLIP login, etc.).

 o Locations to be searched for startup scripts.

The departure of an interface is viewed as an event.  The set of 
consequences of this event should include:

 - Shutdown script(s) for the interface and address families being run.
 - Address details being taken from the interface, if it still exists.

In most cases, the removal of an interface automatically cleans up 
behind itself.  Shutdown would only be relevant if there were daemons 
associated with the interface which needed to be cleaned up.

The arrival of new address information on an interface is viewed as an 
event, with the following possible consequences:

 - Routing alterations being made to accomodate the new interface.

A specific set of routing directives should be associated with an 
given interface address, or possibly indirectly via the interface name 
or type.  This might be achieved by adding a directory etc/routes 
containing files named after interfaces, interface types or interface 
addresses, or possibly definitions in rc.conf.  There are a number of
possiblities for feature-creep here (eg. matching to a range of 
addresses).

The departure of address information is viewed as an event, with the 
following consequences:

 - Routing information for the interface being removed, if it still
   exists.

This should normally be taken care of by the removal of the interface 
iteself.






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709301449.AAA00810>