From 1602f267e0f19507ccf67945e36f042cc0a4d5bc Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 25 Aug 2005 12:14:18 +0000 Subject: [PATCH] Set the outbound indicator on candidate dial-on-demand packets. Bug pointed out by Alin Nastac. --- pppd/demand.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) 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) { -- 2.39.2