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.