pkgsrc/net/ppp-mppe/patches/patch-ag

148 lines
4.4 KiB
Text

$NetBSD: patch-ag,v 1.1.1.1 1999/10/08 04:34:43 dbj Exp $
Index: pppd/options.c
diff -u pppd/options.c:1.1.1.5 pppd/options.c:1.30
--- pppd/options.c:1.1.1.5 Tue Aug 24 13:25:41 1999
+++ pppd/options.c Tue Aug 24 19:07:44 1999
@@ -108,8 +119,14 @@
struct option_info ptycommand_info;
#ifdef PPP_FILTER
-struct bpf_program pass_filter;/* Filter program for packets to pass */
-struct bpf_program active_filter; /* Filter program for link-active pkts */
+/* Filter program for packets to pass */
+struct bpf_program pass_filter_in;
+struct bpf_program pass_filter_out;
+
+/* Filter program for link-active packets */
+struct bpf_program active_filter_in;
+struct bpf_program active_filter_out;
+
pcap_t pc; /* Fake struct pcap so we can compile expr */
#endif
@@ -136,11 +153,12 @@
static int setlogfile __P((char **));
#ifdef PPP_FILTER
-static int setpassfilter __P((char **));
-static int setactivefilter __P((char **));
+static int setpassfilter_in __P((char **));
+static int setpassfilter_out __P((char **));
+static int setactivefilter_in __P((char **));
+static int setactivefilter_out __P((char **));
#endif
-
static option_t *find_option __P((char *name));
static int process_option __P((option_t *, char **));
static int n_arguments __P((option_t *));
@@ -250,10 +268,14 @@
#ifdef PPP_FILTER
{ "pdebug", o_int, &dflag,
"libpcap debugging" },
- { "pass-filter", 1, setpassfilter,
- "set filter for packets to pass" },
- { "active-filter", 1, setactivefilter,
- "set filter for active pkts" },
+ { "pass-filter-in", 1, setpassfilter_in,
+ "set filter for packets to pass inwards" },
+ { "pass-filter-out", 1, setpassfilter_out,
+ "set filter for packets to pass outwards" },
+ { "active-filter-in", 1, setactivefilter_in,
+ "set filter for active pkts inwards" },
+ { "active-filter-out", 1, setactivefilter_out,
+ "set filter for active pkts outwards" },
#endif
{ NULL }
@@ -274,6 +296,7 @@
auth Require authentication from peer\n\
connect <p> Invoke shell command <p> to set up the serial line\n\
crtscts Use hardware RTS/CTS flow control\n\
+ cdtrcts Use hardware DTR/CTS flow control (if supported)\n\
defaultroute Add default route through interface\n\
file <f> Take options from file <f>\n\
modem Use modem control lines\n\
@@ -1185,44 +1208,68 @@
#ifdef PPP_FILTER
/*
- * setpdebug - Set libpcap debugging level.
+ * setpassfilter_in - Set the incoming pass filter
*/
static int
-setpdebug(argv)
+setpassfilter_in(argv)
char **argv;
{
- return int_option(*argv, &dflag);
+ pc.linktype = DLT_PPP_SERIAL;
+ pc.snapshot = PPP_HDRLEN;
+
+ if (pcap_compile(&pc, &pass_filter_in, *argv, 1, netmask) == 0)
+ return 1;
+ option_error("error in pass-filter-in expression: %s\n", pcap_geterr(&pc));
+ return 0;
}
/*
- * setpassfilter - Set the pass filter for packets
+ * setpassfilter_out - Set the outgoing pass filter
*/
static int
-setpassfilter(argv)
+setpassfilter_out(argv)
char **argv;
{
- pc.linktype = DLT_PPP;
+ pc.linktype = DLT_PPP_SERIAL;
pc.snapshot = PPP_HDRLEN;
- if (pcap_compile(&pc, &pass_filter, *argv, 1, netmask) == 0)
+ if (pcap_compile(&pc, &pass_filter_out, *argv, 1, netmask) == 0)
+ return 1;
+ option_error("error in pass-filter-out expression: %s\n", pcap_geterr(&pc));
+ return 0;
+}
+
+/*
+ * setactivefilter_in - Set the incoming active filter
+ */
+static int
+setactivefilter_in(argv)
+ char **argv;
+{
+ pc.linktype = DLT_PPP_SERIAL;
+ pc.snapshot = PPP_HDRLEN;
+
+ if (pcap_compile(&pc, &active_filter_in, *argv, 1, netmask) == 0)
return 1;
- option_error("error in pass-filter expression: %s\n", pcap_geterr(&pc));
+ option_error("error in active-filter-in expression: %s\n",
+ pcap_geterr(&pc));
return 0;
}
/*
- * setactivefilter - Set the active filter for packets
+ * setactivefilter_out - Set the outgoing active filter
*/
static int
-setactivefilter(argv)
+setactivefilter_out(argv)
char **argv;
{
- pc.linktype = DLT_PPP;
+ pc.linktype = DLT_PPP_SERIAL;
pc.snapshot = PPP_HDRLEN;
- if (pcap_compile(&pc, &active_filter, *argv, 1, netmask) == 0)
+ if (pcap_compile(&pc, &active_filter_out, *argv, 1, netmask) == 0)
return 1;
- option_error("error in active-filter expression: %s\n", pcap_geterr(&pc));
+ option_error("error in active-filter-out expression: %s\n",
+ pcap_geterr(&pc));
return 0;
}
#endif