ifplugd @PACKAGE_VERSION@

Copyright 2002,2003 Lennart Poettering <@PACKAGE_BUGREPORT@>

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

News

Thu Sep 13 2003:

Version 0.17 released, changes include: documentation update, better support for multiple interfaces, gcc 2.95 build fix

Thu Aug 13 2003:

Version 0.16 released, changes include: RPM spec file added, build fixes, WLAN improvements (including compatibility with the upcoming waproamd, a WLAN roaming daemon), monitor mode for use in conjunction with PCMCIA devices, better support for multiple interface setups, SUPPORTED_DRIVERS returns

Thu July 10 2003:

Version 0.15 released, changes include: bad umask fix, documentation update

Mon July 7 2003:

Version 0.14 released, changes include: autoconf usage, new dependency libdaemon, wireless LAN support, support for suspending/resuming, many fixes

Overview

ifplugd is a Linux daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled. This is useful on laptops with onboard network adapters, since it will only configure the interface when a cable is really connected.

ifplugd is a rather simplistic approach to this target since it relies on your distribution's native interface configuration system.

Some features:

Status

Version 0.14 is stable and has all the sensible features its users could think of.

Documentation

Have a look on the man pages ifplugd(8), ifstatus(8), ifplugd.conf(5). (A XSLT capable browser is required)

Configuration

Edit /etc/ifplugd/ifplugd.conf for configuration changes. This file is a bourne shell script sourced by the init script and used to generate a suiting command line. You may specify more than one ethernet interface in INTERFACES. For each interface a seperate instance of ifplugd is spawned. The arguments specified in ARGS are append to ifplugd's command line. Have a look on ifplugd -h or man ifplugd for further information about the available options.

The network interface which is controlled by ifplugd should not be configured automatically by your distribution's network subsystem, since ifplugd will do this for you if needed. On Debian remove interface names beginning with eth or wlan from the auto option line in /etc/network/interfaces.

Troubleshooting

When you are using the hotplug subsystem (Debian package hotplug) you may notice that the network device is configured even when it is not listed on an auto line in /etc/network/interface. This may be due to hotplug being configured to ifup the network interface when it becomes available. This was the default behavior in the Debian hotplug package prior to release 0.0.20030117-1, for example. To prevent this you should either upgrade your hotplug package or comment out the ifup call in /etc/hotplug/net.agent.

When using ifplugd together with APM (and probably ACPI) suspends, strange things may happen: some network devices fail to detect the network cable for a short period of time before and after the suspend. When using the -f switch, this will be treated as "no link beat", thus the network is shutdown after a timeout. During this timeout the machine changes to suspended state. When it is resumed again, the timeout will be run out, the network is deconfigured, however, as the next cable detection succeeds, the network is configured again immediately. To fix this problem, ifplugd should be disabled before the APM suspend and enabled back after the suspend. This may be done by using apmd and adding a script to /etc/apm/{suspend,resume}.d which simply calls /etc/init.d/ifplugd suspend, resp. /etc/init.d/ifplugd resume. It might even be a good idea to shut down the network completely during suspend, this may be achieved by calling /etc/init.d/ifplugd stop and /etc/init.d/ifplugd start in the appropriate places. I strongly urge the packagers of this software for the Linux distributions to add such scripts to their packages.

FAQ

  1. Q: I want to use ifplugd with my PCMCIA device, but ifplugd quits when it doesn't find eth0, when I have not inserted the card. What can I do?

    A: Use the -f switch. This is not very clean however, since modprobe is called on each cable detection query of ifplugd to load a module for the network device. This is suboptimal. You should probably run ifplugd only when the card is really inserted.

  2. Q: I am using the -f switch, but the kernel logs are getting filled with messages like "modprobe: modprobe: Can't locate module eth0". What can I do?

    A: Make sure you have a line like alias eth0 off in your /etc/modules.conf

  3. Q: When the cable is unplugged and the interface shut down it is still available with ifconfig and markes as UP. Why this?

    A: ifplugd cannot detect the link beat with a shut down interface on certain (most as of kernel 2.4.19) network drivers. Thus ifplugd enables the interface before querying the link status. This may be switched off with -a flag. You might want to use it if you have a sane network driver (e.g. eepro100). The subdirectory patches/ in the ifplugd distribution includes a patch for the 8139too 0.9.26 driver, which makes the driver compatible with -a. Don't ask me how to apply this patch. If you don't know, you won't need it.

  4. Q: Does it work with anything else than plain ethernet or wireless LAN?

    A: Certainly not, since the MII and ETHTOOL ioctl()s and the wireless extension don't exist on other network device types.

  5. Q: I have a Realtek 8139 based network card. Everytime ifplugd starts on bootup my machine freezes. What can I do?

    A: This is a bug in the 8139too driver 0.9.25 (at least) shipped with Linux 2.4.19, please upgrade to 8139too 0.9.26 (Linux 2.4.20 or seperately at http://www.sourceforge.net/projects/gkernel/).

  6. Q: There are already laptop-net's ifd and miid, why did you write your own daemon?

    A: laptop-net simply sucks and I didn't know of miid when I wrote ifplugd. However, ifplugd is far better than miid. For a comparison of miid and ifplugd, have a look on http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=162763&repeatmerged=yes

Requirements

A newer Linux Kernel (I think 2.2 is good enough, alltough I tested it only with 2.4) with a compatible device driver and ethernet card. Most modern cards and drivers are compatible, like mine which works with the 8139too driver.

ifplugd was developed and tested on Debian GNU/Linux "testing" from July 2003, it should work on most other Linux distributions (and maybe Unix versions) since it uses GNU autoconf and GNU libtool for source code configuration and shared library management.

The machine used was a Medion 9580-F laptop with a Realtek 8139 network card and a PRISM1 PCMCIA wireless LAN card.

ifplugd needs libdaemon.

Installation

As this package is made with the GNU autotools you should run ./configure inside the distribution directory for configuring the source tree. After that you should run make for compilation and make install (as root) for installation of ifplugd.

The installation scripts create an init script in ${sysconfdir}/init.d/ifplugd, however no /etc/rc?.d/ links are created for it.

Acknowledgements

For the developers of mii-diag, ethtool and laptop-net, since I looked on their source codes for learning how to use the link beat ioctls.

Oliver Kurth for packaging ifplugd for Debian and ifplugd's manpage

Asgeir Nilsen, Sean Reifschneider, R. Steve McKown, David Mitchell for patches

Frederic Lepied for integrating ifplugd into Mandrake Linux

Download

The newest release is always available from @PACKAGE_URL@

The current release is @PACKAGE_VERSION@

Get ifplugd's development sources from the Subversion repository.

You may find a mostly up to date Debian package of ifplugd on the Debian package repository.

Packages for Mandrake Linux may be found in the Cooker distribution; Gentoo packages are available as well


Lennart Poettering <@PACKAGE_BUGREPORT@>, July 2003
$Id: README.html.in 9 2003-07-05 17:59:40Z lennart $