
SUPPORTED SYSTEMS:

	Program should compile and run on probably all POSIX-compliant system
	with BPF device or PCAP library (libpcap).
	Posix threads are also required, but there is no strict
	requirement on their POSIX-compliance (works fine with the Linux ones).

	Tested on:
		FreeBSD 3.x/4.x/5.x
		OpenBSD 2.8
		Linux 2.2,2.4
		MacOS X/Darwin 7.3.x/7.4.x (powerpc)
		Solaris 9 (x86)

	NOTES:
	    1. 
		The "input-only" interface feature seems to be supported only
		with BPF on FreeBSD 4.x.
	    2.
		FreeBSD 4.5-RELEASE (+?) have stupid problem with poll(),
		which behaves erratically with BPF file descriptors.
		I've submitted the problem report, kern/36219:
			http://www.freebsd.org/cgi/query-pr.cgi?pr=36219
		So, your newer system might already have this or similar fix.

		If not, apply the following kernel patch (as suggested
		in kern/36219):


=== Kernel patch for FreeBSD 4.5-RELEASE ===
--- /sys/net/bpf.c.old   Fri Mar 22 13:48:18 2002
+++ /sys/net/bpf.c       Fri Mar 22 13:48:42 2002
@@ -1085,7 +1085,7 @@
        if (d->bd_bif == NULL)
                return (ENXIO);
 
-       revents = events & (POLLIN | POLLWRNORM);
+       revents = events & (POLLOUT | POLLWRNORM);
        s = splimp();
        if (events & (POLLIN | POLLRDNORM)) {
                /*
@@ -1094,11 +1094,12 @@
                 *      if (d->b_slen != 0 ||
                 *          (d->bd_hbuf != NULL && d->bd_hlen != 0)
                 */
-               if (d->bd_hlen != 0 ||
-                   ((d->bd_immediate || d->bd_state == BPF_TIMED_OUT) &&
-                   d->bd_slen != 0))
+               if (d->bd_hlen != 0
+                       || (d->bd_immediate && d->bd_slen != 0)
+                       || d->bd_state == BPF_TIMED_OUT
+               ) {
                        revents |= events & (POLLIN | POLLRDNORM);
-               else {
+               } else {
                        selrecord(p, &d->bd_sel);
                        /* Start the read timeout if necessary. */
                        if (d->bd_rtout > 0 && d->bd_state == BPF_IDLE) {
=== EOF ===

INSTALLATION:

	./configure && make install install-man && man ipcad.conf

CONFIGURATION:

	$PAGER /usr/local/etc/ipcad.conf.simple	# Read the simplest case
	$EDITOR /usr/local/etc/ipcad.conf	# Customize the default one

HOW DO I ...?

	echo "<YOUR_QUESTION>" | mail -s Question vlm@lionet.info
	sleep 86400	# wait a bit
	mail		# check your mail


-- 
Lev Walkin
vlm@lionet.info
