[Netconf-devel] netconf 0.5

Thomas Hood jdthood@yahoo.co.uk
Thu, 28 Apr 2005 14:22:51 +0200


With netconf 0.5 I have more or less reached my first objective which
was to write a fully functional ifupdown emulator in Python.  Emulation
of ifup/ifdown is accomplished by means the Python program netconfd,
hook scripts written in sh for the particular configuration methods and
wrapper scripts for /sbin/ifup and /sbin/ifdown.

Version 0.5 differs from version 0.4 in that netconfd no longer uses
ifupdown to do configuration.

To start netconfd after installing the netconf package, open a terminal
and run it as root from the command line.  I haven't implemented
daemonization yet.  Debugging messages and output from child processes
will appear in the terminal.

When the netconf package is installed it diverts /sbin/ifup
and /sbin/ifdown to /lib/ifup and /lib/ifdown, putting in place of these
wrappers that will send commands to netconfd if netconfd is running.  If
netconfd is not running then the wrappers will execute /lib/ifup
or /lib/ifdown.  Thus, if you have a problem with netconfd then you can
simply kill it and you will get the standard ifupdown behavior instead.

Netconf's ifup and ifdown programs communicate with netconfd via D-BUS.
Unlike ifup/ifdown, netconfd is a persistent process; hence in principle
it does not need to maintain a state file (although netconfd 0.5 does
keep /etc/network/run/ifstate up to date) and in the future it can be
enhanced to do things like active interface state monitoring.  It can
also be enhanced to interact with D-BUS-enabled protocol negotiation
programs.

In version 0.5 netconfd emulates ifup/ifdown as closely as possible.
There are a few known shortcomings in error and signal handling,
but under most circumstances the package ought to behave like good ol'
ifupdown.

Get the package at:

    http://www.aglu.demon.nl/netconf

Python is a good language in which to carry out development.  If it is
decided that netconf should completely replace ifupdown then the Python
code can be translated into C++ fairly easily, I think.
-- 
Thomas Hood <jdthood@yahoo.co.uk>