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.

Version 0.4 released,
changes include: support for ESSID based configuration,
host_roaming private ioctl support on hostap drivers, ability to
suspend/resume the daemon, support for looking for uppercase MAC
scripts, many robustness fixes.

waproamd is a roaming daemon for wireless IEEE 802.11 NICs supporting the
Linux wireless extensions. It is intended to configure the WEP
keys according to the networks found.

Due to driver and stability issues, starting from version 0.5
ifplugd is no longer recommended for joint use with
waproamd. The default action scripts of waproamd are
modified accordingly: they run ifup/ifdown on their
own behalf when a new network became available or and old one is
lost. If you like you may still use waproamd and
ifplugd on the same interface together, but you have to
modify the default configuration to reflect that.

Mode of Operation

As long as the local NIC is not associated to any wireless network
waproamd scans iteratively for them. If one is detected, a
script in /etc/waproamd/scripts/ named after the MAC
address of the access point is called. (First lowercase, than
uppercase is checked) If a script like this is not found a script
named essid:<ESSID> in the same directory is
used. Special characters are escaped in an HTTP URL like fashion. If
this script is not existent,
/etc/waproamd/scripts/default is called instead. The
first argument to this script is "start". If the association
is lost, the same script is run with the argument
"stop". While the NIC is associated no scans are issued.

If multiple WLANs are detected at the same time, the network
which is detected by the hardware first is selected. However,
networks where a matching script exists take precedence.

waproamd requires a network driver supporting the Linux
wireless extensions v15 or newer. The driver needs to support scanning
for wireless networks, which may be tested by running "iwlist
scan". If the driver supports the wireless event subsystem,
waproamd may use it to improve latency behaviour. It is not required,
however.

waproamd supports the host_roaming private
ioctl() as defined by the hostap driver.

Don't forget to install a firewall on your computer, since
waproamd will try to log into any network it finds with
default settings, if not configured otherwise. Yes, you a right, waproamd is war-driving on steroids.

Configuration

Edit /etc/waproamd/waproamd.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 waproamd is spawned. The arguments specified in
ARGS are appended to waproamd's command line. Have a look on
waproamd -h or man waproamd for further information
about the options available.

Put your WEP keys in /etc/waproamd/keys/ in files named
after the AP's MAC address with an appended .wep. If the AP
uses aeswepd
for automatic rekeying, you may put the AES key into a file with the
suffix .aes instead.

Troubleshooting

Not all drivers/cards support the wireless event subsystem of the
Linux wireless extensions. Its support on your machine cannot be
detected automatically, you have to test it yourself with "iwlist
scan". See man 8 iwlist for more information. If your
driver/card combination does not support this, you have to enable
polling of association status by passing -e on the command
line. This will increase the reaction latency of waproamd.

You can priorize networks over others by adding symbolic links to
the default script to /etc/waproamd/scripts.

A newer Linux Kernel with a compatible device driver and WLAN NIC
(Wireless extensions v15 or newer). Most modern cards and drivers are
compatible, like mines which work with the hostap driver, version
0.0.3 and above. The driver has to support the scanning interface,
wireless event support ist nice to have.

waproamd was developed and tested on Debian GNU/Linux
"testing" from October 2003, it should work on most other Linux
distributions since it uses GNU autoconf for source code
configuration.

The machines used for development are a Medion 9580-F laptop with a
TEAC and a ZONET PCMCIA WLAN NIC. Both cards feature a PRISM2 chipset. hostap 0.0.4 was used as driver.

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
waproamd.

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