X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fdemand.c;h=5e57658ea831908e98e7554e23329e51e14918a1;hb=219aac3b53d0827549377f1bfe22853ee52d4405;hp=8bf96d02b7ff700b3ac0294c1e0ff0c4b22d7000;hpb=7977da267649fee17261d0d163a12863f3534b57;p=ppp.git diff --git a/pppd/demand.c b/pppd/demand.c index 8bf96d0..5e57658 100644 --- a/pppd/demand.c +++ b/pppd/demand.c @@ -28,7 +28,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define RCSID "$Id: demand.c,v 1.19 2004/11/04 10:02:26 paulus Exp $" +#define RCSID "$Id: demand.c,v 1.20 2005/08/25 12:14:18 paulus Exp $" #include #include @@ -341,12 +341,15 @@ active_packet(p, len) return 0; proto = PPP_PROTOCOL(p); #ifdef PPP_FILTER - if (pass_filter.bf_len != 0 - && bpf_filter(pass_filter.bf_insns, p, len, len) == 0) - return 0; - if (active_filter.bf_len != 0 - && bpf_filter(active_filter.bf_insns, p, len, len) == 0) + p[0] = 1; /* outbound packet indicator */ + if ((pass_filter.bf_len != 0 + && bpf_filter(pass_filter.bf_insns, p, len, len) == 0) + || (active_filter.bf_len != 0 + && bpf_filter(active_filter.bf_insns, p, len, len) == 0)) { + p[0] = 0xff; return 0; + } + p[0] = 0xff; #endif for (i = 0; (protp = protocols[i]) != NULL; ++i) { if (protp->protocol < 0xC000 && (protp->protocol & ~0x8000) == proto) {