Ok, I think I found out what's causing this problem.

Function "setactivefilter" in options.c seems to be the problem.

<..>
 int ret = 0;

    pc = pcap_open_dead(DLT_PPP_WITHDIRECTION, 65535);
    if (pcap_compile(pc, &active_filter, *argv, 1, netmask) == -1) {
  option_error("error in active-filter expression: %s\n",
         pcap_geterr(pc));
  ret = 1;
    }
    pcap_close(pc);

    return ret;

This function returns 0 if the filter is correct, but as I understand the code, it should return 1.
Looking at the old code confirms this.


<snippet from 2.4.2>
if (pcap_compile(&pc, &active_filter, *argv, 1, netmask) == 0)
return 1;
option_error("error in active-filter expression: %s\n", pcap_geterr(&pc));
return 0;


Return 1 if the filter parses otherwise throw an error and return 0.

While checking this I also noticed that upstream now seems to expect libpcap0.8 to be installed,
since both the Makefile and sys-linux.c check / try to include pcap-bpf.h which isn't in 0.7.
After fixing setactivefilter I tried to compile it against 0.8. Although the build finished cleanly,
I got the following error on startup


error in active-filter expression: inbound/outbound not supported on linktype 9

Since I didn't want to fix this I changed the "pppd/Makefile" to check for pcap.h instead of pcap-bpf.h and also changed the include in sys-linux.c and demand.c to include <pcap.h> instead of <pcap-bpf.h>.
Now I was able to compile against libpcap0.7


After all those changes...

* Active-filter works
* It compiles against 0.7 again


Hope this helps, Michael



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Reply via email to