Subject: Changes to bpf_filter break pppd (more info)
To: current users <current-users@NetBSD.ORG>
From: Paul Goyette <paul@pgoyette.bdt.com>
List: current-users
Date: 12/16/1996 18:55:01
It appears that the recent changes to libpcap and bpf_filter stuff have
broken pppd. In particular, pppd no longer seems to be able to parse an
`active-filter' expression of the form:
active-filter "udp or (tcp and not tcp port ntp)"
I've had to remove the above line from my /etc/ppp/options file in order
to get pppd to come up. With the above line left in, pppd never even
gets to forking itself into the background.
Doing some preliminary debugging, it appears that everything goes fine
until the call to bpf_optimize() (in gencode.c). bpf_optimize()
(itself in src/lib/libpcap/optimize.c) calls lots of opt_XXXX() routines
in a loop, checking for a global variable "done" at the end of the loop.
It seems that the last of the opt_XXXX routines, opt_blks(), resets this
global variable to zero on each and every pass through the loop, so the
loop never terminates.