README
======

License: GPLv2

You should be able to find GNU Public License from www.gnu.org.


LSM is a Link Status Monitor which can be used to monitor
for example a Linux router/firewall connectivity and if
you happen to have multiple connections it can change
routing when an up/down event happens by utilizing external
script.

When a SIGUSR1 is received current connection states are
syslogged.

This package is highly influenced by fping and iputils arping.
Many thanks for their efforts.


TODO
====

- Add "odd" icmp packet handling (may not be necessary)
- You can't set source ip for ping packets. It's always
  autodiscovered.
- Could the arping connection targets use only one socket ...
- IPv6 support.
- Should be able to check ENODEV somehow before first sendto.
  Now exits with error code 2 after daemon which init-script
  can't handle.
  * This is now changed so that ENODEV causes LOG_ERR with each ping
    but no exit and behave just as the packet was sent. So for ENODEV
    you should get a down -event just as if there was packet loss.
- The source is kind of ugly ...


DECISION MAKING
===============
As of lsm v0.27, the detection algorithm works like this:

LSM keeps track of
     1) the result of the most recent pings (up to 100)
     2) the number of consecutive lost pings.
     3) the number of consecutive received pings.

Let A == the number of recently lost pings
Let B == the number of consecutive lost pings
Let C == the number of consecutive returned pings

If connection (or group) is UP
     AND ( (A >= max_packet_loss) OR (B >= max_successive_pkts_lost)
     then change the connection (or group) to down.

Else If connection (or group) is DOWN
     AND ( (A <= min_packet_loss) AND (C > min_successive_pkts_rcved) )
     then change the connection (or group) to up.

Note: LSM assumes each connection starts UP.


DEPENDENCIES
============

default_script uses /bin/mail that's the only reason to depend on
mailx-package.


INSTALLING
==========

There is now Makefile target install for those of you not using rpms. I use only
rpm based distros so that may not be in sync with lsm.spec which does all what
I need.


AUTHORS
=======

Mika Ilmaranta <ilmis@nullnet.fi>

See lsm.spec's changelog section for patch submitters.

#EOF
