summaryrefslogtreecommitdiff
path: root/obsolete-buildroot/sources/openwrt/patches/ppp
diff options
context:
space:
mode:
authorkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-10-17 12:24:08 +0000
committerkaloz <kaloz@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-10-17 12:24:08 +0000
commitbf3eda107c10e5d73c716744bfadaee4b4ab0093 (patch)
tree5be4b26ccd509dcc7c91534d9095a6b0141908ce /obsolete-buildroot/sources/openwrt/patches/ppp
parenta14b6eb9921365d5c2ce4e3f9c7cbc73213770e7 (diff)
removed the old directories, too.. cleanup is ready, yay
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@2130 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'obsolete-buildroot/sources/openwrt/patches/ppp')
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/000_ppp-2.4.2-cvs-20040427.patch3429
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/008_pathnames.h.diff11
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/010_scripts_README.diff20
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/011_scripts_redialer.diff152
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/018_ip-up_option.diff98
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/057_pppoe-interface-change78
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/auth_hook_segfault33
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/cifdefroute.dif283
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/close_devfd17
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds34
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/no_crypt_hack45
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.3.11-oedod.dif172
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.4.2-stripMSdomain35
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/pppdump-no-deflate12
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/setevn_call_file24
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/syslog_local212
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/z01_ppp-2.4.2-openwrt.patch225
-rw-r--r--obsolete-buildroot/sources/openwrt/patches/ppp/z02_ppp-2.4.2-stdopt-mppe-mppc-1.1.patch1608
18 files changed, 0 insertions, 6288 deletions
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/000_ppp-2.4.2-cvs-20040427.patch b/obsolete-buildroot/sources/openwrt/patches/ppp/000_ppp-2.4.2-cvs-20040427.patch
deleted file mode 100644
index 7ccc1b448b..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/000_ppp-2.4.2-cvs-20040427.patch
+++ /dev/null
@@ -1,3429 +0,0 @@
-diff -ruN ppp-2.4.2/TODO ppp-cvs-20040427/TODO
---- ppp-2.4.2/TODO 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/TODO 1999-03-22 07:38:09.000000000 +0100
-@@ -0,0 +1,16 @@
-+* Things to do *
-+
-+- How should we handle the case where MTU > MRU?
-+ Should we reduce the IP MTU to the link MRU (so TCP MSS is correct)?
-+
-+- Provide ways to:
-+ + set the IP address, possibly based on the peer's identity
-+ + have external checking of PAP user/password, CHAP response
-+ + supply the PAP user/password, CHAP secret
-+ + decide which tty to use (locking, DTR issues)
-+
-+- Integrate callback stuff?
-+
-+- Implement link quality monitoring
-+
-+- Implement other network control protocols
-diff -ruN ppp-2.4.2/chat/chat.c ppp-cvs-20040427/chat/chat.c
---- ppp-2.4.2/chat/chat.c 2003-03-30 10:23:48.000000000 +0200
-+++ ppp-cvs-20040427/chat/chat.c 2004-01-17 06:50:11.000000000 +0100
-@@ -87,7 +87,7 @@
- #endif
-
- #ifndef lint
--static const char rcsid[] = "$Id: chat.c,v 1.29 2003/03/04 06:17:21 fcusack Exp $";
-+static const char rcsid[] = "$Id: chat.c,v 1.30 2004/01/17 05:47:55 carlsonj Exp $";
- #endif
-
- #include <stdio.h>
-@@ -213,7 +213,7 @@
- void *copy_of __P((char *s));
- char *grow __P((char *s, char **p, size_t len));
- void usage __P((void));
--void logf __P((const char *fmt, ...));
-+void msgf __P((const char *fmt, ...));
- void fatal __P((int code, const char *fmt, ...));
- SIGTYPE sigalrm __P((int signo));
- SIGTYPE sigint __P((int signo));
-@@ -495,7 +495,7 @@
- /*
- * Send a message to syslog and/or stderr.
- */
--void logf __V((const char *fmt, ...))
-+void msgf __V((const char *fmt, ...))
- {
- va_list args;
-
-@@ -558,7 +558,7 @@
- fatal(2, "Can't set file mode flags on stdin: %m");
-
- if (verbose)
-- logf("alarm");
-+ msgf("alarm");
- }
-
- void unalarm()
-@@ -1001,9 +1001,9 @@
- * The expectation did not occur. This is terminal.
- */
- if (fail_reason)
-- logf("Failed (%s)", fail_reason);
-+ msgf("Failed (%s)", fail_reason);
- else
-- logf("Failed");
-+ msgf("Failed");
- terminate(exit_code);
- }
-
-@@ -1079,7 +1079,7 @@
- abort_string[n_aborts++] = s1;
-
- if (verbose)
-- logf("abort on (%v)", s);
-+ msgf("abort on (%v)", s);
- return;
- }
-
-@@ -1105,7 +1105,7 @@
- pack++;
- n_aborts--;
- if (verbose)
-- logf("clear abort on (%v)", s);
-+ msgf("clear abort on (%v)", s);
- }
- }
- free(s1);
-@@ -1129,7 +1129,7 @@
- report_string[n_reports++] = s1;
-
- if (verbose)
-- logf("report (%v)", s);
-+ msgf("report (%v)", s);
- return;
- }
-
-@@ -1155,7 +1155,7 @@
- pack++;
- n_reports--;
- if (verbose)
-- logf("clear report (%v)", s);
-+ msgf("clear report (%v)", s);
- }
- }
- free(s1);
-@@ -1173,7 +1173,7 @@
- timeout = DEFAULT_CHAT_TIMEOUT;
-
- if (verbose)
-- logf("timeout set to %d seconds", timeout);
-+ msgf("timeout set to %d seconds", timeout);
-
- return;
- }
-@@ -1236,7 +1236,7 @@
- return ((int)c & 0x7F);
-
- default:
-- logf("warning: read() on stdin returned %d", status);
-+ msgf("warning: read() on stdin returned %d", status);
-
- case -1:
- if ((status = fcntl(0, F_GETFL, 0)) == -1)
-@@ -1264,7 +1264,7 @@
- return (0);
-
- default:
-- logf("warning: write() on stdout returned %d", status);
-+ msgf("warning: write() on stdout returned %d", status);
-
- case -1:
- if ((status = fcntl(0, F_GETFL, 0)) == -1)
-@@ -1286,9 +1286,9 @@
-
- if (verbose) {
- if (errno == EINTR || errno == EWOULDBLOCK)
-- logf(" -- write timed out");
-+ msgf(" -- write timed out");
- else
-- logf(" -- write failed: %m");
-+ msgf(" -- write failed: %m");
- }
- return (0);
- }
-@@ -1303,9 +1303,9 @@
-
- if (verbose) {
- if (quiet)
-- logf("send (??????)");
-+ msgf("send (??????)");
- else
-- logf("send (%v)", s);
-+ msgf("send (%v)", s);
- }
-
- alarm(timeout); alarmed = 0;
-@@ -1392,17 +1392,17 @@
- minlen = (len > sizeof(fail_buffer)? len: sizeof(fail_buffer)) - 1;
-
- if (verbose)
-- logf("expect (%v)", string);
-+ msgf("expect (%v)", string);
-
- if (len > STR_LEN) {
-- logf("expect string is too long");
-+ msgf("expect string is too long");
- exit_code = 1;
- return 0;
- }
-
- if (len == 0) {
- if (verbose)
-- logf("got it");
-+ msgf("got it");
- return (1);
- }
-
-@@ -1416,16 +1416,16 @@
- echo_stderr(c);
- if (verbose && c == '\n') {
- if (s == logged)
-- logf(""); /* blank line */
-+ msgf(""); /* blank line */
- else
-- logf("%0.*v", s - logged, logged);
-+ msgf("%0.*v", s - logged, logged);
- logged = s + 1;
- }
-
- *s++ = c;
-
- if (verbose && s >= logged + 80) {
-- logf("%0.*v", s - logged, logged);
-+ msgf("%0.*v", s - logged, logged);
- logged = s;
- }
-
-@@ -1470,8 +1470,8 @@
- strncmp(s - len, string, len) == 0) {
- if (verbose) {
- if (s > logged)
-- logf("%0.*v", s - logged, logged);
-- logf(" -- got it\n");
-+ msgf("%0.*v", s - logged, logged);
-+ msgf(" -- got it\n");
- }
-
- alarm(0);
-@@ -1484,8 +1484,8 @@
- strncmp(s - abort_len, abort_string[n], abort_len) == 0) {
- if (verbose) {
- if (s > logged)
-- logf("%0.*v", s - logged, logged);
-- logf(" -- failed");
-+ msgf("%0.*v", s - logged, logged);
-+ msgf(" -- failed");
- }
-
- alarm(0);
-@@ -1499,7 +1499,7 @@
- if (s >= end) {
- if (logged < s - minlen) {
- if (verbose)
-- logf("%0.*v", s - logged, logged);
-+ msgf("%0.*v", s - logged, logged);
- logged = s;
- }
- s -= minlen;
-@@ -1509,16 +1509,16 @@
- }
-
- if (alarmed && verbose)
-- logf("warning: alarm synchronization problem");
-+ msgf("warning: alarm synchronization problem");
- }
-
- alarm(0);
-
- if (verbose && printed) {
- if (alarmed)
-- logf(" -- read timed out");
-+ msgf(" -- read timed out");
- else
-- logf(" -- read failed: %m");
-+ msgf(" -- read failed: %m");
- }
-
- exit_code = 3;
-diff -ruN ppp-2.4.2/configure ppp-cvs-20040427/configure
---- ppp-2.4.2/configure 2002-11-09 12:24:41.000000000 +0100
-+++ ppp-cvs-20040427/configure 2004-01-17 06:50:11.000000000 +0100
-@@ -1,5 +1,5 @@
- #!/bin/sh
--# $Id: configure,v 1.30 2002/11/02 19:48:12 carlsonj Exp $
-+# $Id: configure,v 1.31 2004/01/17 05:47:55 carlsonj Exp $
-
- # if [ -d /NextApps ]; then
- # system="NeXTStep"
-@@ -27,7 +27,7 @@
- esac;;
- 5.[1-6]*) state="known"; ksrc="solaris"; makext="sol2";;
- esac
-- if [ -x /opt/SUNWspro/bin/cc ] &&
-+ if [ -x /opt/SUNWspro/bin/cc -a "$1" != "gcc" ] &&
- /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
- : # use Sun WorkShop compiler
- elif gcc --version >/dev/null 2>&1; then
-diff -ruN ppp-2.4.2/contrib/pppgetpass/Makefile.linux ppp-cvs-20040427/contrib/pppgetpass/Makefile.linux
---- ppp-2.4.2/contrib/pppgetpass/Makefile.linux 1999-11-15 05:08:24.000000000 +0100
-+++ ppp-cvs-20040427/contrib/pppgetpass/Makefile.linux 1970-01-01 01:00:00.000000000 +0100
-@@ -1,16 +0,0 @@
--all: pppgetpass.vt pppgetpass.gtk
--
--pppgetpass.vt: pppgetpass.vt.o
--
--pppgetpass.gtk: pppgetpass.gtk.o
-- $(CC) $(LDFLAGS) pppgetpass.gtk.o `gtk-config --libs` -o pppgetpass.gtk
--pppgetpass.gtk.o: pppgetpass.gtk.c
-- $(CC) $(CFLAGS) -c pppgetpass.gtk.c `gtk-config --cflags`
--
--install: all
-- install -m 755 pppgetpass.sh /usr/bin/pppgetpass
-- install -m 4755 -o root -g root pppgetpass.vt /usr/bin/
-- install -m 755 -o root -g root pppgetpass.gtk /usr/X11/bin/
--
--clean:
-- rm -f *.o pppgetpass.gtk pppgetpass.vt core
-diff -ruN ppp-2.4.2/contrib/pppgetpass/pppgetpass.8 ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.8
---- ppp-2.4.2/contrib/pppgetpass/pppgetpass.8 1999-11-15 05:08:24.000000000 +0100
-+++ ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.8 1970-01-01 01:00:00.000000000 +0100
-@@ -1,18 +0,0 @@
--.TH PPPGETPASS 8 "26 Sep 1999"
--.SH NAME
--pppgetpass \- prompt for PAP password
--.SH SYNOPSIS
--.B pppgetpass
--.I client server fd
--.SH DESCRIPTION
--.B pppgetpass
--the outer half of a plugin for PAP password prompting in pppd.
--If the peer requires PAP, and the
--.B passprompt.so
--plugin is loaded into pppd, it will run
--.B /usr/sbin/pppgetpass
--(or another program specified by the
--.B promptprog
--option) to prompt the user for the password.
--.SH SEE ALSO
--pppd(8)
-diff -ruN ppp-2.4.2/contrib/pppgetpass/pppgetpass.gtk.c ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.gtk.c
---- ppp-2.4.2/contrib/pppgetpass/pppgetpass.gtk.c 1999-11-15 05:08:24.000000000 +0100
-+++ ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.gtk.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,92 +0,0 @@
--#include <glib.h>
--#include <gdk/gdk.h>
--#include <gtk/gtkwindow.h>
--#include <gtk/gtkmain.h>
--#include <gtk/gtkbutton.h>
--#include <gtk/gtkvbox.h>
--#include <gtk/gtklabel.h>
--#include <gtk/gtkentry.h>
--#include <gtk/gtksignal.h>
--
--#include <stdio.h>
--#include <string.h>
--#include <stdlib.h>
--#include <unistd.h>
--#include <syslog.h>
--
--int outfd;
--int err;
--
--static void okpressed(void *widget, void *clientdata)
--{
-- GtkWidget *answer=clientdata;
-- gchar *pass;
-- int passlen;
-- ssize_t wrote;
-- (void)widget;
--
-- pass=gtk_entry_get_text(GTK_ENTRY(answer));
--
-- passlen=strlen(pass);
-- if(!passlen)
-- return;
--
-- if((wrote=write(outfd, pass, passlen))!=passlen) {
-- if(wrote<0)
-- syslog(LOG_ERR, "write error on outpipe: %m");
-- else
-- syslog(LOG_ERR, "short write on outpipe");
-- err=1;
-- }
-- gtk_main_quit();
--}
--
--int main(int argc, char **argv)
--{
-- GtkWidget *mainwindow, *vbox, *question, *answer, *ok;
-- char buf[1024];
-- gtk_init(&argc, &argv);
--
-- openlog(argv[0], LOG_PID, LOG_DAEMON);
-- if(argc!=4) {
-- syslog(LOG_WARNING, "Usage error");
-- return 1;
-- }
-- outfd=atoi(argv[3]);
-- mainwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
-- gtk_window_set_title(GTK_WINDOW(mainwindow), "pppgetpass");
-- gtk_signal_connect(GTK_OBJECT(mainwindow), "destroy",
-- GTK_SIGNAL_FUNC(gtk_main_quit), 0);
--
-- vbox=gtk_vbox_new(FALSE, 5);
-- gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
-- gtk_widget_show(vbox);
--
-- if(argv[1][0] && argv[2][0])
-- snprintf(buf, sizeof buf, "Password for PPP client %s on server %s: ", argv[1], argv[2]);
-- else if(argv[1][0] && !argv[2][0])
-- snprintf(buf, sizeof buf, "Password for PPP client %s: ", argv[1]);
-- else if(!argv[1][0] && argv[2][0])
-- snprintf(buf, sizeof buf, "Password for PPP on server %s: ", argv[2]);
-- else
-- snprintf(buf, sizeof buf, "Enter PPP password: ");
-- question=gtk_label_new(buf);
-- gtk_box_pack_start(GTK_BOX(vbox), question, FALSE, TRUE, 0);
-- gtk_widget_show(question);
--
-- answer=gtk_entry_new();
-- gtk_entry_set_visibility(GTK_ENTRY(answer), 0);
-- gtk_box_pack_start(GTK_BOX(vbox), answer, FALSE, TRUE, 0);
-- gtk_widget_show(answer);
--
-- ok=gtk_button_new_with_label("OK");
-- gtk_box_pack_start(GTK_BOX(vbox), ok, FALSE, TRUE, 0);
-- gtk_signal_connect(GTK_OBJECT(ok), "clicked",
-- GTK_SIGNAL_FUNC(okpressed), answer);
-- gtk_widget_show(ok);
--
-- gtk_widget_show(mainwindow);
-- gtk_main();
--
-- return err;
--}
-diff -ruN ppp-2.4.2/contrib/pppgetpass/pppgetpass.sh ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.sh
---- ppp-2.4.2/contrib/pppgetpass/pppgetpass.sh 1999-11-15 05:08:24.000000000 +0100
-+++ ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.sh 1970-01-01 01:00:00.000000000 +0100
-@@ -1,7 +0,0 @@
--#!/bin/sh
--
--if [ -z "$DISPLAY" ]; then
-- exec pppgetpass.vt "$@"
--else
-- exec pppgetpass.gtk "$@"
--fi
-diff -ruN ppp-2.4.2/contrib/pppgetpass/pppgetpass.vt.c ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.vt.c
---- ppp-2.4.2/contrib/pppgetpass/pppgetpass.vt.c 1999-11-15 05:08:24.000000000 +0100
-+++ ppp-cvs-20040427/contrib/pppgetpass/pppgetpass.vt.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,218 +0,0 @@
--#include <stdio.h>
--#include <string.h>
--#include <stdlib.h>
--#include <errno.h>
--#include <unistd.h>
--#include <fcntl.h>
--#include <sys/stat.h>
--#include <sys/ioctl.h>
--#include <syslog.h>
--#include <termios.h>
--#include <sys/vt.h>
--
--static int console_owner(uid_t, int);
--
--int main(int argc, char **argv)
--{
-- int console;
-- uid_t uid;
-- struct vt_stat origstate;
-- int openvtnum;
-- char openvtname[256];
-- int openvt;
-- gid_t gid;
-- int chowned;
-- FILE *fp;
-- struct termios t;
-- char pass[256], *nl;
-- int outfd, passlen;
-- ssize_t wrote;
-- console=open("/dev/console", O_RDWR);
--
-- uid=getuid();
-- gid=getgid();
-- seteuid(uid);
--
-- openlog(argv[0], LOG_PID, LOG_DAEMON);
--
-- if(argc!=4) {
-- syslog(LOG_WARNING, "Usage error");
-- return 1;
-- }
--
-- if(console<0) {
-- syslog(LOG_ERR, "open(/dev/console): %m");
-- return 1;
-- }
--
-- if(ioctl(console, VT_GETSTATE, &origstate)<0) {
-- syslog(LOG_ERR, "VT_GETSTATE: %m");
-- return 1;
-- }
--
-- if(uid) {
-- if(!console_owner(uid, origstate.v_active)) {
-- int i;
-- for(i=0;i<64;++i) {
-- if(i!=origstate.v_active && console_owner(uid, i))
-- break;
-- }
-- if(i==64) {
-- syslog(LOG_WARNING, "run by uid %lu not at console", (unsigned long)uid);
-- return 1;
-- }
-- }
-- }
--
-- if(ioctl(console, VT_OPENQRY, &openvtnum)<0) {
-- syslog(LOG_ERR, "VT_OPENQRY: %m");
-- return 1;
-- }
-- if(openvtnum==-1) {
-- syslog(LOG_ERR, "No free VTs");
-- return 1;
-- }
--
-- snprintf(openvtname, sizeof openvtname, "/dev/tty%d", openvtnum);
-- seteuid(0);
-- openvt=open(openvtname, O_RDWR);
-- if(openvt<0) {
-- seteuid(uid);
-- syslog(LOG_ERR, "open(%s): %m", openvtname);
-- return 1;
-- }
--
-- chowned=fchown(openvt, uid, gid);
-- if(chowned<0) {
-- seteuid(uid);
-- syslog(LOG_ERR, "fchown(%s): %m", openvtname);
-- return 1;
-- }
--
-- close(console);
--
-- if(ioctl(openvt, VT_ACTIVATE, openvtnum)<0) {
-- seteuid(uid);
-- syslog(LOG_ERR, "VT_ACTIVATE(%d): %m", openvtnum);
-- return 1;
-- }
--
-- while(ioctl(openvt, VT_WAITACTIVE, openvtnum)<0) {
-- if(errno!=EINTR) {
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "VT_WAITACTIVE(%d): %m", openvtnum);
-- return 1;
-- }
-- }
--
-- seteuid(uid);
-- fp=fdopen(openvt, "r+");
-- if(!fp) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "fdopen(%s): %m", openvtname);
-- return 1;
-- }
--
-- if(tcgetattr(openvt, &t)<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "tcgetattr(%s): %m", openvtname);
-- return 1;
-- }
-- t.c_lflag &= ~ECHO;
-- if(tcsetattr(openvt, TCSANOW, &t)<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "tcsetattr(%s): %m", openvtname);
-- return 1;
-- }
--
-- if(fprintf(fp, "\033[2J\033[H")<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "write error on %s: %m", openvtname);
-- return 1;
-- }
-- if(argv[1][0] && argv[2][0]) {
-- if(fprintf(fp, "Password for PPP client %s on server %s: ", argv[1], argv[2])<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "write error on %s: %m", openvtname);
-- return 1;
-- }
-- } else if(argv[1][0] && !argv[2][0]) {
-- if(fprintf(fp, "Password for PPP client %s: ", argv[1])<0) {
-- syslog(LOG_ERR, "write error on %s: %m", openvtname);
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- return 1;
-- }
-- } else if(!argv[1][0] && argv[2][0]) {
-- if(fprintf(fp, "Password for PPP on server %s: ", argv[2])<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "write error on %s: %m", openvtname);
-- return 1;
-- }
-- } else {
-- if(fprintf(fp, "Enter PPP password: ")<0) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- syslog(LOG_ERR, "write error on %s: %m", openvtname);
-- return 1;
-- }
-- }
--
-- if(!fgets(pass, sizeof pass, fp)) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- if(ferror(fp)) {
-- syslog(LOG_ERR, "read error on %s: %m", openvtname);
-- }
-- return 1;
-- }
-- if((nl=strchr(pass, '\n')))
-- *nl=0;
-- passlen=strlen(pass);
--
-- outfd=atoi(argv[3]);
-- if((wrote=write(outfd, pass, passlen))!=passlen) {
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- if(wrote<0)
-- syslog(LOG_ERR, "write error on outpipe: %m");
-- else
-- syslog(LOG_ERR, "short write on outpipe");
-- return 1;
-- }
--
-- seteuid(0);
-- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
-- seteuid(uid);
-- return 0;
--}
--
--static int console_owner(uid_t uid, int cons)
--{
-- char name[256];
-- struct stat st;
-- snprintf(name, sizeof name, "/dev/tty%d", cons);
-- if(stat(name, &st)<0) {
-- if(errno!=ENOENT)
-- syslog(LOG_ERR, "stat(%s): %m", name);
-- return 0;
-- }
-- return uid==st.st_uid;
--}
-diff -ruN ppp-2.4.2/include/linux/if_ether.h ppp-cvs-20040427/include/linux/if_ether.h
---- ppp-2.4.2/include/linux/if_ether.h 2001-05-21 05:31:50.000000000 +0200
-+++ ppp-cvs-20040427/include/linux/if_ether.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,99 +0,0 @@
--/*
-- * INET An implementation of the TCP/IP protocol suite for the LINUX
-- * operating system. INET is implemented using the BSD Socket
-- * interface as the means of communication with the user level.
-- *
-- * Global definitions for the Ethernet IEEE 802.3 interface.
-- *
-- * Version: @(#)if_ether.h 1.0.1a 02/08/94
-- *
-- * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
-- * Donald Becker, <becker@super.org>
-- * Alan Cox, <alan@redhat.com>
-- * Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
-- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public License
-- * as published by the Free Software Foundation; either version
-- * 2 of the License, or (at your option) any later version.
-- */
--
--#ifndef _LINUX_IF_ETHER_H
--#define _LINUX_IF_ETHER_H
--
--/*
-- * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
-- * and FCS/CRC (frame check sequence).
-- */
--
--#define ETH_ALEN 6 /* Octets in one ethernet addr */
--#define ETH_HLEN 14 /* Total octets in header. */
--#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */
--#define ETH_DATA_LEN 1500 /* Max. octets in payload */
--#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
--
--/*
-- * These are the defined Ethernet Protocol ID's.
-- */
--
--#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */
--#define ETH_P_PUP 0x0200 /* Xerox PUP packet */
--#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */
--#define ETH_P_IP 0x0800 /* Internet Protocol packet */
--#define ETH_P_X25 0x0805 /* CCITT X.25 */
--#define ETH_P_ARP 0x0806 /* Address Resolution packet */
--#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */
--#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */
--#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */
--#define ETH_P_DEC 0x6000 /* DEC Assigned proto */
--#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */
--#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */
--#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */
--#define ETH_P_LAT 0x6004 /* DEC LAT */
--#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */
--#define ETH_P_CUST 0x6006 /* DEC Customer use */
--#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */
--#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */
--#define ETH_P_ATALK 0x809B /* Appletalk DDP */
--#define ETH_P_AARP 0x80F3 /* Appletalk AARP */
--#define ETH_P_IPX 0x8137 /* IPX over DIX */
--#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */
--#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */
--#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */
--#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */
--#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport
-- * over Ethernet
-- */
--
--/*
-- * Non DIX types. Won't clash for 1500 types.
-- */
--
--#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */
--#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */
--#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */
--#define ETH_P_802_2 0x0004 /* 802.2 frames */
--#define ETH_P_SNAP 0x0005 /* Internal only */
--#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */
--#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/
--#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */
--#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */
--#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/
--#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */
--#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */
--#define ETH_P_CONTROL 0x0016 /* Card specific control frames */
--#define ETH_P_IRDA 0x0017 /* Linux-IrDA */
--#define ETH_P_ECONET 0x0018 /* Acorn Econet */
--
--/*
-- * This is an Ethernet frame header.
-- */
--
--struct ethhdr
--{
-- unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
-- unsigned char h_source[ETH_ALEN]; /* source ether addr */
-- unsigned short h_proto; /* packet type ID field */
--};
--
--#endif /* _LINUX_IF_ETHER_H */
-diff -ruN ppp-2.4.2/include/pcap-int.h ppp-cvs-20040427/include/pcap-int.h
---- ppp-2.4.2/include/pcap-int.h 2000-08-01 03:37:24.000000000 +0200
-+++ ppp-cvs-20040427/include/pcap-int.h 2000-08-01 03:37:24.000000000 +0200
-@@ -30,7 +30,7 @@
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
-- * @(#) $Header: /data/cvs/ppp/include/pcap-int.h,v 1.1 2000/08/01 01:37:24 paulus Exp $ (LBL)
-+ * @(#) $Header: /cvsroot/ppp/include/pcap-int.h,v 1.1 2000/08/01 01:37:24 paulus Exp $ (LBL)
- */
-
- #ifndef pcap_int_h
-diff -ruN ppp-2.4.2/modules/bsd-comp.c ppp-cvs-20040427/modules/bsd-comp.c
---- ppp-2.4.2/modules/bsd-comp.c 1998-03-19 06:59:01.000000000 +0100
-+++ ppp-cvs-20040427/modules/bsd-comp.c 2004-01-17 06:50:11.000000000 +0100
-@@ -41,7 +41,7 @@
- * This version is for use with STREAMS under SunOS 4.x,
- * Digital UNIX, AIX 4.x, and SVR4 systems including Solaris 2.
- *
-- * $Id: bsd-comp.c,v 1.20 1996/08/28 06:31:57 paulus Exp $
-+ * $Id: bsd-comp.c,v 1.21 2004/01/17 05:47:55 carlsonj Exp $
- */
-
- #ifdef AIX4
-@@ -66,6 +66,10 @@
- #define BSD_LITTLE_ENDIAN
- #endif
-
-+#ifdef SOL2
-+#include <sys/sunddi.h>
-+#endif
-+
- #define PACKETPTR mblk_t *
- #include <net/ppp-comp.h>
-
-diff -ruN ppp-2.4.2/modules/deflate.c ppp-cvs-20040427/modules/deflate.c
---- ppp-2.4.2/modules/deflate.c 2002-12-06 10:49:15.000000000 +0100
-+++ ppp-cvs-20040427/modules/deflate.c 2004-01-17 06:50:11.000000000 +0100
-@@ -35,7 +35,7 @@
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
-- * $Id: deflate.c,v 1.11 2002/12/06 09:49:15 paulus Exp $
-+ * $Id: deflate.c,v 1.12 2004/01/17 05:47:55 carlsonj Exp $
- */
-
- #ifdef AIX4
-@@ -56,6 +56,10 @@
- #include "../common/zlib.h"
- #endif
-
-+#ifdef SOL2
-+#include <sys/sunddi.h>
-+#endif
-+
- #if DO_DEFLATE
-
- #define DEFLATE_DEBUG 1
-diff -ruN ppp-2.4.2/modules/vjcompress.c ppp-cvs-20040427/modules/vjcompress.c
---- ppp-2.4.2/modules/vjcompress.c 1999-09-17 04:03:56.000000000 +0200
-+++ ppp-cvs-20040427/modules/vjcompress.c 2004-01-17 06:50:11.000000000 +0100
-@@ -29,7 +29,7 @@
- * This version is used under SunOS 4.x, Digital UNIX, AIX 4.x,
- * and SVR4 systems including Solaris 2.
- *
-- * $Id: vjcompress.c,v 1.10 1999/09/15 23:49:06 masputra Exp $
-+ * $Id: vjcompress.c,v 1.11 2004/01/17 05:47:55 carlsonj Exp $
- */
-
- #include <sys/types.h>
-@@ -56,6 +56,10 @@
- #include <netinet/in_systm.h>
- #endif
-
-+#ifdef SOL2
-+#include <sys/sunddi.h>
-+#endif
-+
- #include <netinet/ip.h>
- #include <netinet/tcp.h>
-
-diff -ruN ppp-2.4.2/ppp.texi ppp-cvs-20040427/ppp.texi
---- ppp-2.4.2/ppp.texi 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/ppp.texi 1996-08-28 08:30:33.000000000 +0200
-@@ -0,0 +1,561 @@
-+\input texinfo @c -*-texinfo-*-
-+@setfilename ppp.info
-+@settitle PPP
-+
-+@iftex
-+@finalout
-+@end iftex
-+
-+@ifinfo
-+@format
-+START-INFO-DIR-ENTRY
-+* PPP: (ppp). Point-to-Point Protocol.
-+END-INFO-DIR-ENTRY
-+@end format
-+
-+@titlepage
-+@title PPP-2.x Users' Guide
-+@author by Paul Mackerras
-+@end titlepage
-+
-+@node Top, Introduction, (dir), (dir)
-+
-+@ifinfo
-+This file documents how to use the ppp-2.x package to set up network
-+links over serial lines with the Point-to-Point Protocol.
-+
-+@end ifinfo
-+
-+@menu
-+* Introduction:: Basic concepts of the Point-to-Point
-+ Protocol and the ppp-2.x package.
-+* Installation:: How to compile and install the software.
-+* Configuration:: How to set up your system for
-+ establishing a link to another system.
-+* Security:: Avoid creating security holes.
-+* Compression:: Using compression of various kinds
-+ to improve throughput.
-+@end menu
-+
-+@node Introduction, Installation, Top, Top
-+@chapter Introduction
-+
-+The Point-to-Point Protocol (PPP) is the protocol of choice for
-+establishing network links over serial lines. This package (ppp-2.x)
-+provides an implementation of PPP which supports the Internet Protocols
-+(TCP/IP, UDP/IP, etc.) and which runs on a range of Unix workstations.
-+
-+A typical use of PPP is to provide a network connection, via a modem,
-+between a workstation and an Internet Service Provider (ISP). When this
-+connection is established, the workstation is connected to the internet,
-+and applications running on the workstation can then make connections to
-+other hosts anywhere on the internet. This package can be used at
-+either or both ends of such a link.
-+
-+Features of PPP include:
-+@itemize @bullet
-+@item
-+Multi-protocol support. The PPP packet encapsulation includes a
-+protocol field, allowing packets from many different protocols to be
-+multiplexed across a single link.
-+@item
-+Negotiation of link characteristics. During link establishment, the two
-+systems negotiate about the link configuration parameters, such as the
-+IP addresses of each end of the link.
-+@item
-+Authentication. Optionally, each system can be configured to require the
-+other system to authenticate itself. In this way, access can be
-+restricted to authorized systems.
-+@item
-+Transparency. On asynchronous serial lines, PPP can be configured to
-+transmit certain characters as a two-character escape sequence.
-+@item
-+Compression. PPP includes support for various kinds of compression to
-+be applied to the packets before they are transmitted.
-+@end itemize
-+
-+The ppp-2.x software consists of two parts:
-+
-+@itemize @bullet
-+
-+@item
-+Kernel code, which establishes a network interface and passes packets
-+between the serial port, the kernel networking code and the PPP daemon
-+(@file{pppd}). This code is implemented using STREAMS modules on
-+Solaris 2, SunOS 4.x, AIX 4.1 and OSF/1, and as a tty line discipline
-+under Ultrix, NextStep, NetBSD, FreeBSD, and Linux.
-+
-+@item
-+The PPP daemon (@file{pppd}), which negotiates with the peer to
-+establish the link and sets up the ppp network interface. Pppd includes
-+support for authentication. It can authenticate itself to the other
-+system and/or require the other system to authenticate itself, so that
-+you can control which other systems may make a PPP connection and what
-+IP addresses they may use.
-+@end itemize
-+
-+@menu
-+* PPP Concepts:: Basic concepts and terms used with PPP.
-+* PPP packet format:: How data is packaged up for transmission.
-+* LCP negotiation:: The parameters which are negotiated
-+ using the Link Control Protocol.
-+* IPCP negotiation:: The parameters which are negotiated
-+ using the IP Control Protocol.
-+@end menu
-+
-+@node PPP Concepts, PPP packet format, Introduction, Introduction
-+@section PPP Concepts
-+
-+To use PPP to provide a network connection between two machines, there
-+must be some way that a stream of bytes, or characters, can be passed
-+from one to the other, in both directions independently. We refer to
-+this as the ``serial link''. Very often the serial link involves
-+asynchronous communications ports and modems, but other kinds of serial
-+link are possible.
-+
-+The serial link must transmit (at least) 8 bits per character; PPP
-+cannot work over a serial link which transmits only 7 bits per
-+character. However, it need not transmit all byte values transparently.
-+PPP has a mechanism to avoid sending certain characters if it is known
-+that the some element of the serial link interprets them specially. For
-+example, the DC1 and DC3 ASCII characters (control-Q and control-S) may
-+be trapped by a modem if it is set for ``software'' flow control. PPP
-+can send these characters as a two-character ``escape'' sequence. The
-+set of characters which are to be transmitted as an escape sequence is
-+represented in an ``async control character map'' (ACCM). The ``async''
-+part refers to the fact that this facility is used for asynchronous
-+serial links. For synchronous serial connections, the HDLC bit-stuffing
-+procedure is used instead.
-+
-+The two systems connected by the serial link are called ``peers''. When
-+we are talking from the point of view of one of the systems, the other
-+is often referred to as ``the peer''. Sometimes we may refer to one
-+system as a ``client'' and the other as a ``server''. This distinction
-+refers mainly to the way the serial link is set up; usually the client
-+is the peer that initiates the connection, for example by dialling the
-+server with its modem.
-+
-+During the lifetime of a PPP connection, it proceeds through several
-+phases:
-+
-+@enumerate
-+@item
-+Serial link establishment. In this phase, the serial link is set up and
-+PPP protocol software is attached to each end of the serial link. The
-+precise steps involved in doing this vary greatly, depending on the
-+nature of the serial link. For the common case of modems connected
-+through the telephone network, this involves first sending commands to
-+the modem to cause it to dial the remote system. When the remote system
-+answers, the local system usually has to supply a username and password,
-+and then issue a command to invoke PPP software on the remote system.
-+The ``chat'' program supplied with ppp-2.x provides a way to automate a
-+dialog with the modem and the remote system. This phase is not
-+standardized; it is outside the scope of the PPP protocol
-+specifications.
-+
-+@item
-+Link Control Protocol (LCP) negotiation. In this phase, the peers send
-+LCP packets to each other to negotiate various parameters of the
-+connection, such as the ACCM to be used in each direction, whether
-+authentication is required, and whether or not to use various forms of
-+compression. When the peers reach agreement on these parameters, LCP is
-+said to be ``up''.
-+
-+@item
-+Authentication. If one (or both) of the peers requires the other
-+peer to authenticate itself, that occurs next. If one of the peers
-+cannot successfully authenticate itself, the other peer terminates the
-+link.
-+
-+@item
-+Network Control Protocol (NCP) negotiation. PPP can potentially support
-+several different network protocols, although IP is the only network
-+protocol (NP) supported by the ppp-2.x package. Each NP has an
-+associated NCP defined for it, which is used to negotiate the specific
-+parameters which affect that NP. For example, the IP Control Protocol
-+(IPCP) is used to negotiate the IP addresses for each end of the link,
-+and whether the TCP header compression method described by Van Jacobsen
-+in RFC 1144 (``VJ compression'') is to be used.
-+
-+@item
-+Network communication. When each NCP has successfully negotiated the
-+parameters for its NP, that NCP is said to be ``up''. At that point,
-+the PPP link is made available for data traffic from that NP. For
-+example, when IPCP comes up, the PPP link is then available for carrying
-+IP packets (which of course includes packets from those protocols which
-+are layered above IP, such as TCP, UDP, etc.)
-+
-+@item
-+Termination. When the link is no longer required, it is terminated.
-+Usually this involves an exchange of LCP packets so that one peer can
-+notify the other that it is shutting down the link, enabling both peers
-+to shut down in an orderly manner. But of course there are occasions
-+when the link terminates because the serial link is interrupted, for
-+example, when a modem loses carrier and hangs up.
-+
-+@end enumerate
-+
-+The protocols in the PPP family are produced by the Point-to-Point
-+Working Group of the Internet Engineering Task Force, and are specified
-+in RFC (Request for Comments) documents, available by anonymous FTP from
-+several sites.
-+
-+PPP is defined in several RFCs, in
-+particular RFCs 1661, 1662, and 1334. IPCP is defined in RFC 1332.
-+Other RFCs describe the control protocols for other network protocols
-+(e.g., DECnet, OSI, Appletalk). RFCs are available by anonymous FTP
-+from several sites including nic.ddn.mil, nnsc.nsf.net, nic.nordu.net,
-+ftp.nisc.sri.com, and munnari.oz.au.
-+
-+@node PPP packet format, LCP negotiation, PPP Concepts, Introduction
-+@section PPP packet format
-+
-+PPP transmits packets over the serial link using a simple encapsulation
-+scheme. First, a two-byte PPP Protocol field is inserted before the
-+data to be sent. The value in this field identifies
-+which higher-level protocol (either a network protocol such as IP or a
-+PPP control protocol such as LCP) should receive the data in the packet.
-+By default, a one-byte Address field with the value 0xFF, and a one-byte
-+Control field with the value 0x03, are inserted before the PPP Protocol
-+field (apparently this is supposed to provide compatibility with HDLC,
-+in case there is a synchronous to asynchronous converter in the serial
-+link).
-+
-+On slow serial links, these fields can be compressed down to one byte in
-+most cases. The PPP Address and Control fields are compressed by simply
-+omitting them (``address/control compression''). The PPP Protocol field
-+values are chosen so that bit 0 (the least-significant bit) of the first
-+(most significant) byte is always 0, and bit 0 of the second byte is
-+always 1. The PPP Protocol field can be compressed by omitting the
-+first byte, provided that it is 0 (``protocol compression''). The
-+values for this field are assigned so that the first byte is zero for
-+all of the commonly-used network protocols. For example, the PPP
-+Protocol field value for IP is 0x21.
-+
-+For asynchronous serial links, which do not provide any packet framing
-+or transparency, a further encapsulation is used as follows. First a
-+16-bit Frame Check Sequence (FCS) is computed over the packet to be
-+sent, and appended as two bytes to the end of the packet.
-+
-+Then each byte of the packet is examined, and if it contains one of the
-+characters which are to be escaped, it is replaced by a two byte
-+sequence: the 0x7d character '}', followed by the character with bit 5
-+inverted. For example, the control-C character (0x03) could be replaced
-+by the two-byte sequence 0x7d, 0x23 ('}#'). The 0x7d and 0x7e ('~')
-+characters are always escaped, and the 0x5e ('^') character may not be
-+escaped.
-+
-+Finally, a ``flag'' character (0x7e, '~') is inserted at the beginning
-+and end of the packet to mark the packet boundaries. The initial flag
-+may be omitted if this packet immediately follows another packet, as the
-+ending flag for the previous packet can serve as the beginning flag of
-+this packet.
-+
-+@node LCP negotiation, IPCP negotiation, PPP packet format, Introduction
-+@section LCP negotiation
-+
-+The LCP negotiation process actually involves two sets of negotiations,
-+one for each direction of the PPP connection. Thus A will send B
-+packets (``Configure-Requests'') describing what characteristics A would
-+like to have apply to the B -> A direction of the link, that is, to the
-+packets that A will receive. Similarly B will send A packets describing
-+the characteristics it would like to have apply to the packets it will
-+be receiving. These characteristics need not necessarily be the same in
-+both directions.
-+
-+The parameters which are negotiated for each direction of the connection
-+using LCP are:
-+
-+@itemize @bullet
-+@item
-+Maximum Receive Unit (MRU): indicates the maximum packet size which we
-+are prepared to receive (specifically the maximum size of the
-+data portion of the packet). The default value is 1500, but on
-+slow serial links, smaller values give better response. The choice of
-+MRU is discussed below (see xxx).
-+
-+@item
-+Async Control Character Map (ACCM): indicates the set of control
-+characters (characters with ASCII values in the range 0 - 31) which we
-+wish to receive in escaped form. The default is that the sender should
-+escape all characters in the range 0 - 31.
-+
-+@item
-+Authentication Protocol: indicates which protocol we would like the peer
-+to use to authenticate itself. Common choices are the Password
-+Authentication Protocol (PAP) and the Cryptographic Handshake
-+Authentication Protocol (CHAP).
-+
-+@item
-+Quality Protocol: indicates which protocol which we would like the peer
-+to use to send us link quality reports. The ppp-2.x package does not
-+currently support link quality reports.
-+
-+@item
-+Magic Number: a randomly-chosen number, different from the peer's magic
-+number. If we persistently receive our own magic number in the peer's
-+configure-request packets, then we can conclude that the serial link is
-+looped back.
-+
-+@item
-+Protocol Field Compression: indicates that we wish the peer to compress
-+the PPP Protocol field to one byte, where possible, in the packets it
-+sends.
-+
-+@item
-+Address/Control Field Compression: indicates that we wish the peer to
-+compress the PPP Address/Control fields (by simply omitting them) in the
-+packets it sends.
-+@end itemize
-+
-+@node IPCP negotiation, , LCP negotiation, Introduction
-+@section IPCP negotiation
-+
-+The IPCP negotiation process is very similar to the LCP negotiation
-+process, except that of course different parameters are negotiated.
-+The parameters which are negotiated using IPCP are:
-+
-+@itemize @bullet
-+@item
-+IP Address: the IP address (32-bit host IP number) which we plan to use
-+as the local address for our end of the link.
-+
-+@item
-+TCP header compression: indicates (a) that we wish the peer to compress
-+the TCP/IP headers of TCP/IP packets that it sends, using the Van
-+Jacobson algorithm as described in RFC1144; (b) the maximum slot ID that
-+we wish the peer to use, and (c) whether we are prepared to accept
-+packets with the slot ID field compressed (omitted).
-+
-+With Van Jacobson (VJ) compression, the receiver and transmitter (for
-+one direction of the connection) both keep a table, with a certain
-+number of ``slots'', where each slot holds the TCP/IP header of the most
-+recently transmitted packet for one TCP connection. If a packet is to
-+be transmitted for a TCP connection which does not have a slot currently
-+allocated, the VJ scheme will allocate one of the slots and send the
-+entire TCP/IP header, together with the slot number. For many packets,
-+there will be a slot already allocated for the TCP connection, and the
-+VJ scheme will then often be able to replace the entire TCP/IP header
-+with a much smaller compressed header (typically only 3 - 7 bytes)
-+describing which fields of the TCP/IP header have changed, and by how
-+much. If there are many more active connections than slots, the
-+efficiency of the VJ scheme will drop, because it will not be able to
-+send compressed headers as often.
-+
-+Usually the compressed header includes a one-byte slot index, indicating
-+which TCP connection the packet is for. It is possible to reduce the
-+header size by omitting the slot index when the packet has the same slot
-+index as the previous packet. However, this introduces a danger if the
-+lower levels of the PPP software can sometimes drop damaged packets
-+without informing the VJ decompressor, as it may then assume the wrong
-+slot index for packets which have the slot index field omitted. With
-+the ppp-2.x software, however, the probability of this happening is
-+generally very small (see xxx).
-+
-+@end itemize
-+
-+@node Installation, Configuration, Introduction, Top
-+@chapter Installation
-+
-+Because ppp-2.x includes code which must be incorporated into the
-+kernel, its installation process is necessarily quite heavily
-+system-dependent. In addition, you will require super-user privileges
-+(root access) to install the code.
-+
-+Some systems provide a ``modload'' facility, which allows you to load
-+new code into a running kernel without relinking the kernel or
-+rebooting. Under Solaris 2, SunOS 4.x, Linux, OSF/1 and NextStep, this
-+is the recommended (or only) way to install the kernel portion of the
-+ppp-2.x package.
-+
-+Under the remaining supported operating systems (NetBSD, FreeBSD,
-+Ultrix), it is necessary to go through the process of creating a new
-+kernel image and reboot. (Note that NetBSD and FreeBSD have a modload
-+facility, but ppp-2.x is currently not configured to take advantage of
-+it.)
-+
-+Detailed installation instructions for each operating system are
-+contained in the README files in the ppp-2.x distribution. In general,
-+the process involves executing the commands @samp{./configure},
-+@samp{make} and (as root) @samp{make install} in the ppp-2.x
-+distribution directory. (The Linux port requires the installation of
-+some header files before compiling; see README.linux for details.)
-+
-+@node Configuration, Security, Installation, Top
-+@chapter Configuration
-+
-+Once the ppp-2.x software is installed, you need to configure your
-+system for the particular PPP connections you wish to allow. Typically,
-+the elements you need to configure are:
-+
-+@itemize @bullet
-+@item
-+How the serial link is established and how pppd gets invoked.
-+@item
-+Setting up syslog to log messages from pppd to the console and/or
-+system log files.
-+@item
-+Pppd options to be used.
-+@item
-+Authentication secrets to use in authenticating us to the peer
-+and/or the peer to us.
-+@item
-+The IP addresses for each end of the link.
-+@end itemize
-+
-+In most cases, the system you are configuring will either be a
-+@dfn{client} system, actively initiating a PPP connection on user
-+request, or it will be a @dfn{server} system, passively waiting for
-+connections from client systems. Other arrangements are possible, but
-+the instructions in this system assume that you are configuring either a
-+client or a server.
-+
-+These instructions also assume that the serial link involves a serial
-+communications port (that is, a tty device), since pppd requires a
-+serial port.
-+
-+@menu
-+* Client machines::
-+* Server machines::
-+* Setting up syslog::
-+* Pppd options::
-+* Authentication secrets files::
-+* IP Addresses::
-+@end menu
-+
-+@node Client machines, Server machines, Configuration, Configuration
-+@section Client machines
-+
-+On a client machine, the way that the user requests that a connection be
-+established is by running pppd, either directly or through a shell
-+script. Pppd should be given the name of the serial port to use as an
-+option. In this mode, pppd will fork and detach itself from its
-+controlling terminal, so that the shell will return to its prompt. (If
-+this behaviour is not desired, use the -detach option.)
-+
-+Usually, the connect option should also be used. The connect option
-+takes an argument which is a command to run to establish the serial link
-+and invoke PPP software on the remote machine. This command is run with
-+its standard input and standard output connected to the serial port.
-+Giving the connect option to pppd also has the side-effect of causing
-+pppd to open the serial port without waiting for the modem carrier
-+detect signal.
-+
-+The process of establishing the serial link often involves a dialog. If
-+the serial port is connected to a modem, we first need to send some
-+commands to the modem to configure it and dial the remote system. Often
-+there is then a dialog with the remote system to supply a username and
-+password. The @file{chat} program supplied with the ppp-2.x package is
-+useful for automating such dialogs. Chat uses a @dfn{script} consisting
-+of alternately strings to expect to receive on the serial port, and
-+strings to send on the serial port. The script can also specify strings
-+which indicate an error and abort the dialog.
-+
-+@node Server machines, , Client machines, Configuration
-+@section Server machines
-+
-+There are generally three ways in which a server machine can be set up
-+to allow client machines to establish a PPP link:
-+
-+@enumerate
-+@item
-+Client machines log in as regular users (often via a serial port
-+connected to a modem, but possibly through a telnet or rlogin session)
-+and then run pppd as a shell command.
-+@item
-+Client machines log in using a username whose login shell is pppd
-+or a script which runs pppd.
-+@item
-+Client machines connect to a serial port which has a pppd running
-+permanently on it (instead of a "getty" or other program providing a
-+login service).
-+@end enumerate
-+
-+Method 1 is very simple to set up, and is useful where existing users of
-+a system have remote machines (for example at home) from which they want
-+to establish a PPP connection from time to time. Methods 2 and 3
-+possibly have a security advantage in that they do not allow PPP client
-+systems access to a shell. Method 2 allows regular logins and PPP
-+connections on the same port, while with method 3, would-be crackers may
-+well be frustrated (unless they speak fluent PPP).
-+
-+With any of these methods, I strongly recommend that you configure PPP
-+to require authentication from the client, by including the `auth'
-+option in the /etc/ppp/options file.
-+
-+@node Setting up syslog, , Server machines, Configuration
-+@section Setting up syslog
-+
-+Pppd uses the @file{syslog} facility to report information about the
-+state of the connection, as does @file{chat}. It is useful to set up
-+syslog to print some of these messages on the console, and to record
-+most of them to a file. The messages from pppd are logged with facility
-+@samp{daemon} and one of three levels:
-+@itemize @bullet
-+@item
-+@samp{notice} for messages about important events such as the
-+connection becoming available for IP traffic and the local and remote IP
-+addresses in use.
-+@item
-+@samp{info} for messages about less important events, such as
-+detecting a modem hangup.
-+@item
-+@samp{debug} for messages which are of use in working out why the
-+connection is not working properly.
-+@end itemize
-+
-+The messages from chat are logged with facility @samp{local2} and level
-+@samp{debug}.
-+
-+Syslog is controlled by the syslog configuration file
-+@file{/etc/syslog.conf}. Generally the standard configuration will log
-+facility @samp{daemon} messages with level @samp{notice} and above to a
-+system log file such as @file{/var/log/syslog} (the name may vary on
-+different systems). I find it useful to have the notice level messages
-+from pppd displayed on the console, and all messages from pppd and chat
-+logged to a file such as @file{/etc/ppp/log}. To achieve this,
-+find the line in /etc/syslog.conf which has /dev/console
-+on the right-hand side, and add `daemon.notice' on the left. This
-+line should end up something like this:
-+
-+@example
-+*.err;kern.debug;auth.notice;mail.crit;daemon.notice /dev/console
-+@end example
-+
-+And add a line like this:
-+
-+@example
-+daemon,local2.debug /etc/ppp/log
-+@end example
-+
-+The space between the left and right hand sides is one or more tabs, not
-+spaces, and there are no tabs or spaces at the beginning of the line.
-+
-+You will need to create an empty @file{/etc/ppp/log} file; syslogd will
-+not create it. Once you have modified @file{/etc/syslog.conf}, you need
-+to either reboot or notify syslogd to re-read the file. On most
-+systems, you notify syslogd by sending it a SIGHUP signal. Syslogd's
-+process ID is usually stored in a file such as @file{/etc/syslogd.pid}
-+or @file{/var/run/syslog.pid}. Thus you can notify syslogd to re-read
-+the file by executing a command such as:
-+
-+@example
-+kill -HUP `cat /etc/syslogd.pid`
-+@end example
-+
-+@node Pppd options, , Setting up syslog, Configuration
-+@section Pppd options
-+
-+@node Authentication secrets files, , Pppd options, Configuration
-+@section Authentication secrets files
-+
-+@node IP Addresses, , Authentication secrets files, Configuration
-+@section IP Addresses
-+
-+@node Security, Compression, Configuration, Top
-+@chapter Security
-+
-+@node Compression, , Security, Top
-+@chapter Compression
-+
-+@bye
-diff -ruN ppp-2.4.2/pppd/Makefile.sol2 ppp-cvs-20040427/pppd/Makefile.sol2
---- ppp-2.4.2/pppd/Makefile.sol2 2003-11-27 22:25:25.000000000 +0100
-+++ ppp-cvs-20040427/pppd/Makefile.sol2 2002-11-02 20:50:09.000000000 +0100
-@@ -1,6 +1,6 @@
- #
- # Makefile for pppd under Solaris 2.
--# $Id: Makefile.sol2,v 1.24 2003/11/27 21:25:25 paulus Exp $
-+# $Id: Makefile.sol2,v 1.23 2002/11/02 19:48:12 carlsonj Exp $
- #
-
- include ../Makedefs.com
-@@ -8,8 +8,8 @@
- CFLAGS = -I../include -DSVR4 -DSOL2 $(COPTS)
- LIBS = -lsocket -lnsl
-
--OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o eap.o md5.o \
-- tty.o ccp.o ecp.o auth.o options.o demand.o utils.o sys-solaris.o
-+OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o eap.o md5.o tty.o \
-+ ccp.o ecp.o auth.o options.o demand.o utils.o sys-solaris.o
-
- #
- # uncomment the following to enable plugins
-diff -ruN ppp-2.4.2/pppd/Makefile.sunos4 ppp-cvs-20040427/pppd/Makefile.sunos4
---- ppp-2.4.2/pppd/Makefile.sunos4 2003-11-27 22:25:25.000000000 +0100
-+++ ppp-cvs-20040427/pppd/Makefile.sunos4 2002-11-02 20:50:09.000000000 +0100
-@@ -1,6 +1,6 @@
- #
- # Makefile for pppd under SunOS 4.
--# $Id: Makefile.sunos4,v 1.14 2003/11/27 21:25:25 paulus Exp $
-+# $Id: Makefile.sunos4,v 1.13 2002/11/02 19:48:12 carlsonj Exp $
- #
-
- include ../sunos4/Makedefs
-@@ -12,7 +12,7 @@
-
- all: pppd
-
--OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o md5.o ccp.o ecp.o \
-+OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o ecp.o \
- auth.o options.o demand.o utils.o sys-sunos4.o tty.o eap.o
-
- pppd: $(OBJS)
-diff -ruN ppp-2.4.2/pppd/chap-new.c ppp-cvs-20040427/pppd/chap-new.c
---- ppp-2.4.2/pppd/chap-new.c 2003-11-27 23:22:36.000000000 +0100
-+++ ppp-cvs-20040427/pppd/chap-new.c 2004-01-17 06:50:11.000000000 +0100
-@@ -33,7 +33,7 @@
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
--#define RCSID "$Id: chap-new.c,v 1.3 2003/11/27 22:22:36 paulus Exp $"
-+#define RCSID "$Id: chap-new.c,v 1.4 2004/01/17 05:47:55 carlsonj Exp $"
-
- #include <stdlib.h>
- #include <string.h>
-@@ -49,7 +49,7 @@
- int (*chap_verify_hook)(char *name, char *ourname, int id,
- struct chap_digest_type *digest,
- unsigned char *challenge, unsigned char *response,
-- unsigned char *message, int message_space) = NULL;
-+ char *message, int message_space) = NULL;
-
- /*
- * Option variables.
-@@ -119,7 +119,7 @@
- static int chap_verify_response(char *name, char *ourname, int id,
- struct chap_digest_type *digest,
- unsigned char *challenge, unsigned char *response,
-- unsigned char *message, int message_space);
-+ char *message, int message_space);
- static void chap_respond(struct chap_client_state *cs, int id,
- unsigned char *pkt, int len);
- static void chap_handle_status(struct chap_client_state *cs, int code, int id,
-@@ -306,11 +306,11 @@
- {
- int response_len, ok, mlen;
- unsigned char *response, *p;
-- unsigned char *name = NULL; /* initialized to shut gcc up */
-+ char *name = NULL; /* initialized to shut gcc up */
- int (*verifier)(char *, char *, int, struct chap_digest_type *,
-- unsigned char *, unsigned char *, unsigned char *, int);
-+ unsigned char *, unsigned char *, char *, int);
- char rname[MAXNAMELEN+1];
-- unsigned char message[256];
-+ char message[256];
-
- if ((ss->flags & LOWERUP) == 0)
- return;
-@@ -322,7 +322,7 @@
- response = pkt;
- GETCHAR(response_len, pkt);
- len -= response_len + 1; /* length of name */
-- name = pkt + response_len;
-+ name = (char *)pkt + response_len;
- if (len < 0)
- return;
-
-@@ -391,14 +391,14 @@
- chap_verify_response(char *name, char *ourname, int id,
- struct chap_digest_type *digest,
- unsigned char *challenge, unsigned char *response,
-- unsigned char *message, int message_space)
-+ char *message, int message_space)
- {
- int ok;
-- char secret[MAXSECRETLEN];
-+ unsigned char secret[MAXSECRETLEN];
- int secret_len;
-
- /* Get the secret that the peer is supposed to know */
-- if (!get_secret(0, name, ourname, secret, &secret_len, 1)) {
-+ if (!get_secret(0, name, ourname, (char *)secret, &secret_len, 1)) {
- error("No CHAP secret found for authenticating %q", name);
- return 0;
- }
-diff -ruN ppp-2.4.2/pppd/chap-new.h ppp-cvs-20040427/pppd/chap-new.h
---- ppp-2.4.2/pppd/chap-new.h 2003-06-11 14:47:31.000000000 +0200
-+++ ppp-cvs-20040427/pppd/chap-new.h 2004-01-17 06:50:12.000000000 +0100
-@@ -123,7 +123,7 @@
- extern int (*chap_verify_hook)(char *name, char *ourname, int id,
- struct chap_digest_type *digest,
- unsigned char *challenge, unsigned char *response,
-- unsigned char *message, int message_space);
-+ char *message, int message_space);
-
- /* Called by digest code to register a digest type */
- extern void chap_register_digest(struct chap_digest_type *);
-diff -ruN ppp-2.4.2/pppd/chap_ms.c ppp-cvs-20040427/pppd/chap_ms.c
---- ppp-2.4.2/pppd/chap_ms.c 2003-11-18 11:42:56.000000000 +0100
-+++ ppp-cvs-20040427/pppd/chap_ms.c 2004-04-14 04:40:21.000000000 +0200
-@@ -74,7 +74,7 @@
- *
- */
-
--#define RCSID "$Id: chap_ms.c,v 1.30 2003/07/10 17:59:33 fcusack Exp $"
-+#define RCSID "$Id: chap_ms.c,v 1.31 2004/04/14 02:39:39 carlsonj Exp $"
-
- #ifdef CHAPMS
-
-@@ -164,9 +164,11 @@
- chapms_generate_challenge(unsigned char *challenge)
- {
- *challenge++ = 8;
-+#ifdef DEBUGMPPEKEY
- if (mschap_challenge && strlen(mschap_challenge) == 8)
- memcpy(challenge, mschap_challenge, 8);
- else
-+#endif
- random_bytes(challenge, 8);
- }
-
-@@ -174,9 +176,11 @@
- chapms2_generate_challenge(unsigned char *challenge)
- {
- *challenge++ = 16;
-+#ifdef DEBUGMPPEKEY
- if (mschap_challenge && strlen(mschap_challenge) == 16)
- memcpy(challenge, mschap_challenge, 16);
- else
-+#endif
- random_bytes(challenge, 16);
- }
-
-@@ -207,7 +211,7 @@
- #endif
-
- /* Generate the expected response. */
-- ChapMS(challenge, secret, secret_len, &md);
-+ ChapMS(challenge, (char *)secret, secret_len, &md);
-
- #ifdef MSLANMAN
- /* Determine which part of response to verify against */
-@@ -250,8 +254,8 @@
-
- /* Generate the expected response and our mutual auth. */
- ChapMS2(challenge, rmd->PeerChallenge, name,
-- secret, secret_len, &md,
-- saresponse, MS_CHAP2_AUTHENTICATOR);
-+ (char *)secret, secret_len, &md,
-+ (unsigned char *)saresponse, MS_CHAP2_AUTHENTICATOR);
-
- /* compare MDs and send the appropriate status */
- /*
-@@ -326,8 +330,13 @@
- {
- challenge++; /* skip length, should be 16 */
- *response++ = MS_CHAP2_RESPONSE_LEN;
-- ChapMS2(challenge, mschap2_peer_challenge, our_name,
-- secret, secret_len,
-+ ChapMS2(challenge,
-+#ifdef DEBUGMPPEKEY
-+ mschap2_peer_challenge,
-+#else
-+ NULL,
-+#endif
-+ our_name, secret, secret_len,
- (MS_Chap2Response *) response, private,
- MS_CHAP2_AUTHENTICATEE);
- }
-@@ -335,7 +344,8 @@
- static int
- chapms2_check_success(unsigned char *msg, int len, unsigned char *private)
- {
-- if ((len < MS_AUTH_RESPONSE_LENGTH + 2) || strncmp(msg, "S=", 2)) {
-+ if ((len < MS_AUTH_RESPONSE_LENGTH + 2) ||
-+ strncmp((char *)msg, "S=", 2) != 0) {
- /* Packet does not start with "S=" */
- error("MS-CHAPv2 Success packet is badly formed.");
- return 0;
-@@ -351,7 +361,7 @@
- /* Authenticator Response matches. */
- msg += MS_AUTH_RESPONSE_LENGTH; /* Eat it */
- len -= MS_AUTH_RESPONSE_LENGTH;
-- if ((len >= 3) && !strncmp(msg, " M=", 3)) {
-+ if ((len >= 3) && !strncmp((char *)msg, " M=", 3)) {
- msg += 3; /* Eat the delimiter */
- } else if (len) {
- /* Packet has extra text which does not begin " M=" */
-@@ -477,7 +487,7 @@
- SHA1_Init(&sha1Context);
- SHA1_Update(&sha1Context, PeerChallenge, 16);
- SHA1_Update(&sha1Context, rchallenge, 16);
-- SHA1_Update(&sha1Context, user, strlen(user));
-+ SHA1_Update(&sha1Context, (unsigned char *)user, strlen(user));
- SHA1_Final(sha1Hash, &sha1Context);
-
- BCOPY(sha1Hash, Challenge, 8);
-@@ -512,7 +522,7 @@
- MD4_CTX md4Context;
-
- MD4Init(&md4Context);
-- MD4Update(&md4Context, secret, mdlen);
-+ MD4Update(&md4Context, (unsigned char *)secret, mdlen);
- MD4Final(hash, &md4Context);
-
- }
-@@ -526,7 +536,7 @@
-
- /* Hash the Unicode version of the secret (== password). */
- ascii2unicode(secret, secret_len, unicodePassword);
-- NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
-+ NTPasswordHash((char *)unicodePassword, secret_len * 2, PasswordHash);
-
- ChallengeResponse(rchallenge, PasswordHash, NTResponse);
- }
-@@ -539,11 +549,12 @@
- u_char PasswordHash[MD4_SIGNATURE_SIZE];
- u_char Challenge[8];
-
-- ChallengeHash(PeerChallenge, rchallenge, username, Challenge);
-+ ChallengeHash(PeerChallenge, (unsigned char *)rchallenge, username,
-+ Challenge);
-
- /* Hash the Unicode version of the secret (== password). */
- ascii2unicode(secret, secret_len, unicodePassword);
-- NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
-+ NTPasswordHash((char *)unicodePassword, secret_len * 2, PasswordHash);
-
- ChallengeResponse(Challenge, PasswordHash, NTResponse);
- }
-@@ -603,8 +614,9 @@
-
- /* Hash (x2) the Unicode version of the secret (== password). */
- ascii2unicode(secret, secret_len, unicodePassword);
-- NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
-- NTPasswordHash(PasswordHash, sizeof(PasswordHash), PasswordHashHash);
-+ NTPasswordHash((char *)unicodePassword, secret_len * 2, PasswordHash);
-+ NTPasswordHash((char *)PasswordHash, sizeof(PasswordHash),
-+ PasswordHashHash);
-
- SHA1_Init(&sha1Context);
- SHA1_Update(&sha1Context, PasswordHashHash, sizeof(PasswordHashHash));
-@@ -622,7 +634,7 @@
-
- /* Convert to ASCII hex string. */
- for (i = 0; i < MAX((MS_AUTH_RESPONSE_LENGTH / 2), sizeof(Digest)); i++)
-- sprintf(&authResponse[i * 2], "%02X", Digest[i]);
-+ sprintf((char *)&authResponse[i * 2], "%02X", Digest[i]);
- }
-
-
-@@ -825,7 +837,7 @@
- sizeof(response->PeerChallenge));
-
- /* Generate the NT-Response */
-- ChapMS2_NT(rchallenge, response->PeerChallenge, user,
-+ ChapMS2_NT((char *)rchallenge, response->PeerChallenge, user,
- secret, secret_len, response->NTResp);
-
- /* Generate the Authenticator Response. */
-diff -ruN ppp-2.4.2/pppd/fsm.c ppp-cvs-20040427/pppd/fsm.c
---- ppp-2.4.2/pppd/fsm.c 2003-06-29 12:06:14.000000000 +0200
-+++ ppp-cvs-20040427/pppd/fsm.c 2004-02-02 05:00:11.000000000 +0100
-@@ -40,7 +40,7 @@
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
--#define RCSID "$Id: fsm.c,v 1.20 2003/06/29 10:06:14 paulus Exp $"
-+#define RCSID "$Id: fsm.c,v 1.22 2004/02/02 03:57:19 carlsonj Exp $"
-
- /*
- * TODO:
-@@ -201,6 +201,44 @@
- }
- }
-
-+/*
-+ * terminate_layer - Start process of shutting down the FSM
-+ *
-+ * Cancel any timeout running, notify upper layers we're done, and
-+ * send a terminate-request message as configured.
-+ */
-+static void
-+terminate_layer(f, nextstate)
-+ fsm *f;
-+ int nextstate;
-+{
-+ if( f->state != OPENED )
-+ UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
-+ else if( f->callbacks->down )
-+ (*f->callbacks->down)(f); /* Inform upper layers we're down */
-+
-+ /* Init restart counter and send Terminate-Request */
-+ f->retransmits = f->maxtermtransmits;
-+ fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
-+ (u_char *) f->term_reason, f->term_reason_len);
-+
-+ if (f->retransmits == 0) {
-+ /*
-+ * User asked for no terminate requests at all; just close it.
-+ * We've already fired off one Terminate-Request just to be nice
-+ * to the peer, but we're not going to wait for a reply.
-+ */
-+ f->state = nextstate == CLOSING ? CLOSED : STOPPED;
-+ if( f->callbacks->finished )
-+ (*f->callbacks->finished)(f);
-+ return;
-+ }
-+
-+ TIMEOUT(fsm_timeout, f, f->timeouttime);
-+ --f->retransmits;
-+
-+ f->state = nextstate;
-+}
-
- /*
- * fsm_close - Start closing connection.
-@@ -230,19 +268,7 @@
- case ACKRCVD:
- case ACKSENT:
- case OPENED:
-- if( f->state != OPENED )
-- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
-- else if( f->callbacks->down )
-- (*f->callbacks->down)(f); /* Inform upper layers we're down */
--
-- /* Init restart counter, send Terminate-Request */
-- f->retransmits = f->maxtermtransmits;
-- fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
-- (u_char *) f->term_reason, f->term_reason_len);
-- TIMEOUT(fsm_timeout, f, f->timeouttime);
-- --f->retransmits;
--
-- f->state = CLOSING;
-+ terminate_layer(f, CLOSING);
- break;
- }
- }
-@@ -689,17 +715,7 @@
- break;
-
- case OPENED:
-- if( f->callbacks->down )
-- (*f->callbacks->down)(f);
--
-- /* Init restart counter, send Terminate-Request */
-- f->retransmits = f->maxtermtransmits;
-- fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
-- (u_char *) f->term_reason, f->term_reason_len);
-- TIMEOUT(fsm_timeout, f, f->timeouttime);
-- --f->retransmits;
--
-- f->state = STOPPING;
-+ terminate_layer(f, STOPPING);
- break;
-
- default:
-diff -ruN ppp-2.4.2/pppd/main.c ppp-cvs-20040427/pppd/main.c
---- ppp-2.4.2/pppd/main.c 2004-01-13 05:00:34.000000000 +0100
-+++ ppp-cvs-20040427/pppd/main.c 2004-04-12 13:25:19.000000000 +0200
-@@ -40,7 +40,7 @@
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
--#define RCSID "$Id: main.c,v 1.131 2004/01/13 04:00:34 paulus Exp $"
-+#define RCSID "$Id: main.c,v 1.136 2004/04/12 11:20:19 paulus Exp $"
-
- #include <stdio.h>
- #include <ctype.h>
-@@ -150,6 +150,7 @@
- int got_sigterm;
- int got_sighup;
-
-+static sigset_t signals_handled;
- static int waiting;
- static sigjmp_buf sigjmp;
-
-@@ -648,16 +649,15 @@
- handle_events()
- {
- struct timeval timo;
-- sigset_t mask;
-
- kill_link = open_ccp_flag = 0;
- if (sigsetjmp(sigjmp, 1) == 0) {
-- sigprocmask(SIG_BLOCK, &mask, NULL);
-+ sigprocmask(SIG_BLOCK, &signals_handled, NULL);
- if (got_sighup || got_sigterm || got_sigusr2 || got_sigchld) {
-- sigprocmask(SIG_UNBLOCK, &mask, NULL);
-+ sigprocmask(SIG_UNBLOCK, &signals_handled, NULL);
- } else {
- waiting = 1;
-- sigprocmask(SIG_UNBLOCK, &mask, NULL);
-+ sigprocmask(SIG_UNBLOCK, &signals_handled, NULL);
- wait_input(timeleft(&timo));
- }
- }
-@@ -692,19 +692,18 @@
- setup_signals()
- {
- struct sigaction sa;
-- sigset_t mask;
-
- /*
- * Compute mask of all interesting signals and install signal handlers
- * for each. Only one signal handler may be active at a time. Therefore,
- * all other signals should be masked when any handler is executing.
- */
-- sigemptyset(&mask);
-- sigaddset(&mask, SIGHUP);
-- sigaddset(&mask, SIGINT);
-- sigaddset(&mask, SIGTERM);
-- sigaddset(&mask, SIGCHLD);
-- sigaddset(&mask, SIGUSR2);
-+ sigemptyset(&signals_handled);
-+ sigaddset(&signals_handled, SIGHUP);
-+ sigaddset(&signals_handled, SIGINT);
-+ sigaddset(&signals_handled, SIGTERM);
-+ sigaddset(&signals_handled, SIGCHLD);
-+ sigaddset(&signals_handled, SIGUSR2);
-
- #define SIGNAL(s, handler) do { \
- sa.sa_handler = handler; \
-@@ -712,7 +711,7 @@
- fatal("Couldn't establish signal handler (%d): %m", s); \
- } while (0)
-
-- sa.sa_mask = mask;
-+ sa.sa_mask = signals_handled;
- sa.sa_flags = 0;
- SIGNAL(SIGHUP, hup); /* Hangup */
- SIGNAL(SIGINT, term); /* Interrupt */
-@@ -1173,6 +1172,7 @@
- info("Connect time %d.%d minutes.", t/10, t%10);
- info("Sent %u bytes, received %u bytes.",
- link_stats.bytes_out, link_stats.bytes_in);
-+ link_stats_valid = 0;
- }
- }
-
-@@ -1329,6 +1329,7 @@
-
- /*
- * kill_my_pg - send a signal to our process group, and ignore it ourselves.
-+ * We assume that sig is currently blocked.
- */
- static void
- kill_my_pg(sig)
-@@ -1336,10 +1337,22 @@
- {
- struct sigaction act, oldact;
-
-+ sigemptyset(&act.sa_mask); /* unnecessary in fact */
- act.sa_handler = SIG_IGN;
- act.sa_flags = 0;
-- sigaction(sig, &act, &oldact);
- kill(0, sig);
-+ /*
-+ * The kill() above made the signal pending for us, as well as
-+ * the rest of our process group, but we don't want it delivered
-+ * to us. It is blocked at the moment. Setting it to be ignored
-+ * will cause the pending signal to be discarded. If we did the
-+ * kill() after setting the signal to be ignored, it is unspecified
-+ * (by POSIX) whether the signal is immediately discarded or left
-+ * pending, and in fact Linux would leave it pending, and so it
-+ * would be delivered after the current signal handler exits,
-+ * leading to an infinite loop.
-+ */
-+ sigaction(sig, &act, &oldact);
- sigaction(sig, &oldact, NULL);
- }
-
-diff -ruN ppp-2.4.2/pppd/plugins/Makefile ppp-cvs-20040427/pppd/plugins/Makefile
---- ppp-2.4.2/pppd/plugins/Makefile 2004-01-13 04:56:24.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,38 +0,0 @@
--CC = gcc
--COPTS = -O2 -g
--CFLAGS = $(COPTS) -I.. -I../../include -fPIC
--LDFLAGS = -shared
--INSTALL = install -o root
--
--SUBDIRS := rp-pppoe
--# Uncomment the next line to include the radius authentication plugin
--# SUBDIRS += radius
--PLUGINS := minconn.so passprompt.so passwordfd.so
--
--# include dependencies if present
--ifeq (.depend,$(wildcard .depend))
--include .depend
--endif
--
--all: $(PLUGINS)
-- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done
--
--%.so: %.c
-- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^
--
--VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../patchlevel.h)
--LIBDIR = $(DESTDIR)/usr/lib/pppd/$(VERSION)
--
--install: $(PLUGINS)
-- $(INSTALL) -d $(LIBDIR)
-- $(INSTALL) $? $(LIBDIR)
-- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d INSTALL=$(INSTALL) \
-- LIBDIR=$(LIBDIR) install; done
--
--clean:
-- rm -f *.o *.so *.a
-- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean; done
--
--depend:
-- $(CPP) -M $(CFLAGS) *.c >.depend
-- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend; done
-diff -ruN ppp-2.4.2/pppd/plugins/radius/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/CVS/Entries 2002-12-04 22:49:09.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,7 +0,0 @@
--/pppd-radattr.8/1.1/Tue Jan 22 16:03:00 2002//
--/pppd-radius.8/1.4/Tue Apr 2 13:55:00 2002//
--/radattr.c/1.1/Tue Jan 22 16:03:00 2002//
--D/radiusclient////
--/Makefile.linux/1.5/Sat Nov 9 11:24:42 2002//
--/radrealms.c/1.1/Sat Oct 5 04:35:24 2002//
--/radius.c/1.18/Wed Dec 4 21:49:09 2002//
-diff -ruN ppp-2.4.2/pppd/plugins/radius/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/CVS/Repository 2002-09-07 12:37:51.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius
-diff -ruN ppp-2.4.2/pppd/plugins/radius/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/CVS/Root 2002-09-07 12:37:51.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/Makefile ppp-cvs-20040427/pppd/plugins/radius/Makefile
---- ppp-2.4.2/pppd/plugins/radius/Makefile 2002-11-09 12:24:42.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,74 +0,0 @@
--# Makefile for RADIUS plugin
--#
--# Copyright 2002 Roaring Penguin Software Inc.
--#
--
--MANDIR=/usr/man
--PLUGIN=radius.so radattr.so radrealms.so
--CFLAGS=-I../.. -I../../../include -Iradiusclient/include -O2
--
--# Uncomment the next line to include support for Microsoft's
--# MS-CHAP authentication protocol.
--CHAPMS=y
--# Uncomment the next line to include support for MPPE.
--MPPE=y
--# Uncomment the next lint to include support for traffic limiting
--MAXOCTETS=y
--
--ifdef CHAPMS
--CFLAGS += -DCHAPMS=1
--ifdef MPPE
--CFLAGS += -DMPPE=1
--endif
--endif
--ifdef MAXOCTETS
--CFLAGS += -DMAXOCTETS=1
--endif
--
--all: $(PLUGIN)
--
--install: all
-- $(MAKE) $(MFLAGS) -C radiusclient install
-- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR)
-- $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR)/man8
-- $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)/man8
--
--radius.so: radiusclient/lib/.libs/libradiusclient.a radius.o
-- gcc -o radius.so -shared radius.o radiusclient/lib/.libs/libradiusclient.a
--
--radattr.so: radattr.o
-- gcc -o radattr.so -shared radattr.o
--
--radrealms.so: radrealms.o
-- gcc -o radrealms.so -shared radrealms.o
--
--radius.o: radius.c
-- gcc $(CFLAGS) -c -o radius.o -fPIC radius.c
--
--radattr.o: radattr.c
-- gcc $(CFLAGS) -c -o radattr.o -fPIC radattr.c
--
--radrealms.o: radrealms.c
-- gcc $(CFLAGS) -c -o radrealms.o -fPIC radrealms.c
--
--radiusclient/lib/.libs/libradiusclient.a:
-- test -r radiusclient/Makefile || \
-- (cd radiusclient; \
-- ./configure --prefix=/usr \
-- --sysconfdir=/etc \
-- --enable-shared \
-- --enable-static)
-- $(MAKE) -C radiusclient
--
--clean:
-- $(MAKE) $(MFLAGS) -C radiusclient clean
-- rm -f *.o *.so
--
--distclean:
-- rm -f *.o *.so
-- $(MAKE) $(MFLAGS) -C radiusclient distclean
--
--dist-clean: distclean
-diff -ruN ppp-2.4.2/pppd/plugins/radius/pppd-radius.8 ppp-cvs-20040427/pppd/plugins/radius/pppd-radius.8
---- ppp-2.4.2/pppd/plugins/radius/pppd-radius.8 2002-04-02 15:55:00.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/pppd-radius.8 2004-03-26 14:30:16.000000000 +0100
-@@ -1,5 +1,5 @@
- .\" manual page [] for RADIUS plugin for pppd 2.4
--.\" $Id: pppd-radius.8,v 1.4 2002/04/02 13:55:00 dfs Exp $
-+.\" $Id: pppd-radius.8,v 1.5 2004/03/26 13:27:17 kad Exp $
- .\" SH section heading
- .\" SS subsection heading
- .\" LP paragraph
-@@ -40,6 +40,15 @@
- used, then the plugin uses
- .I /etc/radiusclient/radiusclient.conf
- as the configuration file.
-+.TP
-+.BI "avpair " attribute=value
-+Adds an Attribute-Value pair to be passed on to the RADIUS server on each request.
-+.TP
-+.BI map-to-ifname
-+Sets Radius NAS-Port attribute to number equal to interface name (Default)
-+.TP
-+.BI map-to-ttyname
-+Sets Radius NAS-Port attribute value via libradiusclient library
-
- .SH USAGE
- To use the plugin, simply supply the
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radius.c ppp-cvs-20040427/pppd/plugins/radius/radius.c
---- ppp-2.4.2/pppd/plugins/radius/radius.c 2004-01-13 03:26:11.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/radius.c 2004-04-12 07:20:16.000000000 +0200
-@@ -24,7 +24,7 @@
- *
- ***********************************************************************/
- static char const RCSID[] =
--"$Id: radius.c,v 1.22 2004/01/11 08:01:30 paulus Exp $";
-+"$Id: radius.c,v 1.25 2004/04/12 05:16:37 kad Exp $";
-
- #include "pppd.h"
- #include "chap-new.h"
-@@ -52,10 +52,15 @@
- char *vpstr;
- struct avpopt *next;
- } *avpopt = NULL;
-+static bool portnummap = 0;
-
- static option_t Options[] = {
- { "radius-config-file", o_string, &config_file },
- { "avpair", o_special, add_avp },
-+ { "map-to-ttyname", o_bool, &portnummap,
-+ "Set Radius NAS-Port attribute value via libradiusclient library", OPT_PRIO | 1 },
-+ { "map-to-ifname", o_bool, &portnummap,
-+ "Set Radius NAS-Port attribute to number as in interface name (Default)", OPT_PRIOSUB | 0 },
- { NULL }
- };
-
-@@ -264,7 +269,7 @@
-
- /* Hack... the "port" is the ppp interface number. Should really be
- the tty */
-- rstate.client_port = get_client_port(ifname);
-+ rstate.client_port = get_client_port(portnummap ? devnam : ifname);
-
- av_type = PW_FRAMED;
- rc_avpair_add(&send, PW_SERVICE_TYPE, &av_type, 0, VENDOR_NONE);
-@@ -363,7 +368,7 @@
- /* Put user with potentially realm added in rstate.user */
- if (!rstate.done_chap_once) {
- make_username_realm(user);
-- rstate.client_port = get_client_port (ifname);
-+ rstate.client_port = get_client_port (portnummap ? devnam : ifname);
- if (radius_pre_auth_hook) {
- radius_pre_auth_hook(rstate.user,
- &rstate.authserver,
-@@ -881,7 +886,7 @@
- rc_avpair_add(&send, PW_ACCT_AUTHENTIC, &av_type, 0, VENDOR_NONE);
-
-
-- av_type = PW_ASYNC;
-+ av_type = ( using_pty ? PW_VIRTUAL : ( sync_serial ? PW_SYNC : PW_ASYNC ) );
- rc_avpair_add(&send, PW_NAS_PORT_TYPE, &av_type, 0, VENDOR_NONE);
-
- hisaddr = ho->hisaddr;
-@@ -981,9 +986,56 @@
- remote_number, 0, VENDOR_NONE);
- }
-
-- av_type = PW_ASYNC;
-+ av_type = ( using_pty ? PW_VIRTUAL : ( sync_serial ? PW_SYNC : PW_ASYNC ) );
- rc_avpair_add(&send, PW_NAS_PORT_TYPE, &av_type, 0, VENDOR_NONE);
-
-+ av_type = PW_NAS_ERROR;
-+ switch( status ) {
-+ case EXIT_OK:
-+ case EXIT_USER_REQUEST:
-+ av_type = PW_USER_REQUEST;
-+ break;
-+
-+ case EXIT_HANGUP:
-+ case EXIT_PEER_DEAD:
-+ case EXIT_CONNECT_FAILED:
-+ av_type = PW_LOST_CARRIER;
-+ break;
-+
-+ case EXIT_INIT_FAILED:
-+ case EXIT_OPEN_FAILED:
-+ case EXIT_LOCK_FAILED:
-+ case EXIT_PTYCMD_FAILED:
-+ av_type = PW_PORT_ERROR;
-+ break;
-+
-+ case EXIT_PEER_AUTH_FAILED:
-+ case EXIT_AUTH_TOPEER_FAILED:
-+ case EXIT_NEGOTIATION_FAILED:
-+ case EXIT_CNID_AUTH_FAILED:
-+ av_type = PW_SERVICE_UNAVAILABLE;
-+ break;
-+
-+ case EXIT_IDLE_TIMEOUT:
-+ av_type = PW_ACCT_IDLE_TIMEOUT;
-+ break;
-+
-+ case EXIT_CONNECT_TIME:
-+ av_type = PW_ACCT_SESSION_TIMEOUT;
-+ break;
-+
-+#ifdef MAXOCTETS
-+ case EXIT_TRAFFIC_LIMIT:
-+ av_type = PW_NAS_REQUEST;
-+ break;
-+#endif
-+
-+ default:
-+ av_type = PW_NAS_ERROR;
-+ break;
-+ }
-+ rc_avpair_add(&send, PW_ACCT_TERMINATE_CAUSE, &av_type, 0, VENDOR_NONE);
-+
- hisaddr = ho->hisaddr;
- av_type = htonl(hisaddr);
- rc_avpair_add(&send, PW_FRAMED_IP_ADDRESS , &av_type , 0, VENDOR_NONE);
-@@ -1077,7 +1129,7 @@
- remote_number, 0, VENDOR_NONE);
- }
-
-- av_type = PW_ASYNC;
-+ av_type = ( using_pty ? PW_VIRTUAL : ( sync_serial ? PW_SYNC : PW_ASYNC ) );
- rc_avpair_add(&send, PW_NAS_PORT_TYPE, &av_type, 0, VENDOR_NONE);
-
- hisaddr = ho->hisaddr;
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Entries 2002-09-07 12:37:54.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,28 +0,0 @@
--/BUGS/1.1/Tue Jan 22 16:03:00 2002//
--/CHANGES/1.1/Tue Jan 22 16:03:00 2002//
--/COPYRIGHT/1.1/Tue Jan 22 16:03:00 2002//
--/Makefile.am/1.1/Tue Jan 22 16:03:00 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:00 2002//
--/README/1.1/Tue Jan 22 16:03:00 2002//
--/README.radexample/1.1/Tue Jan 22 16:03:00 2002//
--/acconfig.h/1.1/Tue Jan 22 16:03:00 2002//
--/aclocal.m4/1.2/Mon Jun 24 12:57:15 2002//
--/config.guess/1.1/Tue Jan 22 16:03:00 2002//
--/config.h.in/1.3/Thu Jul 25 16:29:16 2002//
--/config.sub/1.1/Tue Jan 22 16:03:00 2002//
--/configure/1.1/Tue Jan 22 16:03:00 2002//
--/configure.in/1.1/Tue Jan 22 16:03:00 2002//
--/install-sh/1.1/Tue Jan 22 16:03:00 2002//
--/ltconfig/1.1/Tue Jan 22 16:03:00 2002//
--/ltmain.sh/1.1/Tue Jan 22 16:03:00 2002//
--/missing/1.1/Tue Jan 22 16:03:00 2002//
--/mkinstalldirs/1.1/Tue Jan 22 16:03:00 2002//
--/stamp-h.in/1.1/Tue Jan 22 16:03:00 2002//
--D/doc////
--D/etc////
--D/include////
--D/lib////
--D/login.radius////
--D/man////
--D/patches////
--D/src////
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Repository 2002-09-07 12:37:51.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/CVS/Root 2002-09-07 12:37:51.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Entries 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,4 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:01 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:01 2002//
--/instop.html/1.1/Tue Jan 22 16:03:01 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Repository 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/doc
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/doc/CVS/Root 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/doc/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Entries 2002-11-09 12:24:42.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,13 +0,0 @@
--/dictionary.ascend/1.1/Tue Jan 22 16:03:01 2002//
--/dictionary.compat/1.1/Tue Jan 22 16:03:01 2002//
--/dictionary.merit/1.1/Tue Jan 22 16:03:01 2002//
--/dictionary.microsoft/1.1/Wed Mar 6 13:23:09 2002//
--/issue/1.1/Tue Jan 22 16:03:01 2002//
--/port-id-map/1.1/Tue Jan 22 16:03:01 2002//
--/servers/1.1/Tue Jan 22 16:03:01 2002//
--/Makefile.am/1.4/Sat Nov 9 11:24:42 2002//
--/Makefile.in/1.5/Sat Nov 9 11:24:42 2002//
--/dictionary/1.9/Sat Nov 9 11:24:42 2002//
--/radiusclient.conf.in/1.2/Sat Nov 9 11:24:42 2002//
--/realms/1.1/Sat Oct 5 04:35:24 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Repository 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/etc
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/etc/CVS/Root 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/etc/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Entries 2002-12-04 22:49:09.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,7 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:01 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:01 2002//
--/includes.h/1.2/Wed Feb 27 15:51:19 2002//
--/messages.h/1.2/Wed Feb 27 15:51:19 2002//
--/pathnames.h/1.2/Wed Feb 27 15:51:19 2002//
--/radiusclient.h/1.9/Wed Dec 4 21:49:09 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Repository 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/include
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/include/CVS/Root 2002-09-07 12:37:52.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/include/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Entries 2002-12-04 22:49:09.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,20 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:02 2002//
--/Makefile.in/1.2/Wed Feb 20 02:22:35 2002//
--/clientid.c/1.2/Wed Feb 27 15:51:20 2002//
--/dict.c/1.2/Tue Mar 5 15:14:06 2002//
--/env.c/1.2/Wed Feb 27 15:51:20 2002//
--/ip_util.c/1.2/Wed Feb 27 15:51:20 2002//
--/lock.c/1.2/Wed Feb 27 15:51:20 2002//
--/log.c/1.2/Wed Feb 27 15:51:20 2002//
--/md5.c/1.2/Wed Feb 27 15:51:20 2002//
--/memcmp.c/1.2/Wed Feb 27 15:51:20 2002//
--/sendserver.c/1.4/Tue Apr 2 14:09:35 2002//
--/strcasecmp.c/1.2/Wed Feb 27 15:51:20 2002//
--/strdup.c/1.2/Wed Feb 27 15:51:20 2002//
--/strerror.c/1.2/Wed Feb 27 15:51:20 2002//
--/util.c/1.2/Wed Feb 27 15:51:20 2002//
--/buildreq.c/1.4/Sat Nov 9 11:24:43 2002//
--/config.c/1.3/Sat Nov 9 11:24:43 2002//
--/options.h/1.2/Sat Nov 9 11:24:43 2002//
--/avpair.c/1.3/Wed Dec 4 21:49:09 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/lib
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/lib/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/lib/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Entries 2002-09-07 12:37:54.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,5 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:02 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:02 2002//
--/README/1.1/Tue Jan 22 16:03:02 2002//
--/login.radius/1.1/Tue Jan 22 16:03:02 2002//
--D/migs////
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/login.radius
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Entries 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,7 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:02 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:02 2002//
--/README/1.1/Tue Jan 22 16:03:02 2002//
--/ip-down/1.1/Tue Jan 22 16:03:02 2002//
--/ip-up/1.1/Tue Jan 22 16:03:02 2002//
--/login.radius/1.1/Tue Jan 22 16:03:02 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/login.radius/migs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/login.radius/migs/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Entries 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,3 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:02 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:02 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/man
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/man/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/man/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Entries 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,7 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:03 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:03 2002//
--/README/1.1/Tue Jan 22 16:03:03 2002//
--/merit-2.4.21-CHAP.diff/1.1/Tue Jan 22 16:03:04 2002//
--/radiusd-1.16.accounting.diff/1.1/Tue Jan 22 16:03:04 2002//
--/radiusd-1.16.shadow.diff/1.1/Tue Jan 22 16:03:04 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/patches
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/patches/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/patches/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Entries ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Entries
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Entries 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,11 +0,0 @@
--/Makefile.am/1.1/Tue Jan 22 16:03:04 2002//
--/Makefile.in/1.1/Tue Jan 22 16:03:04 2002//
--/local.c/1.1/Tue Jan 22 16:03:04 2002//
--/radacct.c/1.1/Tue Jan 22 16:03:04 2002//
--/radexample-debug/1.1/Tue Jan 22 16:03:04 2002//
--/radexample.c/1.2/Tue Apr 2 14:09:35 2002//
--/radius.c/1.2/Tue Apr 2 14:09:35 2002//
--/radlogin.c/1.1/Tue Jan 22 16:03:04 2002//
--/radlogin.h/1.1/Tue Jan 22 16:03:05 2002//
--/radstatus.c/1.1/Tue Jan 22 16:03:05 2002//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Repository ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Repository
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/radius/radiusclient/src
-diff -ruN ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Root ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Root
---- ppp-2.4.2/pppd/plugins/radius/radiusclient/src/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/radius/radiusclient/src/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Entries ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Entries
---- ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Entries 2002-09-07 12:37:54.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Entries 1970-01-01 01:00:00.000000000 +0100
-@@ -1,9 +0,0 @@
--/Makefile.linux/1.1/Fri Dec 14 02:55:20 2001//
--/common.c/1.1/Fri Dec 14 02:55:20 2001//
--/config.h/1.1/Fri Dec 14 02:55:20 2001//
--/debug.c/1.1/Fri Dec 14 02:55:20 2001//
--/discovery.c/1.1/Fri Dec 14 02:55:20 2001//
--/if.c/1.1/Fri Dec 14 02:55:20 2001//
--/plugin.c/1.7/Tue Apr 2 13:11:00 2002//
--/pppoe.h/1.1/Fri Dec 14 02:55:20 2001//
--D
-diff -ruN ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Repository ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Repository
---- ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Repository 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Repository 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ppp/pppd/plugins/rp-pppoe
-diff -ruN ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Root ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Root
---- ppp-2.4.2/pppd/plugins/rp-pppoe/CVS/Root 2002-09-07 12:37:53.000000000 +0200
-+++ ppp-cvs-20040427/pppd/plugins/rp-pppoe/CVS/Root 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--samba.org:/data/cvs
-diff -ruN ppp-2.4.2/pppd/plugins/rp-pppoe/Makefile ppp-cvs-20040427/pppd/plugins/rp-pppoe/Makefile
---- ppp-2.4.2/pppd/plugins/rp-pppoe/Makefile 2004-01-13 04:57:55.000000000 +0100
-+++ ppp-cvs-20040427/pppd/plugins/rp-pppoe/Makefile 1970-01-01 01:00:00.000000000 +0100
-@@ -1,50 +0,0 @@
--# Generated automatically from Makefile.in by configure.
--#***********************************************************************
--#
--# Makefile
--#
--# Makefile for Roaring Penguin's Linux PPPoE plugin.
--#
--# Copyright (C) 2001 Roaring Penguin Software Inc.
--#
--# This program may be distributed according to the terms of the GNU
--# General Public License, version 2 or (at your option) any later version.
--#
--# $Id: Makefile.linux,v 1.2 2004/01/13 03:57:55 paulus Exp $
--#***********************************************************************
--
--# Version is set ONLY IN THE MAKEFILE! Don't delete this!
--VERSION=3.3
--
--COPTS=-O2 -g
--CFLAGS=$(COPTS) -I../../../include/linux
--all: rp-pppoe.so
--
--rp-pppoe.so: libplugin.a plugin.o
-- gcc -o rp-pppoe.so -shared plugin.o libplugin.a
--
--install: all
-- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR)
--
--clean:
-- rm -f *.o *.so
--
--plugin.o: plugin.c
-- gcc '-DRP_VERSION="$(VERSION)"' $(CFLAGS) -I../../.. -c -o plugin.o -fPIC plugin.c
--
--libplugin.a: discovery.o if.o common.o debug.o
-- ar -rc $@ $^
--
--discovery.o: discovery.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o discovery.o -fPIC discovery.c
--
--if.o: if.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o if.o -fPIC if.c
--
--debug.o: debug.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o debug.o -fPIC debug.c
--
--common.o: common.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o common.o -fPIC common.c
--
-diff -ruN ppp-2.4.2/pppd/pppd.8 ppp-cvs-20040427/pppd/pppd.8
---- ppp-2.4.2/pppd/pppd.8 2004-01-15 06:09:00.000000000 +0100
-+++ ppp-cvs-20040427/pppd/pppd.8 2004-04-27 20:25:12.000000000 +0200
-@@ -1,5 +1,5 @@
- .\" manual page [] for pppd 2.4
--.\" $Id: pppd.8,v 1.76 2004/01/15 05:09:00 paulus Exp $
-+.\" $Id: pppd.8,v 1.77 2004/04/27 18:22:58 fcusack Exp $
- .\" SH section heading
- .\" SS subsection heading
- .\" LP paragraph
-@@ -955,11 +955,11 @@
- Require the use of MPPE, with 128\-bit encryption.
- .TP
- .B require-mschap
--Require the peer to authenticate itself using MS-CHAP [Microsft Challenge
-+Require the peer to authenticate itself using MS-CHAP [Microsoft Challenge
- Handshake Authentication Protocol] authentication.
- .TP
- .B require-mschap-v2
--Require the peer to authenticate itself using MS-CHAPv2 [Microsft Challenge
-+Require the peer to authenticate itself using MS-CHAPv2 [Microsoft Challenge
- Handshake Authentication Protocol, Version 2] authentication.
- .TP
- .B require-eap
-diff -ruN ppp-2.4.2/pppd/tty.c ppp-cvs-20040427/pppd/tty.c
---- ppp-2.4.2/pppd/tty.c 2004-01-13 05:17:59.000000000 +0100
-+++ ppp-cvs-20040427/pppd/tty.c 2004-01-17 06:50:12.000000000 +0100
-@@ -73,7 +73,7 @@
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
--#define RCSID "$Id: tty.c,v 1.13 2004/01/13 04:17:59 paulus Exp $"
-+#define RCSID "$Id: tty.c,v 1.14 2004/01/17 05:47:55 carlsonj Exp $"
-
- #include <stdio.h>
- #include <ctype.h>
-@@ -512,7 +512,9 @@
- {
- char *connector;
- int fdflags;
-+#ifndef __linux__
- struct stat statbuf;
-+#endif
- char numbuf[16];
-
- /*
-diff -ruN ppp-2.4.2/pppdump/bsd-comp.c ppp-cvs-20040427/pppdump/bsd-comp.c
---- ppp-2.4.2/pppdump/bsd-comp.c 1999-04-16 13:34:42.000000000 +0200
-+++ ppp-cvs-20040427/pppdump/bsd-comp.c 2004-01-17 06:50:12.000000000 +0100
-@@ -38,12 +38,14 @@
- */
-
- /*
-- * $Id: bsd-comp.c,v 1.3 1999/04/16 11:35:59 paulus Exp $
-+ * $Id: bsd-comp.c,v 1.4 2004/01/17 05:47:55 carlsonj Exp $
- */
-
- #include <sys/types.h>
-+#include <stdio.h>
- #include <stddef.h>
- #include <stdlib.h>
-+#include <string.h>
- #include "ppp_defs.h"
- #include "ppp-comp.h"
-
-diff -ruN ppp-2.4.2/pppdump/deflate.c ppp-cvs-20040427/pppdump/deflate.c
---- ppp-2.4.2/pppdump/deflate.c 2002-12-06 10:49:16.000000000 +0100
-+++ ppp-cvs-20040427/pppdump/deflate.c 2004-01-17 06:50:12.000000000 +0100
-@@ -33,12 +33,14 @@
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
-- * $Id: deflate.c,v 1.4 2002/12/06 09:49:16 paulus Exp $
-+ * $Id: deflate.c,v 1.5 2004/01/17 05:47:55 carlsonj Exp $
- */
-
- #include <sys/types.h>
-+#include <stdio.h>
- #include <stddef.h>
- #include <stdlib.h>
-+#include <string.h>
- #include "ppp_defs.h"
- #include "ppp-comp.h"
- #include "zlib.h"
-diff -ruN ppp-2.4.2/pppdump/pppdump.c ppp-cvs-20040427/pppdump/pppdump.c
---- ppp-2.4.2/pppdump/pppdump.c 2002-12-06 10:17:02.000000000 +0100
-+++ ppp-cvs-20040427/pppdump/pppdump.c 2004-01-17 06:50:12.000000000 +0100
-@@ -35,6 +35,7 @@
- */
- #include <stdio.h>
- #include <unistd.h>
-+#include <stdlib.h>
- #include <time.h>
- #include <sys/types.h>
- #include "ppp_defs.h"
-@@ -53,6 +54,12 @@
- extern int optind;
- extern char *optarg;
-
-+void dumplog();
-+void dumpppp();
-+void show_time();
-+void handle_ccp();
-+
-+int
- main(ac, av)
- int ac;
- char **av;
-@@ -105,6 +112,7 @@
- exit(0);
- }
-
-+void
- dumplog(f)
- FILE *f;
- {
-@@ -244,6 +252,7 @@
-
- unsigned char dbuf[8192];
-
-+void
- dumpppp(f)
- FILE *f;
- {
-@@ -429,6 +438,7 @@
- NULL
- };
-
-+void
- handle_ccp(cp, dp, len)
- struct pkt *cp;
- u_char *dp;
-@@ -485,6 +495,7 @@
- }
- }
-
-+void
- show_time(f, c)
- FILE *f;
- int c;
-diff -ruN ppp-2.4.2/scripts/callback ppp-cvs-20040427/scripts/callback
---- ppp-2.4.2/scripts/callback 1995-08-09 04:49:51.000000000 +0200
-+++ ppp-cvs-20040427/scripts/callback 2004-04-12 07:30:11.000000000 +0200
-@@ -33,7 +33,7 @@
- ABORT '\nNO ANSWER\r' \
- ABORT '\nRINGING\r\n\r\nRINGING\r' \
- '' AT \
-- 'OK-+++\c-OK' 'AT&C0&D2S0=0H0 \
-+ 'OK-+++\c-OK' 'AT&C0&D2S0=0H0' \
- TIMEOUT 30 \
- OK ATDT$TELEPHONE \
- CONNECT '' \
-diff -ruN ppp-2.4.2/scripts/ipv6-down.sample ppp-cvs-20040427/scripts/ipv6-down.sample
---- ppp-2.4.2/scripts/ipv6-down.sample 1999-08-23 08:07:07.000000000 +0200
-+++ ppp-cvs-20040427/scripts/ipv6-down.sample 2004-04-12 07:45:18.000000000 +0200
-@@ -8,24 +8,24 @@
- # Kill the router advertisement daemon on this interface.
- # The killing procedure is copied from RedHat 6.0 initscripts.
-
--DEVICE=$1
-+DEVICE="$1"
-
--PIDFILE=/var/run/radvd-$DEVICE.pid
-+PIDFILE="/var/run/radvd-$DEVICE.pid"
-
--[ -f $PIDFILE ] || exit 0
-+[ -f "$PIDFILE" ] || exit 0
-
--PID=`cat $PIDFILE`
-+PID="$(cat "$PIDFILE")"
- if [ "$PID" != "" ]; then
-- if ps h $PID >/dev/null 2>&1; then
-- kill -TERM $PID
-+ if ps h "$PID" >/dev/null 2>&1; then
-+ kill -TERM "$PID"
- usleep 10000
-- if ps h $PID >/dev/null 2>&1; then
-+ if ps h "$PID" >/dev/null 2>&1; then
- sleep 1
-- if ps h $PID >/dev/null 2>&1; then
-- kill -KILL $PID
-+ if ps h "$PID" >/dev/null 2>&1; then
-+ kill -KILL "$PID"
- fi
- fi
- fi
- fi
-
--rm -f $PIDFILE
-+rm -f "$PIDFILE"
-diff -ruN ppp-2.4.2/scripts/ipv6-up.sample ppp-cvs-20040427/scripts/ipv6-up.sample
---- ppp-2.4.2/scripts/ipv6-up.sample 1999-08-23 08:07:07.000000000 +0200
-+++ ppp-cvs-20040427/scripts/ipv6-up.sample 2004-04-12 07:45:18.000000000 +0200
-@@ -8,26 +8,27 @@
- # Start router advertisements on this link.
- # Based on radvd 0.5.0 behaviour
-
--DEVICE=$1
-+DEVICE="$1"
-
--CFGFILE=/usr/inet6/etc/radvd.conf-$DEVICE
--PIDFILE=/var/run/radvd-$DEVICE.pid
-+CFGFILE="/etc/radvd.conf-$DEVICE"
-+PIDFILE="/var/run/radvd-$DEVICE.pid"
-+EXEFILE="/usr/sbin/radvd"
-
--if [ -x /usr/inet6/sbin/radvd && -f $CFGFILE ]; then
-- touch $PIDFILE
-- if [ ! -f $PIDFILE ]; then
-+if [ -x "$EXEFILE" -a -f "$CFGFILE" ]; then
-+ touch "$PIDFILE"
-+ if [ ! -f "$PIDFILE" ]; then
- echo "error: $PIDFILE is not a regular file. Aborting"
- exit 0
- fi
-
-- PID=`cat $PIDFILE`
-- if [ "$PID" != "" ]; then
-- ps h $PID >/dev/null 2>&1 && exit 0
-+ PID="$(cat "$PIDFILE")"
-+ if [ -n "$PID" ]; then
-+ ps h "$PID" >/dev/null 2>&1 && exit 0
- fi
-
- # radvd 0.5.0 doesn't write a pid-file so we do it here
- # enabling debugging keeps radvd in foreground, putting it
- # on background gives us the PID.
-- /usr/inet6/sbin/radvd -d 1 -C $CFGFILE &
-- echo $! >$PIDFILE
-+ "$EXEFILE" -d 1 -C "$CFGFILE" &
-+ echo $! >"$PIDFILE"
- fi
-diff -ruN ppp-2.4.2/scripts/pon ppp-cvs-20040427/scripts/pon
---- ppp-2.4.2/scripts/pon 2002-11-25 00:30:44.000000000 +0100
-+++ ppp-cvs-20040427/scripts/pon 2004-04-12 07:45:18.000000000 +0200
-@@ -1,10 +1,12 @@
- #!/bin/sh
-
-+PPP_ON_BOOT=/etc/ppp/ppp_on_boot
-+
- case "$1" in
- -*) echo "
- Usage: pon [provider] [arguments]
-
--If pon is invoked without arguments, /etc/ppp/ppp_on_boot file will be
-+If pon is invoked without arguments, $PPP_ON_BOOT file will be
- run, presuming it exists and is executable. Otherwise, a PPP connection
- will be started using settings from /etc/ppp/peers/provider.
- If you specify one argument, a PPP connection will be started using
-@@ -16,8 +18,8 @@
- ;;
- esac
-
--if [ -z "$1" -a -x /etc/ppp/ppp_on_boot ]; then
-- exec /etc/ppp/ppp_on_boot
-+if [ -z "$1" -a -x "$PPP_ON_BOOT" ]; then
-+ exec "$PPP_ON_BOOT"
- fi
-
- if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then
-diff -ruN ppp-2.4.2/svr4/Makedefs ppp-cvs-20040427/svr4/Makedefs
---- ppp-2.4.2/svr4/Makedefs 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/Makedefs 2000-06-09 03:36:34.000000000 +0200
-@@ -0,0 +1,16 @@
-+#
-+# defines common to several Makefiles
-+#
-+
-+INSTALL= /usr/sbin/install
-+
-+BINDIR = /usr/local/bin
-+MANDIR = /usr/local/man
-+ETCDIR = /etc/ppp
-+
-+COPTS = -O -Xa
-+
-+# For compiling with gcc, comment out the COPTS definition above and
-+# uncomment the next 2 definitions.
-+#CC = gcc
-+#COPTS = -O2
-diff -ruN ppp-2.4.2/svr4/Makedefs.sol2 ppp-cvs-20040427/svr4/Makedefs.sol2
---- ppp-2.4.2/svr4/Makedefs.sol2 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/Makedefs.sol2 1999-09-21 22:50:31.000000000 +0200
-@@ -0,0 +1,59 @@
-+#
-+# Generic make definitions for Solaris 2
-+#
-+# $Id: Makedefs.sol2,v 1.3 1999/09/21 20:37:20 masputra Exp $
-+#
-+
-+include ../svr4/Makedefs
-+
-+CPPFLAGS = -D_KERNEL -DSVR4 -DSOL2 -DPRIOQ -DDEBUG -I../include
-+CFLAGS = $(CPPFLAGS) $(COPTS)
-+
-+# lint-specific variables
-+LINT = lint
-+LINT_OPT_32 =
-+LINT_OPT_64 = -Xarch=v9 -errchk=longptr64
-+
-+LINT_32 =
-+LINT_32 += -erroff=E_BAD_PTR_CAST_ALIGN
-+LINT_32 += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
-+LINT_32 += -erroff=E_SUSPICIOUS_COMPARISON
-+LINT_32 += -erroff=E_CAST_UINT_TO_SIGNED_INT
-+LINT_32 += -erroff=E_PASS_UINT_TO_SIGNED_INT
-+LINT_32 += -erroff=E_INVALID_ANNOTATION_NAME
-+LINT_32 += -erroff=E_FUNC_ARG_UNUSED
-+# This might be needed, but zlib.c and vjcompress.c will squawk
-+# when not ignored
-+LINT_32 += -erroff=E_CASE_FALLTHRU
-+LINT_32 += -erroff=E_RET_INT_IMPLICITLY
-+LINT_32 += -erroff=E_FUNC_NO_RET_VAL
-+# Some STREAMS macros will be noisy too when this isn't ignored
-+LINT_32 += -erroff=E_CONSTANT_CONDITION
-+LINT_32 += -erroff=E_CONST_EXPR
-+
-+# Extra noise suppressant for 64-bit
-+EXTRA_OFF =
-+EXTRA_OFF += -erroff=E_CAST_INT_TO_SMALL_INT
-+EXTRA_OFF += -erroff=E_CAST_INT_CONST_TO_SMALL_INT
-+EXTRA_OFF += -erroff=E_CAST_TO_PTR_FROM_INT
-+EXTRA_OFF += -erroff=E_ASSIGN_INT_TO_SMALL_INT
-+EXTRA_OFF += -erroff=E_ASSIGN_INT_FROM_BIG_CONST
-+EXTRA_OFF += -erroff=E_CONST_PROMOTED_UNSIGNED_LL
-+EXTRA_OFF += -erroff=E_CONST_PROMOTED_LONG_LONG
-+EXTRA_OFF += -erroff=E_CONST_TRUNCATED_BY_ASSIGN
-+EXTRA_OFF += -erroff=E_PASS_INT_FROM_BIG_CONST
-+EXTRA_OFF += -erroff=E_COMP_INT_WITH_LARGE_INT
-+EXTRA_OFF += -erroff=E_ASSIGN_UINT_TO_SIGNED_INT
-+EXTRA_OFF += -erroff=E_ASSIGN_NARROW_CONV
-+EXTRA_OFF += -erroff=E_PASS_INT_TO_SMALL_INT
-+EXTRA_OFF += -erroff=E_PTR_CONV_LOSES_BITS
-+
-+LINT_64 = $(LINT_32)
-+LINT_64 += $(EXTRA_OFF)
-+
-+LINTFLAGS64 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_64) $(LINT_64)
-+LINT64 = $(LINT) -c $(LINTFLAGS64) $(CPPFLAGS)
-+
-+LINTFLAGS32 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_32) $(LINT_32)
-+LINT32 = $(LINT) -c $(LINTFLAGS32) $(CPPFLAGS)
-+
-diff -ruN ppp-2.4.2/svr4/Makefile.sol2 ppp-cvs-20040427/svr4/Makefile.sol2
---- ppp-2.4.2/svr4/Makefile.sol2 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/Makefile.sol2 1999-09-21 22:50:32.000000000 +0200
-@@ -0,0 +1,66 @@
-+#
-+# Makefile for STREAMS modules for Solaris 2.
-+#
-+# $Id: Makefile.sol2,v 1.18 1999/09/21 20:37:20 masputra Exp $
-+#
-+
-+include Makedefs.sol2
-+
-+COPTS += -xO2 -xspace -W0,-Lt
-+
-+COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \
-+ ppp_comp_mod.o
-+
-+all: ppp ppp_ahdl ppp_comp
-+
-+ppp: ppp.o ppp_mod.o
-+ ld -r -o $@ ppp.o ppp_mod.o
-+ chmod +x $@
-+
-+ppp_ahdl: ppp_ahdlc.o ppp_ahdlc_mod.o
-+ ld -r -o $@ ppp_ahdlc.o ppp_ahdlc_mod.o
-+ chmod +x $@
-+
-+ppp_comp: $(COMP_OBJS)
-+ ld -r -o $@ $(COMP_OBJS)
-+ chmod +x $@
-+
-+bsd-comp.o: ../modules/bsd-comp.c
-+ $(CC) $(CFLAGS) -c $?
-+deflate.o: ../modules/deflate.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp.o: ../modules/ppp.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp_mod.o: ppp_mod.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp_ahdlc.o: ../modules/ppp_ahdlc.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp_comp.o: ../modules/ppp_comp.c
-+ $(CC) $(CFLAGS) -c $?
-+ppp_comp_mod.o: ppp_comp_mod.c
-+ $(CC) $(CFLAGS) -c $?
-+vjcompress.o: ../modules/vjcompress.c
-+ $(CC) $(CFLAGS) -c $?
-+zlib.o: ../common/zlib.c
-+ $(CC) $(CFLAGS) -c $?
-+
-+install:
-+ cp ppp ppp.conf /kernel/drv
-+ cp ppp_comp ppp_ahdl /kernel/strmod
-+ if grep clone:ppp /etc/minor_perm; then :; else \
-+ echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
-+ /usr/sbin/rem_drv ppp 2>/dev/null || true
-+ /usr/sbin/add_drv ppp
-+
-+SRCS = ../modules/ppp.c ppp_mod.c ../modules/ppp_ahdlc.c ppp_ahdlc_mod.c \
-+ ../modules/ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
-+ ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-+
-+lint:
-+ $(LINT32) $(SRCS)
-+
-+clean:
-+ rm -f ppp ppp_comp ppp_ahdl *.o *~ core
-+ rm -f *.ln
-diff -ruN ppp-2.4.2/svr4/Makefile.sol2-64 ppp-cvs-20040427/svr4/Makefile.sol2-64
---- ppp-2.4.2/svr4/Makefile.sol2-64 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/Makefile.sol2-64 1999-09-21 22:50:33.000000000 +0200
-@@ -0,0 +1,85 @@
-+#
-+# Makefile for 64-bit STREAMS modules for Solaris 2.
-+#
-+# $Id: Makefile.sol2-64,v 1.3 1999/09/21 20:37:20 masputra Exp $
-+#
-+
-+include Makedefs.sol2
-+
-+# Sun's cc flag for LP64 compilation / linkage
-+COPTS += -xchip=ultra -xarch=v9 -Wc,-xcode=abs32 -Wc,-Qiselect-regsym=0 -xO3 -xspace -W0,-Lt
-+
-+# subdirectory where 64-bit objects / binaries will be placed
-+LP64DIR = sparcv9
-+
-+# Name of legacy Makefile (for 32-bit binaries)
-+STD_MAKE = Makefile.sol2
-+
-+COMP_OBJS = $(LP64DIR)/ppp_comp.o $(LP64DIR)/bsd-comp.o \
-+ $(LP64DIR)/deflate.o $(LP64DIR)/zlib.o $(LP64DIR)/vjcompress.o \
-+ $(LP64DIR)/ppp_comp_mod.o
-+
-+all: std_objs $(LP64DIR) ppp ppp_ahdl ppp_comp
-+
-+std_objs:
-+ $(MAKE) -f $(STD_MAKE) all
-+
-+ppp: $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
-+ ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
-+ chmod +x $(LP64DIR)/$@
-+
-+ppp_ahdl: $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
-+ ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
-+ chmod +x $(LP64DIR)/$@
-+
-+ppp_comp: $(COMP_OBJS)
-+ ld -r -o $(LP64DIR)/$@ $(COMP_OBJS)
-+ chmod +x $(LP64DIR)/$@
-+
-+$(LP64DIR)/bsd-comp.o: ../modules/bsd-comp.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/deflate.o: ../modules/deflate.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp.o: ../modules/ppp.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp_mod.o: ppp_mod.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp_ahdlc.o: ../modules/ppp_ahdlc.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp_comp.o: ../modules/ppp_comp.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/ppp_comp_mod.o: ppp_comp_mod.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/vjcompress.o: ../modules/vjcompress.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+$(LP64DIR)/zlib.o: ../common/zlib.c
-+ $(CC) $(CFLAGS) -c $? -o $@
-+
-+$(LP64DIR):
-+ mkdir -m 755 -p $@
-+
-+install:
-+ cp ppp ppp.conf /kernel/drv
-+ cp ppp_comp ppp_ahdl /kernel/strmod
-+ cp $(LP64DIR)/ppp /kernel/drv/$(LP64DIR)
-+ cp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl /kernel/strmod/$(LP64DIR)
-+ if grep clone:ppp /etc/minor_perm; then :; else \
-+ echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
-+ /usr/sbin/rem_drv ppp 2>/dev/null || true
-+ /usr/sbin/add_drv ppp
-+
-+SRCS = ../modules/ppp.c ppp_mod.c ../modules/ppp_ahdlc.c ppp_ahdlc_mod.c \
-+ ../modules/ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
-+ ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-+
-+lint:
-+ $(LINT64) $(SRCS)
-+
-+lint-32:
-+ $(LINT32) $(SRCS)
-+
-+clean:
-+ $(MAKE) -f $(STD_MAKE) clean
-+ rm -f $(LP64DIR)/ppp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl $(LP64DIR)/*.o $(LP64DIR)/*~ $(LP64DIR)/core
-diff -ruN ppp-2.4.2/svr4/Makefile.top ppp-cvs-20040427/svr4/Makefile.top
---- ppp-2.4.2/svr4/Makefile.top 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/Makefile.top 1999-04-01 14:37:44.000000000 +0200
-@@ -0,0 +1,50 @@
-+#
-+# ppp top level makefile for SVR4 and Solaris 2
-+#
-+# $Id: Makefile.top,v 1.8 1999/04/01 11:44:55 paulus Exp $
-+#
-+
-+include svr4/Makedefs
-+
-+all:
-+ cd chat; $(MAKE) all
-+ cd pppd; $(MAKE) all
-+ cd pppstats; $(MAKE) all
-+ cd pppdump; $(MAKE) all
-+ cd svr4; $(MAKE) all
-+
-+install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp
-+
-+install-progs:
-+ cd chat; $(MAKE) install
-+ cd pppd; $(MAKE) install
-+ cd pppstats; $(MAKE) install
-+ cd pppdump; $(MAKE) install
-+ cd svr4; $(MAKE) install
-+
-+install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
-+ $(ETCDIR)/chap-secrets
-+
-+$(ETCDIR)/options:
-+ cp etc.ppp/options $@
-+ chmod go-w $@
-+$(ETCDIR)/pap-secrets:
-+ $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/pap-secrets
-+$(ETCDIR)/chap-secrets:
-+ $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/chap-secrets
-+
-+$(BINDIR):
-+ mkdir -m 755 -p $@
-+$(MANDIR)/man8:
-+ mkdir -m 755 -p $@
-+$(ETCDIR):
-+ mkdir -m 755 -p $@
-+
-+clean:
-+ rm -f *~
-+ cd chat; $(MAKE) clean
-+ cd pppd; $(MAKE) clean
-+ cd pppstats; $(MAKE) clean
-+ cd pppdump; $(MAKE) clean
-+ cd svr4; $(MAKE) clean
-+
-diff -ruN ppp-2.4.2/svr4/ppp.Master ppp-cvs-20040427/svr4/ppp.Master
---- ppp-2.4.2/svr4/ppp.Master 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp.Master 1995-10-27 04:58:28.000000000 +0100
-@@ -0,0 +1 @@
-+ppp - Sciof ppp 0 0 1 128 -1
-diff -ruN ppp-2.4.2/svr4/ppp.Node ppp-cvs-20040427/svr4/ppp.Node
---- ppp-2.4.2/svr4/ppp.Node 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp.Node 1995-10-27 04:58:36.000000000 +0100
-@@ -0,0 +1 @@
-+clone ppp c ppp
-diff -ruN ppp-2.4.2/svr4/ppp.System ppp-cvs-20040427/svr4/ppp.System
---- ppp-2.4.2/svr4/ppp.System 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp.System 1995-10-27 04:58:37.000000000 +0100
-@@ -0,0 +1 @@
-+ppp Y 1 0 0 0 0 0 0 0
-diff -ruN ppp-2.4.2/svr4/ppp.conf ppp-cvs-20040427/svr4/ppp.conf
---- ppp-2.4.2/svr4/ppp.conf 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp.conf 1995-06-01 06:39:00.000000000 +0200
-@@ -0,0 +1 @@
-+name="ppp" parent="pseudo" instance=0;
-diff -ruN ppp-2.4.2/svr4/ppp_ahdl.Master ppp-cvs-20040427/svr4/ppp_ahdl.Master
---- ppp-2.4.2/svr4/ppp_ahdl.Master 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_ahdl.Master 1995-10-27 04:58:32.000000000 +0100
-@@ -0,0 +1 @@
-+ppp_ahdl - iSf phdl 0 0 1 1 -1
-diff -ruN ppp-2.4.2/svr4/ppp_ahdl.System ppp-cvs-20040427/svr4/ppp_ahdl.System
---- ppp-2.4.2/svr4/ppp_ahdl.System 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_ahdl.System 1995-10-27 04:58:38.000000000 +0100
-@@ -0,0 +1 @@
-+ppp_ahdl Y 1 0 0 0 0 0 0 0
-diff -ruN ppp-2.4.2/svr4/ppp_ahdlc_mod.c ppp-cvs-20040427/svr4/ppp_ahdlc_mod.c
---- ppp-2.4.2/svr4/ppp_ahdlc_mod.c 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_ahdlc_mod.c 1995-12-11 06:21:02.000000000 +0100
-@@ -0,0 +1,49 @@
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/conf.h>
-+#include <sys/modctl.h>
-+#include <sys/sunddi.h>
-+
-+extern struct streamtab ppp_ahdlcinfo;
-+
-+static struct fmodsw fsw = {
-+ "ppp_ahdl",
-+ &ppp_ahdlcinfo,
-+ D_NEW | D_MP | D_MTQPAIR
-+};
-+
-+extern struct mod_ops mod_strmodops;
-+
-+static struct modlstrmod modlstrmod = {
-+ &mod_strmodops,
-+ "PPP async HDLC module",
-+ &fsw
-+};
-+
-+static struct modlinkage modlinkage = {
-+ MODREV_1,
-+ (void *) &modlstrmod,
-+ NULL
-+};
-+
-+/*
-+ * Entry points for modloading.
-+ */
-+int
-+_init(void)
-+{
-+ return mod_install(&modlinkage);
-+}
-+
-+int
-+_fini(void)
-+{
-+ return mod_remove(&modlinkage);
-+}
-+
-+int
-+_info(mip)
-+ struct modinfo *mip;
-+{
-+ return mod_info(&modlinkage, mip);
-+}
-diff -ruN ppp-2.4.2/svr4/ppp_comp.Master ppp-cvs-20040427/svr4/ppp_comp.Master
---- ppp-2.4.2/svr4/ppp_comp.Master 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_comp.Master 1995-10-27 04:58:34.000000000 +0100
-@@ -0,0 +1 @@
-+ppp_comp - iSf pcmp 0 0 1 1 -1
-diff -ruN ppp-2.4.2/svr4/ppp_comp.System ppp-cvs-20040427/svr4/ppp_comp.System
---- ppp-2.4.2/svr4/ppp_comp.System 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_comp.System 1995-10-27 04:58:40.000000000 +0100
-@@ -0,0 +1 @@
-+ppp_comp Y 1 0 0 0 0 0 0 0
-diff -ruN ppp-2.4.2/svr4/ppp_comp_mod.c ppp-cvs-20040427/svr4/ppp_comp_mod.c
---- ppp-2.4.2/svr4/ppp_comp_mod.c 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_comp_mod.c 2002-12-06 10:50:10.000000000 +0100
-@@ -0,0 +1,89 @@
-+/*
-+ * ppp_comp_mod.c - modload support for PPP compression STREAMS module.
-+ *
-+ * Copyright (c) 1994 Paul Mackerras. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in
-+ * the documentation and/or other materials provided with the
-+ * distribution.
-+ *
-+ * 3. The name(s) of the authors of this software must not be used to
-+ * endorse or promote products derived from this software without
-+ * prior written permission.
-+ *
-+ * 4. Redistributions of any form whatsoever must retain the following
-+ * acknowledgment:
-+ * "This product includes software developed by Paul Mackerras
-+ * <paulus@samba.org>".
-+ *
-+ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
-+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-+ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ *
-+ * $Id: ppp_comp_mod.c,v 1.3 2002/12/06 09:49:16 paulus Exp $
-+ */
-+
-+/*
-+ * This file is used under Solaris 2.
-+ */
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/conf.h>
-+#include <sys/modctl.h>
-+#include <sys/sunddi.h>
-+
-+extern struct streamtab ppp_compinfo;
-+
-+static struct fmodsw fsw = {
-+ "ppp_comp",
-+ &ppp_compinfo,
-+ D_NEW | D_MP | D_MTQPAIR
-+};
-+
-+extern struct mod_ops mod_strmodops;
-+
-+static struct modlstrmod modlstrmod = {
-+ &mod_strmodops,
-+ "PPP compression module",
-+ &fsw
-+};
-+
-+static struct modlinkage modlinkage = {
-+ MODREV_1,
-+ (void *) &modlstrmod,
-+ NULL
-+};
-+
-+/*
-+ * Entry points for modloading.
-+ */
-+int
-+_init(void)
-+{
-+ return mod_install(&modlinkage);
-+}
-+
-+int
-+_fini(void)
-+{
-+ return mod_remove(&modlinkage);
-+}
-+
-+int
-+_info(mip)
-+ struct modinfo *mip;
-+{
-+ return mod_info(&modlinkage, mip);
-+}
-diff -ruN ppp-2.4.2/svr4/ppp_mod.c ppp-cvs-20040427/svr4/ppp_mod.c
---- ppp-2.4.2/svr4/ppp_mod.c 1970-01-01 01:00:00.000000000 +0100
-+++ ppp-cvs-20040427/svr4/ppp_mod.c 2002-12-06 10:50:10.000000000 +0100
-@@ -0,0 +1,182 @@
-+/*
-+ * ppp_mod.c - modload support for PPP pseudo-device driver.
-+ *
-+ * Copyright (c) 1994 Paul Mackerras. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ *
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in
-+ * the documentation and/or other materials provided with the
-+ * distribution.
-+ *
-+ * 3. The name(s) of the authors of this software must not be used to
-+ * endorse or promote products derived from this software without
-+ * prior written permission.
-+ *
-+ * 4. Redistributions of any form whatsoever must retain the following
-+ * acknowledgment:
-+ * "This product includes software developed by Paul Mackerras
-+ * <paulus@samba.org>".
-+ *
-+ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
-+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-+ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ *
-+ * $Id: ppp_mod.c,v 1.4 2002/12/06 09:49:16 paulus Exp $
-+ */
-+
-+/*
-+ * This file is used under Solaris 2.
-+ */
-+
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/stat.h>
-+#include <sys/conf.h>
-+#include <sys/modctl.h>
-+#include <sys/sunddi.h>
-+#include <sys/ksynch.h>
-+
-+#ifdef __STDC__
-+#define __P(x) x
-+#else
-+#define __P(x) ()
-+#endif
-+
-+static int ppp_identify __P((dev_info_t *));
-+static int ppp_attach __P((dev_info_t *, ddi_attach_cmd_t));
-+static int ppp_detach __P((dev_info_t *, ddi_detach_cmd_t));
-+static int ppp_devinfo __P((dev_info_t *, ddi_info_cmd_t, void *, void **));
-+
-+extern struct streamtab pppinfo;
-+extern krwlock_t ppp_lower_lock;
-+
-+static dev_info_t *ppp_dip;
-+
-+static struct cb_ops cb_ppp_ops = {
-+ nulldev, nulldev, nodev, nodev, /* cb_open, ... */
-+ nodev, nodev, nodev, nodev, /* cb_dump, ... */
-+ nodev, nodev, nodev, nochpoll, /* cb_devmap, ... */
-+ ddi_prop_op, /* cb_prop_op */
-+ &pppinfo, /* cb_stream */
-+ D_NEW|D_MP|D_MTQPAIR|D_MTOUTPERIM|D_MTOCEXCL /* cb_flag */
-+};
-+
-+static struct dev_ops ppp_ops = {
-+ DEVO_REV, /* devo_rev */
-+ 0, /* devo_refcnt */
-+ ppp_devinfo, /* devo_getinfo */
-+ ppp_identify, /* devo_identify */
-+ nulldev, /* devo_probe */
-+ ppp_attach, /* devo_attach */
-+ ppp_detach, /* devo_detach */
-+ nodev, /* devo_reset */
-+ &cb_ppp_ops, /* devo_cb_ops */
-+ NULL /* devo_bus_ops */
-+};
-+
-+/*
-+ * Module linkage information
-+ */
-+
-+static struct modldrv modldrv = {
-+ &mod_driverops, /* says this is a pseudo driver */
-+ "PPP-2.3 multiplexing driver",
-+ &ppp_ops /* driver ops */
-+};
-+
-+static struct modlinkage modlinkage = {
-+ MODREV_1,
-+ (void *) &modldrv,
-+ NULL
-+};
-+
-+int
-+_init(void)
-+{
-+ return mod_install(&modlinkage);
-+}
-+
-+int
-+_fini(void)
-+{
-+ return mod_remove(&modlinkage);
-+}
-+
-+int
-+_info(mip)
-+ struct modinfo *mip;
-+{
-+ return mod_info(&modlinkage, mip);
-+}
-+
-+static int
-+ppp_identify(dip)
-+ dev_info_t *dip;
-+{
-+ return strcmp(ddi_get_name(dip), "ppp") == 0? DDI_IDENTIFIED:
-+ DDI_NOT_IDENTIFIED;
-+}
-+
-+static int
-+ppp_attach(dip, cmd)
-+ dev_info_t *dip;
-+ ddi_attach_cmd_t cmd;
-+{
-+
-+ if (cmd != DDI_ATTACH)
-+ return DDI_FAILURE;
-+ if (ddi_create_minor_node(dip, "ppp", S_IFCHR, 0, DDI_PSEUDO, CLONE_DEV)
-+ == DDI_FAILURE) {
-+ ddi_remove_minor_node(dip, NULL);
-+ return DDI_FAILURE;
-+ }
-+ rw_init(&ppp_lower_lock, NULL, RW_DRIVER, NULL);
-+ return DDI_SUCCESS;
-+}
-+
-+static int
-+ppp_detach(dip, cmd)
-+ dev_info_t *dip;
-+ ddi_detach_cmd_t cmd;
-+{
-+ rw_destroy(&ppp_lower_lock);
-+ ddi_remove_minor_node(dip, NULL);
-+ return DDI_SUCCESS;
-+}
-+
-+static int
-+ppp_devinfo(dip, cmd, arg, result)
-+ dev_info_t *dip;
-+ ddi_info_cmd_t cmd;
-+ void *arg;
-+ void **result;
-+{
-+ int error;
-+
-+ error = DDI_SUCCESS;
-+ switch (cmd) {
-+ case DDI_INFO_DEVT2DEVINFO:
-+ if (ppp_dip == NULL)
-+ error = DDI_FAILURE;
-+ else
-+ *result = (void *) ppp_dip;
-+ break;
-+ case DDI_INFO_DEVT2INSTANCE:
-+ *result = NULL;
-+ break;
-+ default:
-+ error = DDI_FAILURE;
-+ }
-+ return error;
-+}
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/008_pathnames.h.diff b/obsolete-buildroot/sources/openwrt/patches/ppp/008_pathnames.h.diff
deleted file mode 100644
index dee0a8db29..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/008_pathnames.h.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ppp-2.4.0b4.orig/pppd/pathnames.h
-+++ ppp-2.4.0b4/pppd/pathnames.h
-@@ -26,7 +26,7 @@
- #define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
- #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
- #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
--#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
-+#define _PATH_CONNERRS _ROOT_PATH "/var/log/ppp-connect-errors"
- #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
- #define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf"
-
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/010_scripts_README.diff b/obsolete-buildroot/sources/openwrt/patches/ppp/010_scripts_README.diff
deleted file mode 100644
index 0ff29484bb..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/010_scripts_README.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- ppp-2.4.0b4.orig/scripts/README
-+++ ppp-2.4.0b4/scripts/README
-@@ -141,3 +141,17 @@
- are escaped. This may need to be modified depending on the ssh (or
- pseudo-tty) implementation which may differ across platforms, for further
- optimizations.
-+
-+------------------------------------------------------------------------
-+
-+12. pon, poff and ip-up
-+
-+These are modified version of the pon/poff/ip-up scripts contributed by Yann
-+Dirson <dirson@debian.org>. They allow you to call "pon quick" respectively
-+"pon quick my-isp" to just call the provider for running you ip-up scripts in
-+/etc/ppp/ip-up.d. This can be useful to check for incoming/flush outgoing
-+mail, without the necessary delay before hangup introduced by diald or such.
-+
-+These scripts break the possibility to connect to multiple ISPs at once, so
-+they are included only here.
-+
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/011_scripts_redialer.diff b/obsolete-buildroot/sources/openwrt/patches/ppp/011_scripts_redialer.diff
deleted file mode 100644
index 657f566c9d..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/011_scripts_redialer.diff
+++ /dev/null
@@ -1,152 +0,0 @@
---- ppp-2.4.0b4.orig/scripts/redialer
-+++ ppp-2.4.0b4/scripts/redialer
-@@ -1,96 +1,69 @@
- #!/bin/sh
--###################################################################
- #
--# These parameters control the attack dialing sequence.
-+# A chatscript that will attempt to dial multiple numbers in sequence, until
-+# you get connected.
- #
--# Maximum number of attempts to reach the telephone number(s)
--MAX_ATTEMPTS=10
--
--# Delay between each of the attempts. This is a parameter to sleep
--# so use "15s" for 15 seconds, "1m" for 1 minute, etc.
--SLEEP_DELAY=15s
--
--###################################################################
-+# To use: edit /etc/peers/provider, and change the connect line to read:
-+# connect "/usr/local/bin/redialer"
- #
--# This is a list of telephone numbers. Add new numbers if you wish
--# and see the function 'callall' below for the dial process.
--PHONE1=555-1212
--PHONE2=411
-+# See below for configuration.
-
--###################################################################
-+# This is a list of chatscripts to use to get connected, and (optional)
-+# telephone numbers to call for each of those chatscripts.
- #
--# If you use the ppp-on script, then these are passed to this routine
--# automatically. There is no need to define them here. If not, then
--# you will need to set the values.
--#
--ACCOUNT=my_account_name
--PASSWORD=my_password
-+# Note that in the chatscripts, you may use #NUMBER#, this will be replaced
-+# with the number it is calling. You might want to use this to only have one
-+# chatscript that is used for all numbers, or you might need multiple
-+# chatscripts.
-
--###################################################################
--#
--# Function to initialize the modem and ensure that it is in command
--# state. This may not be needed, but it doesn't hurt.
--#
--function initialize
--{
-- chat -v TIMEOUT 3 '' AT 'OK-+++\c-OK'
-- return
--}
-+PHONE1=123456789
-+CHAT1=/etc/chatscripts/provider
-
--###################################################################
--#
--# Script to dial a telephone
--#
--function callnumber
--{
--chat -v \
-- ABORT '\nBUSY\r' \
-- ABORT '\nNO ANSWER\r' \
-- ABORT '\nRINGING\r\n\r\nRINGING\r' \
-- '' ATDT$1 \
-- CONNECT '' \
-- ogin:--ogin: $ACCOUNT \
-- assword: $PASSWORD
--#
--# If the connection was successful then end the whole script with a
--# success.
--#
-- if [ "$?" = "0" ]; then
-- exit 0
-- fi
-+PHONE2=912345678
-+CHAT2=/etc/chatscripts/provider
-
-- return
--}
-+PHONE3=891234567
-+CHAT3=/etc/chatscripts/provider
-
--###################################################################
--#
--# Script to dial any telephone number
--#
--function callall
--{
--# echo "dialing attempt number: $1" >/dev/console
-- callnumber $PHONE1
--# callnumber $PHONE2
--}
-+PHONE4=789123456
-+CHAT4=/etc/chatscripts/provider
-
--###################################################################
--#
--# Initialize the modem to ensure that it is in the command state
--#
--initialize
--if [ ! "$?" = "0" ]; then
-- exit 1
--fi
-+PHONE5=001234567
-+CHAT5=/etc/chatscripts/provider
-
-+# How long to sleep between retries:
- #
--# Dial telephone numbers until one answers
--#
-+# Note that this is a parameter to sleep so use "15s" for 15 seconds,
-+# "1m" for 1 minute, etc
-+SLEEP_DELAY=1s
-+
-+# The code below does the dialing.
-+
- attempt=0
- while : ; do
-- attempt=`expr $attempt + 1`
-- callall $attempt
-- if [ "$attempt" = "$MAX_ATTEMPTS" ]; then
-- exit 1
-- fi
-- sleep "$SLEEP_DELAY"
-+ attempt=`expr $attempt + 1`
-+ NUMBER=`eval echo '$PHONE'$attempt`
-+ CHAT=`eval echo '$CHAT'$attempt`
-+ if [ ! "$CHAT" ]; then
-+ attempt=0
-+ else
-+ logger "Dialing attempt number: $attempt"
-+ sed s/#NUMBER#/$NUMBER/ $CHAT >/etc/chatscripts/tmpchat
-+ /usr/sbin/chat -v -f /etc/chatscripts/tmpchat
-+ rm -f /etc/chatscripts/tmpchat
-+ case $? in
-+ 0) logger Connection established ; exit 0;;
-+ 1) logger chat: exit 1, see manpage for details. ; exit 1;;
-+ 2) logger chat: exit 2, see manpage for details. ; exit 2;;
-+ 3) logger chat: exit 3, see manpage for details. ;;
-+ 4) logger Line busy. ;;
-+ 5) logger No Carrier. ;;
-+ 6) logger A call is coming. Exiting! ; exit 1;;
-+ 7) logger No dialtone. ;;
-+ 8) logger An error occured. Exiting! ; exit 1;;
-+ *) logger chat: exit $?, see manpage for details. ;;
-+ esac
-+ logger "Waiting $SLEEP_DELAY seconds before next try."
-+ sleep $SLEEP_DELAY
-+ fi
- done
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/018_ip-up_option.diff b/obsolete-buildroot/sources/openwrt/patches/ppp/018_ip-up_option.diff
deleted file mode 100644
index 0dee9248e8..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/018_ip-up_option.diff
+++ /dev/null
@@ -1,98 +0,0 @@
---- ppp-2.4.1/pppd/ipcp.c Thu Mar 8 06:11:12 2001
-+++ ppp-2.4.1-new/pppd/ipcp.c Tue Jun 19 15:35:36 2001
-@@ -1734,7 +1734,7 @@
- */
- if (ipcp_script_state == s_down && ipcp_script_pid == 0) {
- ipcp_script_state = s_up;
-- ipcp_script(_PATH_IPUP);
-+ ipcp_script(path_ipup);
- }
- }
-
-@@ -1777,7 +1777,7 @@
- /* Execute the ip-down script */
- if (ipcp_script_state == s_up && ipcp_script_pid == 0) {
- ipcp_script_state = s_down;
-- ipcp_script(_PATH_IPDOWN);
-+ ipcp_script(path_ipdown);
- }
- }
-
-@@ -1828,13 +1828,13 @@
- case s_up:
- if (ipcp_fsm[0].state != OPENED) {
- ipcp_script_state = s_down;
-- ipcp_script(_PATH_IPDOWN);
-+ ipcp_script(path_ipdown);
- }
- break;
- case s_down:
- if (ipcp_fsm[0].state == OPENED) {
- ipcp_script_state = s_up;
-- ipcp_script(_PATH_IPUP);
-+ ipcp_script(path_ipup);
- }
- break;
- }
-
---- ppp-2.4.1/pppd/main.c Tue Mar 13 06:56:19 2001
-+++ ppp-2.4.1-new/pppd/main.c Tue Jun 19 15:35:36 2001
-@@ -233,6 +233,9 @@
- struct protent *protp;
- char numbuf[16];
-
-+ strlcpy(path_ipup, "/etc/ppp/ip-up", sizeof(path_ipup));
-+ strlcpy(path_ipdown, "/etc/ppp/ip-down", sizeof(path_ipdown));
-+
- link_stats_valid = 0;
- new_phase(PHASE_INITIALIZE);
-
-
---- ppp-2.4.1/pppd/options.c Tue Mar 13 06:56:19 2001
-+++ ppp-2.4.1-new/pppd/options.c Tue Jun 19 15:38:32 2001
-@@ -85,6 +85,8 @@
- bool dump_options; /* print out option values */
- bool dryrun; /* print out option values and exit */
- char *domain; /* domain name set by domain option */
-+char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
-+char path_ipdown[MAXPATHLEN];/* pathname of ip-down script */
-
- extern option_t auth_options[];
- extern struct stat devstat;
-@@ -231,6 +233,12 @@
- "Print out option values after parsing all options", 1 },
- { "dryrun", o_bool, &dryrun,
- "Stop after parsing, printing, and checking options", 1 },
-+ { "ip-up-script", o_string, path_ipup,
-+ "Set pathname of ip-up script",
-+ OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
-+ { "ip-down-script", o_string, path_ipdown,
-+ "Set pathname of ip-down script",
-+ OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
-
- #ifdef HAVE_MULTILINK
- { "multilink", o_bool, &multilink,
-
---- ppp-2.4.1/pppd/pathnames.h Thu Mar 8 06:15:37 2001
-+++ ppp-2.4.1-new/pppd/pathnames.h Tue Jun 19 15:35:36 2001
-@@ -21,8 +21,6 @@
- #define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets"
- #define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets"
- #define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options"
--#define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up"
--#define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down"
- #define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
- #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
- #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
-
---- ppp-2.4.1/pppd/pppd.h Tue Mar 13 06:54:37 2001
-+++ ppp-2.4.1-new/pppd/pppd.h Tue Jun 19 15:39:39 2001
-@@ -272,6 +272,8 @@
- extern char *bundle_name; /* bundle name for multilink */
- extern bool dump_options; /* print out option values */
- extern bool dryrun; /* check everything, print options, exit */
-+extern char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
-+extern char path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
-
- #ifdef PPP_FILTER
- extern struct bpf_program pass_filter; /* Filter for pkts to pass */
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/057_pppoe-interface-change b/obsolete-buildroot/sources/openwrt/patches/ppp/057_pppoe-interface-change
deleted file mode 100644
index cca5a0e67e..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/057_pppoe-interface-change
+++ /dev/null
@@ -1,78 +0,0 @@
---- ppp/pppd/plugins/rp-pppoe/plugin.c.orig 2003-04-07 02:09:05.000000000 +0200
-+++ ppp/pppd/plugins/rp-pppoe/plugin.c 2003-12-03 22:15:07.000000000 +0100
-@@ -114,6 +114,57 @@
- return 1;
- }
-
-+/* from <linux/if.h> */
-+#define IFF_UP 0x1
-+#define IFF_RUNNING 0x40
-+
-+static short ifrflags_old;
-+
-+static int interface_change(const char* ifname, int up)
-+{
-+ int fd;
-+ struct ifreq ifr;
-+
-+ if (!up && ifrflags_old != 0) {
-+ return 0;
-+ }
-+
-+ fd = socket(AF_INET, SOCK_DGRAM, 0);
-+ if (fd < 0) {
-+ warn("socket(AF_INET, SOCK_DGRAM, 0): %s", strerror(errno));
-+ return -1;
-+ }
-+
-+ strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
-+ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
-+ warn("%s: unknown interface: %s", ifname, strerror(errno));
-+ return -1;
-+ }
-+ strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
-+ if (up) {
-+ ifrflags_old = ifr.ifr_flags & (IFF_UP | IFF_RUNNING);
-+ ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
-+ } else {
-+ ifr.ifr_flags &= ~(IFF_UP | IFF_RUNNING);
-+ }
-+ if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) {
-+ warn("SIOCSIFFLAGS: %s", strerror(errno));
-+ return -1;
-+ }
-+ close(fd);
-+ return 0;
-+}
-+
-+static int interface_up (const char *ifname)
-+{
-+ return interface_change(ifname,1);
-+}
-+
-+static int interface_down (const char* ifname)
-+{
-+ return interface_change(ifname,0);
-+}
-+
- /**********************************************************************
- * %FUNCTION: PPPOEConnectDevice
- * %ARGUMENTS:
-@@ -142,6 +193,8 @@
- conn->peerEth[i] = (unsigned char) mac[i];
- }
- } else {
-+ if (interface_up(conn->ifName) < 0)
-+ return -1;
- discovery(conn);
- if (conn->discoveryState != STATE_SESSION) {
- fatal("Unable to complete PPPoE Discovery");
-@@ -243,6 +296,8 @@
- return;
- }
- close(conn->sessionSocket);
-+ if (interface_down(conn->ifName) < 0)
-+ warn("We brought %s up but failed to take it down",conn->ifName);
- }
-
- static void
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/auth_hook_segfault b/obsolete-buildroot/sources/openwrt/patches/ppp/auth_hook_segfault
deleted file mode 100644
index 59007efafd..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/auth_hook_segfault
+++ /dev/null
@@ -1,33 +0,0 @@
-To: md@linux.it, mjt@corpit.ru
-Subject: pppd-auth-hook.patch
-Message-Id: <20040604231517.3E9AD11DC4@paltus.tls.msk.ru>
-Date: Sat, 5 Jun 2004 03:15:17 +0400 (MSD)
-From: mjt@corpit.ru (Michael Tokarev)
-
-The patch below fixes pppd segfault when using auth_hook that sets
-options for the user (use-after-free problem).
-
-/mjt
-
---- ppp/pppd/auth.c.orig Mon Jun 23 18:12:04 2003
-+++ ppp/pppd/auth.c Sat Jun 5 03:11:36 2004
-@@ -1251,14 +1251,14 @@
- if (pap_auth_hook) {
- ret = (*pap_auth_hook)(user, passwd, msg, &addrs, &opts);
- if (ret >= 0) {
-+ /* note: set_allowed_addrs() saves opts (but not addrs): don't free it! */
- if (ret)
- set_allowed_addrs(unit, addrs, opts);
-- BZERO(passwd, sizeof(passwd));
-+ else if (opts != 0)
-+ free_wordlist(opts);
- if (addrs != 0)
- free_wordlist(addrs);
-- if (opts != 0) {
-- free_wordlist(opts);
-- }
-+ BZERO(passwd, sizeof(passwd));
- return ret? UPAP_AUTHACK: UPAP_AUTHNAK;
- }
- }
-
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/cifdefroute.dif b/obsolete-buildroot/sources/openwrt/patches/ppp/cifdefroute.dif
deleted file mode 100644
index 263b674f99..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/cifdefroute.dif
+++ /dev/null
@@ -1,283 +0,0 @@
---- ppp/pppd/ipcp.c Wed May 31 17:20:41 2000
-+++ ppp/pppd/ipcp.c Wed May 31 17:27:19 2000
-@@ -145,7 +145,17 @@
- { "-defaultroute", o_bool, &ipcp_allowoptions[0].default_route,
- "disable defaultroute option", OPT_A2COPY,
- &ipcp_wantoptions[0].default_route },
-
-+#ifdef __linux__
-+ { "replacedefaultroute", o_bool,
-+ &ipcp_wantoptions[0].replace_default_route,
-+ "Replace default route", 1
-+ },
-+ { "noreplacedefaultroute", o_bool,
-+ &ipcp_allowoptions[0].replace_default_route,
-+ "Never replace default route", OPT_A2COPY,
-+ &ipcp_wantoptions[0].replace_default_route },
-+#endif
- { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp,
- "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp },
- { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
-@@ -195,7 +205,7 @@
- ip_active_pkt
- };
-
--static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t));
-+static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t, bool));
- static void ipcp_script __P((char *)); /* Run an up/down script */
- static void ipcp_script_done __P((void *));
-
-@@ -1344,7 +1354,12 @@
- if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE))
- return 0;
- if (wo->default_route)
-+#ifndef __linux__
- if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
-+#else
-+ if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[u] = 1;
- if (wo->proxy_arp)
- if (sifproxyarp(u, wo->hisaddr))
-@@ -1420,7 +1435,8 @@
- */
- if (demand) {
- if (go->ouraddr != wo->ouraddr || ho->hisaddr != wo->hisaddr) {
-- ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr);
-+ ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr,
-+ wo->replace_default_route);
- if (go->ouraddr != wo->ouraddr) {
- warn("Local IP address changed to %I", go->ouraddr);
- script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr));
-@@ -1445,7 +1461,12 @@
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -1492,7 +1513,12 @@
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
-+#ifndef __linux__
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
-+#else
-+ if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
-+ wo->replace_default_route))
-+#endif
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
-@@ -1559,7 +1585,7 @@
- sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
- sifdown(f->unit);
- ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
-- ipcp_hisoptions[f->unit].hisaddr);
-+ ipcp_hisoptions[f->unit].hisaddr, 0);
- }
-
- /* Execute the ip-down script */
-@@ -1575,16 +1601,25 @@
- * proxy arp entries, etc.
- */
- static void
--ipcp_clear_addrs(unit, ouraddr, hisaddr)
-+ipcp_clear_addrs(unit, ouraddr, hisaddr, replacedefaultroute)
- int unit;
- u_int32_t ouraddr; /* local address */
- u_int32_t hisaddr; /* remote address */
-+ bool replacedefaultroute;
- {
- if (proxy_arp_set[unit]) {
- cifproxyarp(unit, hisaddr);
- proxy_arp_set[unit] = 0;
- }
-- if (default_route_set[unit]) {
-+ /* If replacedefaultroute, sifdefaultroute will be called soon
-+ * with replacedefaultroute set and that will overwrite the current
-+ * default route. This is the case only when doing demand, otherwise
-+ * during demand, this cifdefaultroute would restore the old default
-+ * route which is not what we want in this case. In the non-demand
-+ * case, we'll delete the default route and restore the old if there
-+ * is one saved by an sifdefaultroute with replacedefaultroute.
-+ */
-+ if (!replacedefaultroute && default_route_set[unit]) {
- cifdefaultroute(unit, ouraddr, hisaddr);
- default_route_set[unit] = 0;
- }
---- ppp/pppd/ipcp.h Wed May 31 17:20:41 2000
-+++ ppp/pppd/ipcp.h Wed May 31 15:56:17 2000
-@@ -47,6 +47,7 @@
- bool old_addrs; /* Use old (IP-Addresses) option? */
- bool req_addr; /* Ask peer to send IP address? */
- bool default_route; /* Assign default route through interface? */
-+ bool replace_default_route; /* Replace default route through interface? */
- bool proxy_arp; /* Make proxy ARP entry for peer? */
- bool neg_vj; /* Van Jacobson Compression? */
- bool old_vj; /* use old (short) form of VJ option? */
---- ppp/pppd/pppd.8 Wed May 31 17:20:41 2000
-+++ ppp/pppd/pppd.8 Wed May 31 15:56:17 2000
-@@ -99,6 +99,13 @@
- This entry is removed when the PPP connection is broken. This option
- is privileged if the \fInodefaultroute\fR option has been specified.
- .TP
-+.B replacedefaultroute
-+This option is a flag to the defaultroute option. If defaultroute is
-+set and this flag is also set, pppd replaces an existing default route
-+with the new default route.
-+
-+
-+.TP
- .B disconnect \fIscript
- Run the executable or shell command specified by \fIscript\fR after
- pppd has terminated the link. This script could, for example, issue
-@@ -589,7 +596,12 @@
- .TP
- .B nodefaultroute
- Disable the \fIdefaultroute\fR option. The system administrator who
--wishes to prevent users from creating default routes with pppd
-+wishes to prevent users from adding a default route with pppd
-+can do so by placing this option in the /etc/ppp/options file.
-+.TP
-+.B noreplacedefaultroute
-+Disable the \fIreplacedefaultroute\fR option. The system administrator who
-+wishes to prevent users from replacing a default route with pppd
- can do so by placing this option in the /etc/ppp/options file.
- .TP
- .B nodeflate
---- ppp/pppd/pppd.h Wed May 31 17:20:41 2000
-+++ ppp/pppd/pppd.h Wed May 31 15:56:17 2000
-@@ -416,7 +416,11 @@
- int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
- #endif
-+#ifndef __linux__
- int sifdefaultroute __P((int, u_int32_t, u_int32_t));
-+#else
-+int sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt));
-+#endif
- /* Create default route through i/f */
- int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
---- ppp/pppd/sys-linux.c Wed May 31 17:20:41 2000
-+++ ppp/pppd/sys-linux.c Wed May 31 17:37:23 2000
-@@ -143,6 +143,8 @@
-
- static int if_is_up; /* Interface has been marked up */
- static u_int32_t default_route_gateway; /* Gateway for default route added */
-+static struct rtentry old_def_rt; /* Old default route */
-+static int default_rt_repl_rest; /* replace and restore old default rt */
- static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
- static char proxy_arp_dev[16]; /* Device for proxy arp entry */
- static u_int32_t our_old_addr; /* for detecting address changes */
-@@ -1209,6 +1211,9 @@
- p = NULL;
- }
-
-+ SET_SA_FAMILY (rt->rt_dst, AF_INET);
-+ SET_SA_FAMILY (rt->rt_gateway, AF_INET);
-+
- SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
- SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
- SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-@@ -1278,19 +1283,53 @@
- /********************************************************************
- *
- * sifdefaultroute - assign a default route through the address given.
-+ *
-+ * If the global default_rt_repl_rest flag is set, then this function
-+ * already replaced the original system defaultroute with some other
-+ * route and it should just replace the current defaultroute with
-+ * another one, without saving the current route. Use: demand mode,
-+ * when pppd sets first a defaultroute it it's temporary ppp0 addresses
-+ * and then changes the temporary addresses to the addresses for the real
-+ * ppp connection when it has come up.
- */
-
--int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-+int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway, bool replace)
- {
-- struct rtentry rt;
--
-- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
-- u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
-+ struct rtentry rt, tmp_rt;
-+ struct rtentry *del_rt = NULL;
-
-- if (old_gateway != gateway)
-- error("not replacing existing default route to %s [%I]",
-- rt.rt_dev, old_gateway);
-- return 0;
-+
-+ if (default_rt_repl_rest) {
-+ /* We have already reclaced the original defaultroute, if we
-+ * are called again, we will delete the current default route
-+ * and set the new default route in this function.
-+ * - this is normally only the case the doing demand: */
-+ if (defaultroute_exists( &tmp_rt ))
-+ del_rt = &tmp_rt;
-+ } else if ( defaultroute_exists( &old_def_rt ) &&
-+ strcmp( old_def_rt.rt_dev, ifname ) != 0) {
-+ /* We did not yet replace an existing default route, let's
-+ * check if we should save and replace a default route:
-+ */
-+ u_int32_t old_gateway = SIN_ADDR(old_def_rt.rt_gateway);
-+
-+ if (old_gateway != gateway) {
-+ if (!replace) {
-+ error("not replacing default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ return 0;
-+ } else {
-+ // we need to copy rt_dev because we need it permanent too:
-+ char * tmp_dev = malloc(strlen(old_def_rt.rt_dev)+1);
-+ strcpy(tmp_dev, old_def_rt.rt_dev);
-+ old_def_rt.rt_dev = tmp_dev;
-+
-+ notice("replacing old default route to %s [%I]",
-+ old_def_rt.rt_dev, old_gateway);
-+ default_rt_repl_rest = 1;
-+ del_rt = &old_def_rt;
-+ }
-+ }
- }
-
- memset (&rt, '\0', sizeof (rt));
-@@ -1310,6 +1349,12 @@
- error("default route ioctl(SIOCADDRT): %m(%d)", errno);
- return 0;
- }
-+ if (default_rt_repl_rest && del_rt)
-+ if (ioctl(sock_fd, SIOCDELRT, del_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("del old default route ioctl(SIOCDELRT): %m(%d)", errno);
-+ return 0;
-+ }
-
- default_route_gateway = gateway;
- return 1;
-@@ -1344,6 +1389,16 @@
- error("default route ioctl(SIOCDELRT): %m (%d)", errno);
- return 0;
- }
-+ }
-+ if (default_rt_repl_rest) {
-+ notice("restoring old default route to %s [%I]",
-+ old_def_rt.rt_dev, SIN_ADDR(old_def_rt.rt_gateway));
-+ if (ioctl(sock_fd, SIOCADDRT, &old_def_rt) < 0) {
-+ if ( ! ok_error ( errno ))
-+ error("restore default route ioctl(SIOCADDRT): %m(%d)", errno);
-+ return 0;
-+ }
-+ default_rt_repl_rest = 0;
- }
-
- return 1;
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/close_devfd b/obsolete-buildroot/sources/openwrt/patches/ppp/close_devfd
deleted file mode 100644
index 987d964aae..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/close_devfd
+++ /dev/null
@@ -1,17 +0,0 @@
-Ensure that the fd returned by the connect method is closed before
-running external programs.
-
-http://article.gmane.org/gmane.linux.ppp/1371
-
-diff -ruNp ppp.orig/pppd/main.c ppp/pppd/main.c
---- ppp.orig/pppd/main.c 2004-07-12 12:55:30.000000000 +0200
-+++ ppp/pppd/main.c 2004-07-12 12:55:25.000000000 +0200
-@@ -1662,6 +1662,8 @@ run_program(prog, args, must_exist, done
- closelog();
- if (the_channel->close)
- (*the_channel->close)();
-+ else
-+ close(devfd);
-
- /* Don't pass handles to the PPP device, even by accident. */
- dup2(fd_devnull, 0);
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds b/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds
deleted file mode 100644
index 39208ab4db..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds
+++ /dev/null
@@ -1,34 +0,0 @@
-sys_init() will open a socket and keep it open for the whole like of the
-process. If pppd is started without all standard fds open then the socket
-will get one of their numbers, which will be clobbered later by the
-/dev/null fd duplicated by main().
-
-See Debian bug #235192.
-
-diff -ruN ppp.orig/pppd/main.c ppp/pppd/main.c
---- ppp.orig/pppd/main.c 2004-02-29 18:50:12.000000000 +0100
-+++ ppp/pppd/main.c 2004-02-29 18:48:56.000000000 +0100
-@@ -385,11 +385,6 @@
- if (dryrun)
- die(0);
-
-- /*
-- * Initialize system-dependent stuff.
-- */
-- sys_init();
--
- /* Make sure fds 0, 1, 2 are open to somewhere. */
- fd_devnull = open(_PATH_DEVNULL, O_RDWR);
- if (fd_devnull < 0)
-@@ -401,6 +396,11 @@
- fd_devnull = i;
- }
-
-+ /*
-+ * Initialize system-dependent stuff.
-+ */
-+ sys_init();
-+
- #ifdef USE_TDB
- pppdb = tdb_open(_PATH_PPPDB, 0, 0, O_RDWR|O_CREAT, 0644);
- if (pppdb != NULL) {
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/no_crypt_hack b/obsolete-buildroot/sources/openwrt/patches/ppp/no_crypt_hack
deleted file mode 100644
index 501409ea9b..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/no_crypt_hack
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -ruN ppp.orig/pppd/auth.c ppp/pppd/auth.c
---- ppp.orig/pppd/auth.c 2003-06-12 02:01:21.000000000 +0200
-+++ ppp/pppd/auth.c 2003-12-02 14:48:40.000000000 +0100
-@@ -1292,8 +1292,10 @@
- }
- if (secret[0] != 0 && !login_secret) {
- /* password given in pap-secrets - must match */
-+#ifndef NO_CRYPT_HACK
- if ((cryptpap || strcmp(passwd, secret) != 0)
- && strcmp(crypt(passwd, secret), secret) != 0)
-+#endif
- ret = UPAP_AUTHNAK;
- }
- }
-@@ -1495,8 +1497,10 @@
- /*
- * If no passwd, don't let them login.
- */
-+#ifndef NO_CRYPT_HACK
- if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2
- || strcmp(crypt(passwd, pw->pw_passwd), pw->pw_passwd) != 0)
-+#endif
- return (UPAP_AUTHNAK);
-
- #endif /* #ifdef USE_PAM */
-diff -ruN ppp.orig/pppd/Makefile.linux ppp/pppd/Makefile.linux
---- ppp.orig/pppd/Makefile.linux 2003-11-27 23:00:22.000000000 +0100
-+++ ppp/pppd/Makefile.linux 2003-12-02 14:47:53.000000000 +0100
-@@ -116,12 +116,16 @@
- #LIBS += -lshadow $(LIBS)
- endif
-
-+ifdef NO_CRYPT_HACK
-+CFLAGS += -DNO_CRYPT_HACK
-+else
- ifneq ($(wildcard /usr/include/crypt.h),)
- CFLAGS += -DHAVE_CRYPT_H=1
- endif
- ifneq ($(wildcard /usr/lib/libcrypt.*),)
- LIBS += -lcrypt
- endif
-+endif
-
- ifdef NEEDDES
- ifndef USE_CRYPT
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.3.11-oedod.dif b/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.3.11-oedod.dif
deleted file mode 100644
index e024696697..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.3.11-oedod.dif
+++ /dev/null
@@ -1,172 +0,0 @@
---- ppp/pppd/demand.c
-+++ ppp/pppd/demand.c 2000/06/28 14:54:04
-@@ -25,6 +25,8 @@
- #include <errno.h>
- #include <fcntl.h>
- #include <netdb.h>
-+#include <unistd.h>
-+#include <syslog.h>
- #include <sys/param.h>
- #include <sys/types.h>
- #include <sys/wait.h>
-@@ -32,6 +34,8 @@
- #include <sys/resource.h>
- #include <sys/stat.h>
- #include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <arpa/inet.h>
- #ifdef PPP_FILTER
- #include <net/if.h>
- #include <net/bpf.h>
-@@ -210,6 +214,14 @@
- int c, rv;
-
- rv = 0;
-+
-+/* check for synchronous connection... */
-+
-+ if ( (p[0] == 0xFF) && (p[1] == 0x03) ) {
-+ rv = loop_frame(p,n);
-+ return rv;
-+ }
-+
- for (; n > 0; --n) {
- c = *p++;
- if (c == PPP_FLAG) {
-@@ -288,17 +300,102 @@
- * loopback, now that the real serial link is up.
- */
- void
--demand_rexmit(proto)
-+demand_rexmit(proto, newip)
- int proto;
-+ u_int32_t newip;
- {
- struct packet *pkt, *prev, *nextpkt;
-+ unsigned short checksum;
-+ unsigned short pkt_checksum = 0;
-+ unsigned iphdr;
-+ struct timeval tv;
-+ char cv = 0;
-+ char ipstr[16];
-
- prev = NULL;
- pkt = pend_q;
- pend_q = NULL;
-+ tv.tv_sec = 1;
-+ tv.tv_usec = 0;
-+ select(0,NULL,NULL,NULL,&tv); /* Sleep for 1 Seconds */
- for (; pkt != NULL; pkt = nextpkt) {
- nextpkt = pkt->next;
- if (PPP_PROTOCOL(pkt->data) == proto) {
-+ if ( (proto == PPP_IP) && newip ) {
-+ /* Get old checksum */
-+
-+ iphdr = (pkt->data[4] & 15) << 2;
-+ checksum = *((unsigned short *) (pkt->data+14));
-+ if (checksum == 0xFFFF) {
-+ checksum = 0;
-+ }
-+
-+
-+ if (pkt->data[13] == 17) {
-+ pkt_checksum = *((unsigned short *) (pkt->data+10+iphdr));
-+ if (pkt_checksum) {
-+ cv = 1;
-+ if (pkt_checksum == 0xFFFF) {
-+ pkt_checksum = 0;
-+ }
-+ }
-+ else {
-+ cv = 0;
-+ }
-+ }
-+
-+ if (pkt->data[13] == 6) {
-+ pkt_checksum = *((unsigned short *) (pkt->data+20+iphdr));
-+ cv = 1;
-+ if (pkt_checksum == 0xFFFF) {
-+ pkt_checksum = 0;
-+ }
-+ }
-+
-+ /* Delete old Source-IP-Address */
-+ checksum -= *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ checksum -= *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ pkt_checksum -= *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ pkt_checksum -= *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ /* Change Source-IP-Address */
-+ * ((u_int32_t *) (pkt->data + 16)) = newip;
-+
-+ /* Add new Source-IP-Address */
-+ checksum += *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ checksum += *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ pkt_checksum += *((unsigned short *) (pkt->data+16)) ^ 0xFFFF;
-+ pkt_checksum += *((unsigned short *) (pkt->data+18)) ^ 0xFFFF;
-+
-+ /* Write new checksum */
-+ if (!checksum) {
-+ checksum = 0xFFFF;
-+ }
-+ *((unsigned short *) (pkt->data+14)) = checksum;
-+ if (pkt->data[13] == 6) {
-+ *((unsigned short *) (pkt->data+20+iphdr)) = pkt_checksum;
-+ }
-+ if (cv && (pkt->data[13] == 17) ) {
-+ *((unsigned short *) (pkt->data+10+iphdr)) = pkt_checksum;
-+ }
-+
-+ /* Log Packet */
-+ strcpy(ipstr,inet_ntoa(*( (struct in_addr *) (pkt->data+16))));
-+ if (pkt->data[13] == 1) {
-+ syslog(LOG_INFO,"Open ICMP %s -> %s\n",
-+ ipstr,
-+ inet_ntoa(*( (struct in_addr *) (pkt->data+20))));
-+ } else {
-+ syslog(LOG_INFO,"Open %s %s:%d -> %s:%d\n",
-+ pkt->data[13] == 6 ? "TCP" : "UDP",
-+ ipstr,
-+ ntohs(*( (short *) (pkt->data+iphdr+4))),
-+ inet_ntoa(*( (struct in_addr *) (pkt->data+20))),
-+ ntohs(*( (short *) (pkt->data+iphdr+6))));
-+ }
-+ }
- output(0, pkt->data, pkt->length);
- free(pkt);
- } else {
---- ppp/pppd/ipcp.c
-+++ ppp/pppd/ipcp.c 2000/06/28 12:32:05
-@@ -1454,7 +1454,7 @@
- proxy_arp_set[f->unit] = 1;
-
- }
-- demand_rexmit(PPP_IP);
-+ demand_rexmit(PPP_IP,go->ouraddr);
- sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
-
- } else {
---- ppp/pppd/ipv6cp.c
-+++ ppp/pppd/ipv6cp.c 2000/06/28 12:32:06
-@@ -1153,7 +1153,7 @@
- }
-
- }
-- demand_rexmit(PPP_IPV6);
-+ demand_rexmit(PPP_IPV6,0);
- sifnpmode(f->unit, PPP_IPV6, NPMODE_PASS);
-
- } else {
---- ppp/pppd/pppd.h
-+++ ppp/pppd/pppd.h 2000/06/28 12:32:06
-@@ -359,7 +359,7 @@
- void demand_block __P((void)); /* set all NPs to queue up packets */
- void demand_unblock __P((void)); /* set all NPs to pass packets */
- void demand_discard __P((void)); /* set all NPs to discard packets */
--void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
-+void demand_rexmit __P((int, u_int32_t)); /* retransmit saved frames for an NP*/
- int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
- int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
-
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.4.2-stripMSdomain b/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.4.2-stripMSdomain
deleted file mode 100644
index d52e38645d..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/ppp-2.4.2-stripMSdomain
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -ruN ppp.orig/pppd/chap-new.c ppp/pppd/chap-new.c
---- ppp.orig/pppd/chap-new.c 2003-11-27 23:25:17.000000000 +0100
-+++ ppp/pppd/chap-new.c 2003-12-02 12:26:21.000000000 +0100
-@@ -57,6 +57,7 @@
- int chap_timeout_time = 3;
- int chap_max_transmits = 10;
- int chap_rechallenge_time = 0;
-+int chapms_strip_domain = 0;
-
- /*
- * Command-line options.
-@@ -68,6 +69,8 @@
- "Set max #xmits for challenge", OPT_PRIO },
- { "chap-interval", o_int, &chap_rechallenge_time,
- "Set interval for rechallenge", OPT_PRIO },
-+ { "chapms-strip-domain", o_bool, &chapms_strip_domain,
-+ "Strip the domain prefix before the Username", 1 },
- { NULL }
- };
-
-@@ -338,6 +341,14 @@
- /* Null terminate and clean remote name. */
- slprintf(rname, sizeof(rname), "%.*v", len, name);
- name = rname;
-+
-+ /* strip the MS domain name */
-+ if (chapms_strip_domain && strrchr(rname, '\\')) {
-+ char tmp[MAXNAMELEN+1];
-+
-+ strcpy(tmp, strrchr(rname, '\\') + 1);
-+ strcpy(rname, tmp);
-+ }
- }
-
- if (chap_verify_hook)
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/pppdump-no-deflate b/obsolete-buildroot/sources/openwrt/patches/ppp/pppdump-no-deflate
deleted file mode 100644
index b76b84911c..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/pppdump-no-deflate
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN ppp-2.4.1.uus.orig/pppdump/ppp-comp.h ppp-2.4.1.uus/pppdump/ppp-comp.h
---- ppp-2.4.1.uus.orig/pppdump/ppp-comp.h 1999-03-23 04:21:01.000000000 +0100
-+++ ppp-2.4.1.uus/pppdump/ppp-comp.h 2003-08-09 23:54:49.000000000 +0200
-@@ -37,6 +37,8 @@
- #ifndef DO_BSD_COMPRESS
- #define DO_BSD_COMPRESS 1 /* by default, include BSD-Compress */
- #endif
-+#undef DO_DEFLATE
-+#define DO_DEFLATE 0
- #ifndef DO_DEFLATE
- #define DO_DEFLATE 1 /* by default, include Deflate */
- #endif
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/setevn_call_file b/obsolete-buildroot/sources/openwrt/patches/ppp/setevn_call_file
deleted file mode 100644
index 256b703f79..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/setevn_call_file
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ruN ppp.orig/pppd/options.c ppp/pppd/options.c
---- ppp.orig/pppd/options.c 2004-02-27 19:45:18.000000000 +0100
-+++ ppp/pppd/options.c 2004-02-27 19:44:48.000000000 +0100
-@@ -1448,6 +1448,7 @@
- if ((fname = (char *) malloc(l)) == NULL)
- novm("call file name");
- slprintf(fname, l, "%s%s", _PATH_PEERFILES, arg);
-+ script_setenv("CALL_FILE", arg, 0);
-
- ok = options_from_file(fname, 1, 1, 1);
-
-diff -ruN ppp.orig/pppd/pppd.8 ppp/pppd/pppd.8
---- ppp.orig/pppd/pppd.8 2004-02-27 19:45:18.000000000 +0100
-+++ ppp/pppd/pppd.8 2004-02-27 19:45:13.000000000 +0100
-@@ -1569,6 +1569,9 @@
- .B LINKNAME
- The logical name of the link, set with the \fIlinkname\fR option.
- .TP
-+.B CALL_FILE
-+The value of the \fIcall\fR option.
-+.TP
- .B DNS1
- If the peer supplies DNS server addresses, this variable is set to the
- first DNS server address supplied.
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/syslog_local2 b/obsolete-buildroot/sources/openwrt/patches/ppp/syslog_local2
deleted file mode 100644
index 32a8cead9e..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/syslog_local2
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN ppp.orig/pppd/pppd.h ppp/pppd/pppd.h
---- ppp.orig/pppd/pppd.h 2003-11-28 00:30:27.000000000 +0100
-+++ ppp/pppd/pppd.h 2003-11-28 00:30:20.000000000 +0100
-@@ -812,7 +812,7 @@
- || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
- #define LOG_PPP LOG_LOCAL2
- #else
--#define LOG_PPP LOG_DAEMON
-+#define LOG_PPP LOG_LOCAL2
- #endif
- #endif /* LOG_PPP */
-
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/z01_ppp-2.4.2-openwrt.patch b/obsolete-buildroot/sources/openwrt/patches/ppp/z01_ppp-2.4.2-openwrt.patch
deleted file mode 100644
index e77b004418..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/z01_ppp-2.4.2-openwrt.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-diff -ruN ppp-2.4.2-old/chat/Makefile.linux ppp-2.4.2-new/chat/Makefile.linux
---- ppp-2.4.2-old/chat/Makefile.linux 2004-01-13 04:57:55.000000000 +0100
-+++ ppp-2.4.2-new/chat/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -6,8 +6,9 @@
- CDEF4= -DFNDELAY=O_NDELAY # Old name value
- CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)
-
--COPTS= -O2 -g -pipe $(CDEFS)
--CFLAGS= $(COPTS) $(CDEFS)
-+COPTS = -O2
-+COMPILE_FLAGS = $(CDEFS)
-+CFLAGS = $(COPTS) $(COMPILE_FLAGS)
-
- INSTALL= install
-
-diff -ruN ppp-2.4.2-old/pppd/Makefile.linux ppp-2.4.2-new/pppd/Makefile.linux
---- ppp-2.4.2-old/pppd/Makefile.linux 2003-11-27 22:55:19.000000000 +0100
-+++ ppp-2.4.2-new/pppd/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -47,19 +47,19 @@
- # Uncomment the next line to include support for PPP packet filtering.
- # This requires that the libpcap library and headers be installed
- # and that the kernel driver support PPP packet filtering.
--FILTER=y
-+#FILTER=y
-
- # Uncomment the next line to enable multilink PPP (enabled by default)
- # Linux distributions: Please leave multilink ENABLED in your builds
- # of pppd!
--HAVE_MULTILINK=y
-+#HAVE_MULTILINK=y
-
- # Uncomment the next line to enable the TDB database (enabled by default.)
- # If you enable multilink, then TDB is automatically enabled also.
- # Linux distributions: Please leave TDB ENABLED in your builds.
--USE_TDB=y
-+#USE_TDB=y
-
--HAS_SHADOW=y
-+#HAS_SHADOW=y
- #USE_PAM=y
- #HAVE_INET6=y
-
-@@ -76,7 +76,7 @@
-
- INCLUDE_DIRS= -I../include
-
--COMPILE_FLAGS= -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP
-+COMPILE_FLAGS= -DHAVE_PATHS_H
-
- CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
-@@ -192,7 +192,7 @@
- CFLAGS += -DMAXOCTETS
- endif
-
--INSTALL= install -o root
-+INSTALL= install
-
- all: $(TARGETS)
-
-diff -ruN ppp-2.4.2-old/pppd/plugins/Makefile.linux ppp-2.4.2-new/pppd/plugins/Makefile.linux
---- ppp-2.4.2-old/pppd/plugins/Makefile.linux 2004-01-13 04:56:24.000000000 +0100
-+++ ppp-2.4.2-new/pppd/plugins/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -1,12 +1,16 @@
--CC = gcc
--COPTS = -O2 -g
--CFLAGS = $(COPTS) -I.. -I../../include -fPIC
--LDFLAGS = -shared
--INSTALL = install -o root
-+#CC = gcc
-+COPTS = -O2
-+COMPILE_FLAGS = -I.. -I../../include -fPIC
-+LIBS =
-+
-+INSTALL = install
-+
-+CFLAGS = $(COPTS) $(COMPILE_FLAGS)
-+LDFLAGS = -shared
-
- SUBDIRS := rp-pppoe
- # Uncomment the next line to include the radius authentication plugin
--# SUBDIRS += radius
-+SUBDIRS += radius
- PLUGINS := minconn.so passprompt.so passwordfd.so
-
- # include dependencies if present
-diff -ruN ppp-2.4.2-old/pppd/plugins/radius/Makefile.linux ppp-2.4.2-new/pppd/plugins/radius/Makefile.linux
---- ppp-2.4.2-old/pppd/plugins/radius/Makefile.linux 2002-11-09 12:24:42.000000000 +0100
-+++ ppp-2.4.2-new/pppd/plugins/radius/Makefile.linux 2004-08-23 12:57:38.000000000 +0200
-@@ -5,7 +5,12 @@
-
- MANDIR=/usr/man
- PLUGIN=radius.so radattr.so radrealms.so
--CFLAGS=-I../.. -I../../../include -Iradiusclient/include -O2
-+COPTS = -O2
-+COMPILE_FLAGS = -I../.. -I../../../include -Iradiusclient/include -fPIC
-+LIBS=
-+
-+CFLAGS=$(COPTS) $(COMPILE_FLAGS)
-+LDFLAGS=-lradiusclient
-
- # Uncomment the next line to include support for Microsoft's
- # MS-CHAP authentication protocol.
-@@ -37,29 +42,34 @@
- $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)/man8
-
- radius.so: radiusclient/lib/.libs/libradiusclient.a radius.o
-- gcc -o radius.so -shared radius.o radiusclient/lib/.libs/libradiusclient.a
-+ $(CC) -o radius.so -shared radius.o radiusclient/lib/.libs/libradiusclient.a
-
- radattr.so: radattr.o
-- gcc -o radattr.so -shared radattr.o
-+ $(CC) -o radattr.so -shared radattr.o
-
- radrealms.so: radrealms.o
-- gcc -o radrealms.so -shared radrealms.o
-+ $(CC) -o radrealms.so -shared radrealms.o
-
- radius.o: radius.c
-- gcc $(CFLAGS) -c -o radius.o -fPIC radius.c
-+ $(CC) -c $(CFLAGS) radius.c -o radius.o
-
- radattr.o: radattr.c
-- gcc $(CFLAGS) -c -o radattr.o -fPIC radattr.c
-+ $(CC) -c $(CFLAGS) radattr.c -o radattr.o
-
- radrealms.o: radrealms.c
-- gcc $(CFLAGS) -c -o radrealms.o -fPIC radrealms.c
-+ $(CC) -c $(CFLAGS) radrealms.c -o radrealms.o
-
- radiusclient/lib/.libs/libradiusclient.a:
- test -r radiusclient/Makefile || \
- (cd radiusclient; \
-+ rm -f config.cache ; \
-+ aclocal ; \
-+ autoconf ; \
-+ ac_cv_func_setvbuf_reversed=no \
-+ ac_cv_func_uname=no \
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
-- --enable-shared \
-+ --disable-shared \
- --enable-static)
- $(MAKE) -C radiusclient
-
-diff -ruN ppp-2.4.2-old/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.2-new/pppd/plugins/rp-pppoe/Makefile.linux
---- ppp-2.4.2-old/pppd/plugins/rp-pppoe/Makefile.linux 2004-01-13 04:57:55.000000000 +0100
-+++ ppp-2.4.2-new/pppd/plugins/rp-pppoe/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -16,12 +16,16 @@
- # Version is set ONLY IN THE MAKEFILE! Don't delete this!
- VERSION=3.3
-
--COPTS=-O2 -g
--CFLAGS=$(COPTS) -I../../../include/linux
-+#CC = gcc
-+COPTS = -O2
-+COMPILE_FLAGS = -I../../../include/linux -fPIC
-+
-+CFLAGS = $(COPTS) $(COMPILE_FLAGS)
-+
- all: rp-pppoe.so
-
- rp-pppoe.so: libplugin.a plugin.o
-- gcc -o rp-pppoe.so -shared plugin.o libplugin.a
-+ $(CC) -o rp-pppoe.so -shared plugin.o libplugin.a
-
- install: all
- $(INSTALL) -d -m 755 $(LIBDIR)
-@@ -31,20 +35,20 @@
- rm -f *.o *.so
-
- plugin.o: plugin.c
-- gcc '-DRP_VERSION="$(VERSION)"' $(CFLAGS) -I../../.. -c -o plugin.o -fPIC plugin.c
-+ $(CC) -c $(CFLAGS) plugin.c '-DRP_VERSION="$(VERSION)"' -I../../.. -o plugin.o
-
- libplugin.a: discovery.o if.o common.o debug.o
-- ar -rc $@ $^
-+ $(AR) -rc $@ $^
-
- discovery.o: discovery.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o discovery.o -fPIC discovery.c
-+ $(CC) -c $(CFLAGS) discovery.c '-DVERSION="$(VERSION)"' -o discovery.o
-
- if.o: if.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o if.o -fPIC if.c
-+ $(CC) -c $(CFLAGS) if.c '-DVERSION="$(VERSION)"' -o if.o
-
- debug.o: debug.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o debug.o -fPIC debug.c
-+ $(CC) -c $(CFLAGS) debug.c '-DVERSION="$(VERSION)"' -o debug.o
-
- common.o: common.c
-- gcc $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o common.o -fPIC common.c
-+ $(CC) -c $(CFLAGS) common.c '-DVERSION="$(VERSION)"' -o common.o
-
-diff -ruN ppp-2.4.2-old/pppdump/Makefile.linux ppp-2.4.2-new/pppdump/Makefile.linux
---- ppp-2.4.2-old/pppdump/Makefile.linux 1999-07-26 13:09:29.000000000 +0200
-+++ ppp-2.4.2-new/pppdump/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -1,4 +1,8 @@
--CFLAGS= -O -I../include/net
-+#CC = gcc
-+COPTS = -O
-+COMPILE_FLAGS = -I../include/net
-+CFLAGS= $(COPTS) $(COMPILE_FLAGS)
-+
- OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
- INSTALL= install
-diff -ruN ppp-2.4.2-old/pppstats/Makefile.linux ppp-2.4.2-new/pppstats/Makefile.linux
---- ppp-2.4.2-old/pppstats/Makefile.linux 2002-11-09 12:24:43.000000000 +0100
-+++ ppp-2.4.2-new/pppstats/Makefile.linux 2004-08-23 12:48:50.000000000 +0200
-@@ -7,11 +7,11 @@
- PPPSTATOBJS = pppstats.o
-
- #CC = gcc
--COPTS = -O
-+COPTS = -O2
- COMPILE_FLAGS = -I../include
- LIBS =
-
--INSTALL= install -o root -g daemon
-+INSTALL= install
-
- CFLAGS = $(COPTS) $(COMPILE_FLAGS)
-
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/z02_ppp-2.4.2-stdopt-mppe-mppc-1.1.patch b/obsolete-buildroot/sources/openwrt/patches/ppp/z02_ppp-2.4.2-stdopt-mppe-mppc-1.1.patch
deleted file mode 100644
index d230534639..0000000000
--- a/obsolete-buildroot/sources/openwrt/patches/ppp/z02_ppp-2.4.2-stdopt-mppe-mppc-1.1.patch
+++ /dev/null
@@ -1,1608 +0,0 @@
-diff -ruN ppp-2.4.2.orig/include/linux/ppp-comp.h ppp-2.4.2-stdopt/include/linux/ppp-comp.h
---- ppp-2.4.2.orig/include/linux/ppp-comp.h 2002-12-06 10:49:15.000000000 +0100
-+++ ppp-2.4.2-stdopt/include/linux/ppp-comp.h 2004-01-21 06:51:09.000000000 +0100
-@@ -36,7 +36,7 @@
- */
-
- /*
-- * ==FILEVERSION 20020319==
-+ * ==FILEVERSION 20020715==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
-@@ -86,7 +86,7 @@
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
-- unsigned char *obuf, int isize, int osize);
-+ unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-@@ -107,7 +107,7 @@
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
-- unsigned char *obuf, int osize);
-+ unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-@@ -288,6 +288,33 @@
- opts |= MPPE_OPT_UNKNOWN; \
- } while (/* CONSTCOND */ 0)
-
-+/* MPPE/MPPC definitions by J.D.*/
-+#define MPPE_STATELESS MPPE_H_BIT /* configuration bit H */
-+#define MPPE_40BIT MPPE_L_BIT /* configuration bit L */
-+#define MPPE_56BIT MPPE_M_BIT /* configuration bit M */
-+#define MPPE_128BIT MPPE_S_BIT /* configuration bit S */
-+#define MPPE_MPPC MPPE_C_BIT /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
- /*
- * Definitions for other, as yet unsupported, compression methods.
- */
-diff -ruN ppp-2.4.2.orig/include/net/ppp-comp.h ppp-2.4.2-stdopt/include/net/ppp-comp.h
---- ppp-2.4.2.orig/include/net/ppp-comp.h 2002-12-06 10:49:15.000000000 +0100
-+++ ppp-2.4.2-stdopt/include/net/ppp-comp.h 2004-01-21 06:51:09.000000000 +0100
-@@ -255,6 +255,33 @@
- opts |= MPPE_OPT_UNKNOWN; \
- } while (/* CONSTCOND */ 0)
-
-+/* MPPE/MPPC definitions by J.D.*/
-+#define MPPE_STATELESS MPPE_H_BIT /* configuration bit H */
-+#define MPPE_40BIT MPPE_L_BIT /* configuration bit L */
-+#define MPPE_56BIT MPPE_M_BIT /* configuration bit M */
-+#define MPPE_128BIT MPPE_S_BIT /* configuration bit S */
-+#define MPPE_MPPC MPPE_C_BIT /* configuration bit C */
-+
-+/*
-+ * Definitions for Stac LZS.
-+ */
-+
-+#define CI_LZS 17 /* config option for Stac LZS */
-+#define CILEN_LZS 5 /* length of config option */
-+
-+#define LZS_OVHD 4 /* max. LZS overhead */
-+#define LZS_HIST_LEN 2048 /* LZS history size */
-+#define LZS_MAX_CCOUNT 0x0FFF /* max. coherency counter value */
-+
-+#define LZS_MODE_NONE 0
-+#define LZS_MODE_LCB 1
-+#define LZS_MODE_CRC 2
-+#define LZS_MODE_SEQ 3
-+#define LZS_MODE_EXT 4
-+
-+#define LZS_EXT_BIT_FLUSHED 0x80 /* bit A */
-+#define LZS_EXT_BIT_COMP 0x20 /* bit C */
-+
- /*
- * Definitions for other, as yet unsupported, compression methods.
- */
-diff -ruN ppp-2.4.2.orig/pppd/ccp.c ppp-2.4.2-stdopt/pppd/ccp.c
---- ppp-2.4.2.orig/pppd/ccp.c 2003-05-01 14:30:28.000000000 +0200
-+++ ppp-2.4.2-stdopt/pppd/ccp.c 2004-05-02 14:10:04.000000000 +0200
-@@ -67,13 +67,6 @@
- static char bsd_value[8];
- static char deflate_value[8];
-
--/*
-- * Option variables.
-- */
--#ifdef MPPE
--bool refuse_mppe_stateful = 1; /* Allow stateful mode? */
--#endif
--
- static option_t ccp_option_list[] = {
- { "noccp", o_bool, &ccp_protent.enabled_flag,
- "Disable CCP negotiation" },
-@@ -113,54 +106,87 @@
- "don't allow Predictor-1", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].predictor_1 },
-
-+ { "lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "request Stac LZS", 1, &ccp_allowoptions[0].lzs, OPT_PRIO },
-+ { "+lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "request Stac LZS", 1, &ccp_allowoptions[0].lzs, OPT_ALIAS | OPT_PRIO },
-+ { "nolzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "don't allow Stac LZS", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].lzs },
-+ { "-lzs", o_bool, &ccp_wantoptions[0].lzs,
-+ "don't allow Stac LZS", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].lzs },
-+
- #ifdef MPPE
-- /* MPPE options are symmetrical ... we only set wantoptions here */
-+ { "mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "request MPPC compression", 1, &ccp_allowoptions[0].mppc, OPT_PRIO },
-+ { "+mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "request MPPC compression", 1, &ccp_allowoptions[0].mppc,
-+ OPT_ALIAS | OPT_PRIO },
-+ { "nomppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "don't allow MPPC compression", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppc },
-+ { "-mppc", o_bool, &ccp_wantoptions[0].mppc,
-+ "don't allow MPPC compression", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppc },
-+
- { "require-mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "require MPPE encryption",
-- OPT_PRIO | MPPE_OPT_40 | MPPE_OPT_128 },
-+ "require MPPE encryption", 1, &ccp_allowoptions[0].mppe, OPT_PRIO },
- { "+mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "require MPPE encryption",
-- OPT_ALIAS | OPT_PRIO | MPPE_OPT_40 | MPPE_OPT_128 },
-+ "require MPPE encryption", 1, &ccp_allowoptions[0].mppe,
-+ OPT_ALIAS | OPT_PRIO },
- { "nomppe", o_bool, &ccp_wantoptions[0].mppe,
-- "don't allow MPPE encryption", OPT_PRIO },
-+ "don't allow MPPE encryption", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe },
- { "-mppe", o_bool, &ccp_wantoptions[0].mppe,
-- "don't allow MPPE encryption", OPT_ALIAS | OPT_PRIO },
-+ "don't allow MPPE encryption", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe },
-
-- /* We use ccp_allowoptions[0].mppe as a junk var ... it is reset later */
-- { "require-mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 40-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
-- { "+mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 40-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
-- { "nomppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 40-bit encryption",
-- OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_40, &ccp_wantoptions[0].mppe },
-- { "-mppe-40", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 40-bit encryption",
-- OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_40,
-- &ccp_wantoptions[0].mppe },
--
-- { "require-mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 128-bit encryption", OPT_PRIO | OPT_A2OR | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
-- { "+mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "require MPPE 128-bit encryption",
-- OPT_ALIAS | OPT_PRIO | OPT_A2OR | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
-- { "nomppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 128-bit encryption",
-- OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_128, &ccp_wantoptions[0].mppe },
-- { "-mppe-128", o_bool, &ccp_allowoptions[0].mppe,
-- "don't allow MPPE 128-bit encryption",
-- OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLRB | MPPE_OPT_128,
-- &ccp_wantoptions[0].mppe },
--
-- /* strange one; we always request stateless, but will we allow stateful? */
-- { "mppe-stateful", o_bool, &refuse_mppe_stateful,
-- "allow MPPE stateful mode", OPT_PRIO },
-- { "nomppe-stateful", o_bool, &refuse_mppe_stateful,
-- "disallow MPPE stateful mode", OPT_PRIO | 1 },
-+ { "require-mppe-40", o_bool, &ccp_wantoptions[0].mppe_40,
-+ "require MPPE 40-bit encryption", 1, &ccp_allowoptions[0].mppe_40,
-+ OPT_PRIO },
-+ { "+mppe-40", o_bool, &ccp_wantoptions[0].mppe_40,
-+ "require MPPE 40-bit encryption", 1, &ccp_allowoptions[0].mppe_40,
-+ OPT_ALIAS | OPT_PRIO },
-+ { "nomppe-40", o_bool, &ccp_wantoptions[0].mppe_40,
-+ "don't allow MPPE 40-bit encryption", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_40 },
-+ { "-mppe-40", o_bool, &ccp_wantoptions[0].mppe_40,
-+ "don't allow MPPE 40-bit encryption", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_40 },
-+
-+ { "require-mppe-56", o_bool, &ccp_wantoptions[0].mppe_56,
-+ "require MPPE 56-bit encryption", 1, &ccp_allowoptions[0].mppe_56,
-+ OPT_PRIO },
-+ { "+mppe-56", o_bool, &ccp_wantoptions[0].mppe_56,
-+ "require MPPE 56-bit encryption", 1, &ccp_allowoptions[0].mppe_56,
-+ OPT_ALIAS | OPT_PRIO },
-+ { "nomppe-56", o_bool, &ccp_wantoptions[0].mppe_56,
-+ "don't allow MPPE 56-bit encryption", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_56 },
-+ { "-mppe-56", o_bool, &ccp_wantoptions[0].mppe_56,
-+ "don't allow MPPE 56-bit encryption", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_56 },
-+
-+ { "require-mppe-128", o_bool, &ccp_wantoptions[0].mppe_128,
-+ "require MPPE 128-bit encryption", 1, &ccp_allowoptions[0].mppe_128,
-+ OPT_PRIO },
-+ { "+mppe-128", o_bool, &ccp_wantoptions[0].mppe_128,
-+ "require MPPE 128-bit encryption", 1, &ccp_allowoptions[0].mppe_128,
-+ OPT_ALIAS | OPT_PRIO },
-+ { "nomppe-128", o_bool, &ccp_wantoptions[0].mppe_40,
-+ "don't allow MPPE 128-bit encryption", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_128 },
-+ { "-mppe-128", o_bool, &ccp_wantoptions[0].mppe_128,
-+ "don't allow MPPE 128-bit encryption", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_128 },
-+
-+ { "nomppe-stateful", o_bool, &ccp_wantoptions[0].mppe_stateless,
-+ "disallow MPPE stateful mode", 1, &ccp_allowoptions[0].mppe_stateless,
-+ OPT_PRIO },
-+ { "mppe-stateful", o_bool, &ccp_wantoptions[0].mppe_stateless,
-+ "allow MPPE stateful mode", OPT_PRIOSUB | OPT_A2CLR,
-+ &ccp_allowoptions[0].mppe_stateless },
- #endif /* MPPE */
-
- { NULL }
-@@ -246,7 +272,7 @@
- */
- #define ANY_COMPRESS(opt) ((opt).deflate || (opt).bsd_compress \
- || (opt).predictor_1 || (opt).predictor_2 \
-- || (opt).mppe)
-+ || (opt).lzs || (opt).mppc || (opt).mppe)
-
- /*
- * Local state (mainly for handling reset-reqs and reset-acks).
-@@ -383,6 +409,30 @@
- ccp_allowoptions[0].bsd_bits = BSD_MAX_BITS;
-
- ccp_allowoptions[0].predictor_1 = 1;
-+
-+ ccp_wantoptions[0].lzs = 0; /* Stac LZS - will be enabled in the future */
-+ ccp_wantoptions[0].lzs_mode = LZS_MODE_SEQ;
-+ ccp_wantoptions[0].lzs_hists = 1;
-+ ccp_allowoptions[0].lzs = 0; /* Stac LZS - will be enabled in the future */
-+ ccp_allowoptions[0].lzs_mode = LZS_MODE_SEQ;
-+ ccp_allowoptions[0].lzs_hists = 1;
-+
-+#ifdef MPPE
-+ /* by default allow and request MPPC... */
-+ ccp_wantoptions[0].mppc = ccp_allowoptions[0].mppc = 1;
-+
-+ /* ... and allow but don't request MPPE */
-+ ccp_allowoptions[0].mppe = 1;
-+ ccp_allowoptions[0].mppe_40 = 1;
-+ ccp_allowoptions[0].mppe_56 = 1;
-+ ccp_allowoptions[0].mppe_128 = 1;
-+ ccp_allowoptions[0].mppe_stateless = 1;
-+ ccp_wantoptions[0].mppe = 0;
-+ ccp_wantoptions[0].mppe_40 = 0;
-+ ccp_wantoptions[0].mppe_56 = 0;
-+ ccp_wantoptions[0].mppe_128 = 0;
-+ ccp_wantoptions[0].mppe_stateless = 0;
-+#endif /* MPPE */
- }
-
- /*
-@@ -460,11 +510,11 @@
- if (oldstate == OPENED && p[0] == TERMREQ && f->state != OPENED) {
- notice("Compression disabled by peer.");
- #ifdef MPPE
-- if (ccp_gotoptions[unit].mppe) {
-+ if (ccp_wantoptions[unit].mppe) {
- error("MPPE disabled, closing LCP");
- lcp_close(unit, "MPPE disabled by peer");
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -492,6 +542,15 @@
- break;
- /* send a reset-ack, which the transmitter will see and
- reset its compression state. */
-+
-+ /* In case of MPPE/MPPC or LZS we shouldn't send CCP_RESETACK,
-+ but we do it in order to reset compressor; CCP_RESETACK is
-+ then silently discarded. See functions ppp_send_frame and
-+ ppp_ccp_peek in ppp_generic.c (Linux only !!!). All the
-+ confusion is caused by the fact that CCP code is splited
-+ into two parts - one part is handled by pppd, the other one
-+ is handled by kernel. */
-+
- fsm_sdata(f, CCP_RESETACK, id, NULL, 0);
- break;
-
-@@ -520,12 +579,11 @@
- fsm_lowerdown(&ccp_fsm[unit]);
-
- #ifdef MPPE
-- if (ccp_gotoptions[unit].mppe) {
-+ if (ccp_wantoptions[unit].mppe) {
- error("MPPE required but peer negotiation failed");
- lcp_close(unit, "MPPE required but peer negotiation failed");
- }
--#endif
--
-+#endif /* MPPE */
- }
-
- /*
-@@ -542,7 +600,7 @@
- all_rejected[f->unit] = 0;
-
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc) {
- ccp_options *ao = &ccp_allowoptions[f->unit];
- int auth_mschap_bits = auth_done[f->unit];
- int numbits;
-@@ -556,80 +614,109 @@
- * NB: If MPPE is required, all other compression opts are invalid.
- * So, we return right away if we can't do it.
- */
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ /* Leave only the mschap auth bits set */
-+ auth_mschap_bits &= (CHAP_MS_WITHPEER | CHAP_MS_PEER |
-+ CHAP_MS2_WITHPEER | CHAP_MS2_PEER);
-+ /* Count the mschap auths */
-+ auth_mschap_bits >>= CHAP_MS_SHIFT;
-+ numbits = 0;
-+ do {
-+ numbits += auth_mschap_bits & 1;
-+ auth_mschap_bits >>= 1;
-+ } while (auth_mschap_bits);
-+ if (numbits > 1) {
-+ error("MPPE required, but auth done in both directions.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
-+ }
-+ if (!numbits) {
-+ error("MPPE required, but MS-CHAP[v2] auth not performed.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
-+ }
-
-- /* Leave only the mschap auth bits set */
-- auth_mschap_bits &= (CHAP_MS_WITHPEER | CHAP_MS_PEER |
-- CHAP_MS2_WITHPEER | CHAP_MS2_PEER);
-- /* Count the mschap auths */
-- auth_mschap_bits >>= CHAP_MS_SHIFT;
-- numbits = 0;
-- do {
-- numbits += auth_mschap_bits & 1;
-- auth_mschap_bits >>= 1;
-- } while (auth_mschap_bits);
-- if (numbits > 1) {
-- error("MPPE required, but auth done in both directions.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
-- if (!numbits) {
-- error("MPPE required, but MS-CHAP[v2] auth not performed.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
--
-- /* A plugin (eg radius) may not have obtained key material. */
-- if (!mppe_keys_set) {
-- error("MPPE required, but keys are not available. "
-- "Possible plugin problem?");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-- }
--
-- /* LM auth not supported for MPPE */
-- if (auth_done[f->unit] & (CHAP_MS_WITHPEER | CHAP_MS_PEER)) {
-- /* This might be noise */
-- if (go->mppe & MPPE_OPT_40) {
-- notice("Disabling 40-bit MPPE; MS-CHAP LM not supported");
-- go->mppe &= ~MPPE_OPT_40;
-- ccp_wantoptions[f->unit].mppe &= ~MPPE_OPT_40;
-+ /* A plugin (eg radius) may not have obtained key material. */
-+ if (!mppe_keys_set) {
-+ error("MPPE required, but keys are not available. "
-+ "Possible plugin problem?");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ return;
- }
- }
-
-- /* Last check: can we actually negotiate something? */
-- if (!(go->mppe & (MPPE_OPT_40 | MPPE_OPT_128))) {
-- /* Could be misconfig, could be 40-bit disabled above. */
-- error("MPPE required, but both 40-bit and 128-bit disabled.");
-- lcp_close(f->unit, "MPPE required but not available");
-- return;
-+ /*
-+ * Check whether the kernel knows about the various
-+ * compression methods we might request. Key material
-+ * unimportant here.
-+ */
-+ if (go->mppc) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = 0;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_MPPC;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 0) <= 0)
-+ go->mppc = 0;
-+ }
-+ if (go->mppe_40) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_40BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_40 = 0;
-+ }
-+ if (go->mppe_56) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_56BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_56 = 0;
-+ }
-+ if (go->mppe_128) {
-+ opt_buf[0] = CI_MPPE;
-+ opt_buf[1] = CILEN_MPPE;
-+ opt_buf[2] = MPPE_STATELESS;
-+ opt_buf[3] = 0;
-+ opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_128BIT;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0)
-+ go->mppe_128 = 0;
-+ }
-+ if (!go->mppe_40 && !go->mppe_56 && !go->mppe_128) {
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ error("MPPE required, but kernel has no support.");
-+ lcp_close(f->unit, "MPPE required but not available");
-+ }
-+ go->mppe = go->mppe_stateless = 0;
-+ } else {
-+ /* MPPE is not compatible with other compression types */
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ ao->bsd_compress = go->bsd_compress = 0;
-+ ao->predictor_1 = go->predictor_1 = 0;
-+ ao->predictor_2 = go->predictor_2 = 0;
-+ ao->deflate = go->deflate = 0;
-+ ao->lzs = go->lzs = 0;
-+ }
- }
--
-- /* sync options */
-- ao->mppe = go->mppe;
-- /* MPPE is not compatible with other compression types */
-- ao->bsd_compress = go->bsd_compress = 0;
-- ao->predictor_1 = go->predictor_1 = 0;
-- ao->predictor_2 = go->predictor_2 = 0;
-- ao->deflate = go->deflate = 0;
- }
- #endif /* MPPE */
--
-- /*
-- * Check whether the kernel knows about the various
-- * compression methods we might request.
-- */
--#ifdef MPPE
-- if (go->mppe) {
-- opt_buf[0] = CI_MPPE;
-- opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-- /* Key material unimportant here. */
-- if (ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0) <= 0) {
-- error("MPPE required, but kernel has no support.");
-- lcp_close(f->unit, "MPPE required but not available");
-- }
-+ if (go->lzs) {
-+ opt_buf[0] = CI_LZS;
-+ opt_buf[1] = CILEN_LZS;
-+ opt_buf[2] = go->lzs_hists >> 8;
-+ opt_buf[3] = go->lzs_hists & 0xff;
-+ opt_buf[4] = LZS_MODE_SEQ;
-+ if (ccp_test(f->unit, opt_buf, CILEN_LZS, 0) <= 0)
-+ go->lzs = 0;
- }
--#endif
- if (go->bsd_compress) {
- opt_buf[0] = CI_BSD_COMPRESS;
- opt_buf[1] = CILEN_BSD_COMPRESS;
-@@ -684,7 +771,8 @@
- + (go->deflate? CILEN_DEFLATE: 0)
- + (go->predictor_1? CILEN_PREDICTOR_1: 0)
- + (go->predictor_2? CILEN_PREDICTOR_2: 0)
-- + (go->mppe? CILEN_MPPE: 0);
-+ + (go->lzs? CILEN_LZS: 0)
-+ + ((go->mppe || go->mppc)? CILEN_MPPE: 0);
- }
-
- /*
-@@ -698,6 +786,8 @@
- {
- int res;
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- u_char *p0 = p;
-
- /*
-@@ -706,22 +796,43 @@
- * in case it gets Acked.
- */
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc || (!wo->mppe && ao->mppe)) {
- u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-
-- p[0] = opt_buf[0] = CI_MPPE;
-- p[1] = opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &p[2]);
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-+ p[0] = CI_MPPE;
-+ p[1] = CILEN_MPPE;
-+ p[2] = (go->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[3] = 0;
-+ p[4] = 0;
-+ p[5] = (go->mppe_40 ? MPPE_40BIT : 0) | (go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppe_128 ? MPPE_128BIT : 0) | (go->mppc ? MPPE_MPPC : 0);
-+
-+ BCOPY(p, opt_buf, CILEN_MPPE);
- BCOPY(mppe_recv_key, &opt_buf[CILEN_MPPE], MPPE_MAX_KEY_LEN);
- res = ccp_test(f->unit, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0);
-- if (res > 0)
-+ if (res > 0) {
- p += CILEN_MPPE;
-- else
-+ } else {
- /* This shouldn't happen, we've already tested it! */
-- lcp_close(f->unit, "MPPE required but not available in kernel");
-+ go->mppe = go->mppe_40 = go->mppe_56 = go->mppe_128 =
-+ go->mppe_stateless = go->mppc = 0;
-+ if (ccp_wantoptions[f->unit].mppe)
-+ lcp_close(f->unit, "MPPE required but not available in kernel");
-+ }
-+ }
-+#endif /* MPPE */
-+ if (go->lzs) {
-+ p[0] = CI_LZS;
-+ p[1] = CILEN_LZS;
-+ p[2] = go->lzs_hists >> 8;
-+ p[3] = go->lzs_hists & 0xff;
-+ p[4] = LZS_MODE_SEQ;
-+ res = ccp_test(f->unit, p, CILEN_LZS, 0);
-+ if (res > 0) {
-+ p += CILEN_LZS;
-+ } else
-+ go->lzs = 0;
- }
--#endif
- if (go->deflate) {
- p[0] = go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT;
- p[1] = CILEN_DEFLATE;
-@@ -807,7 +918,7 @@
-
- /*
- * ccp_ackci - process a received configure-ack, and return
-- * 1 iff the packet was OK.
-+ * 1 if the packet was OK.
- */
- static int
- ccp_ackci(f, p, len)
-@@ -816,24 +927,44 @@
- int len;
- {
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- u_char *p0 = p;
-
- #ifdef MPPE
-- if (go->mppe) {
-- u_char opt_buf[CILEN_MPPE];
--
-- opt_buf[0] = CI_MPPE;
-- opt_buf[1] = CILEN_MPPE;
-- MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
-- if (len < CILEN_MPPE || memcmp(opt_buf, p, CILEN_MPPE))
-+ if (go->mppe || go->mppc || (!wo->mppe && ao->mppe)) {
-+ if (len < CILEN_MPPE
-+ || p[1] != CILEN_MPPE || p[0] != CI_MPPE
-+ || p[2] != (go->mppe_stateless ? MPPE_STATELESS : 0)
-+ || p[3] != 0
-+ || p[4] != 0
-+ || (p[5] != ((go->mppe_40 ? MPPE_40BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))
-+ && p[5] != ((go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))
-+ && p[5] != ((go->mppe_128 ? MPPE_128BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0))))
- return 0;
-+ if (go->mppe_40 || go->mppe_56 || go->mppe_128)
-+ go->mppe = 1;
- p += CILEN_MPPE;
- len -= CILEN_MPPE;
-+ /* Cope with first/fast ack */
-+ if (p == p0 && len == 0)
-+ return 1;
-+ }
-+#endif /* MPPE */
-+ if (go->lzs) {
-+ if (len < CILEN_LZS || p[0] != CI_LZS || p[1] != CILEN_LZS
-+ || p[2] != go->lzs_hists>>8 || p[3] != (go->lzs_hists&0xff)
-+ || p[4] != LZS_MODE_SEQ)
-+ return 0;
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
- /* XXX Cope with first/fast ack */
-- if (len == 0)
-+ if (p == p0 && len == 0)
- return 1;
- }
--#endif
- if (go->deflate) {
- if (len < CILEN_DEFLATE
- || p[0] != (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
-@@ -896,7 +1027,7 @@
-
- /*
- * ccp_nakci - process received configure-nak.
-- * Returns 1 iff the nak was OK.
-+ * Returns 1 if the nak was OK.
- */
- static int
- ccp_nakci(f, p, len)
-@@ -905,6 +1036,8 @@
- int len;
- {
- ccp_options *go = &ccp_gotoptions[f->unit];
-+ ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- ccp_options no; /* options we've seen already */
- ccp_options try; /* options to ask for next time */
-
-@@ -912,28 +1045,100 @@
- try = *go;
-
- #ifdef MPPE
-- if (go->mppe && len >= CILEN_MPPE
-- && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-- no.mppe = 1;
-- /*
-- * Peer wants us to use a different strength or other setting.
-- * Fail if we aren't willing to use his suggestion.
-- */
-- MPPE_CI_TO_OPTS(&p[2], try.mppe);
-- if ((try.mppe & MPPE_OPT_STATEFUL) && refuse_mppe_stateful) {
-- error("Refusing MPPE stateful mode offered by peer");
-- try.mppe = 0;
-- } else if (((go->mppe | MPPE_OPT_STATEFUL) & try.mppe) != try.mppe) {
-- /* Peer must have set options we didn't request (suggest) */
-- try.mppe = 0;
-- }
-+ if ((go->mppe || go->mppc || (!wo->mppe && ao->mppe)) &&
-+ len >= CILEN_MPPE && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-
-- if (!try.mppe) {
-- error("MPPE required but peer negotiation failed");
-- lcp_close(f->unit, "MPPE required but peer negotiation failed");
-+ if (go->mppc) {
-+ no.mppc = 1;
-+ if (!(p[5] & MPPE_MPPC))
-+ try.mppc = 0;
-+ }
-+
-+ if (go->mppe)
-+ no.mppe = 1;
-+ if (go->mppe_40)
-+ no.mppe_40 = 1;
-+ if (go->mppe_56)
-+ no.mppe_56 = 1;
-+ if (go->mppe_128)
-+ no.mppe_128 = 1;
-+ if (go->mppe_stateless)
-+ no.mppe_stateless = 1;
-+
-+ if (ao->mppe_40) {
-+ if ((p[5] & MPPE_40BIT))
-+ try.mppe_40 = 1;
-+ else
-+ try.mppe_40 = (p[5] == 0) ? 1 : 0;
-+ }
-+ if (ao->mppe_56) {
-+ if ((p[5] & MPPE_56BIT))
-+ try.mppe_56 = 1;
-+ else
-+ try.mppe_56 = (p[5] == 0) ? 1 : 0;
-+ }
-+ if (ao->mppe_128) {
-+ if ((p[5] & MPPE_128BIT))
-+ try.mppe_128 = 1;
-+ else
-+ try.mppe_128 = (p[5] == 0) ? 1 : 0;
-+ }
-+
-+ if (ao->mppe_stateless) {
-+ if ((p[2] & MPPE_STATELESS) || wo->mppe_stateless)
-+ try.mppe_stateless = 1;
-+ else
-+ try.mppe_stateless = 0;
-+ }
-+
-+ if (!try.mppe_56 && !try.mppe_40 && !try.mppe_128) {
-+ try.mppe = try.mppe_stateless = 0;
-+ if (wo->mppe) {
-+ /* we require encryption, but peer doesn't support it
-+ so we close connection */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "MPPE required but cannot negotiate MPPE "
-+ "key length");
-+ }
-+ }
-+ if (wo->mppe && (wo->mppe_40 != try.mppe_40) &&
-+ (wo->mppe_56 != try.mppe_56) && (wo->mppe_128 != try.mppe_128)) {
-+ /* cannot negotiate key length */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "Cannot negotiate MPPE key length");
- }
-+ if (try.mppe_40 && try.mppe_56 && try.mppe_128)
-+ try.mppe_40 = try.mppe_56 = 0;
-+ else
-+ if (try.mppe_56 && try.mppe_128)
-+ try.mppe_56 = 0;
-+ else
-+ if (try.mppe_40 && try.mppe_128)
-+ try.mppe_40 = 0;
-+ else
-+ if (try.mppe_40 && try.mppe_56)
-+ try.mppe_40 = 0;
-+
-+ p += CILEN_MPPE;
-+ len -= CILEN_MPPE;
- }
- #endif /* MPPE */
-+
-+ if (go->lzs && len >= CILEN_LZS && p[0] == CI_LZS && p[1] == CILEN_LZS) {
-+ no.lzs = 1;
-+ if (((p[2]<<8)|p[3]) > 1 || (p[4] != LZS_MODE_SEQ &&
-+ p[4] != LZS_MODE_EXT))
-+ try.lzs = 0;
-+ else {
-+ try.lzs_mode = p[4];
-+ try.lzs_hists = (p[2] << 8) | p[3];
-+ }
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
-+ }
-+
- if (go->deflate && len >= CILEN_DEFLATE
- && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
- && p[1] == CILEN_DEFLATE) {
-@@ -1006,14 +1211,50 @@
- return -1;
-
- #ifdef MPPE
-- if (go->mppe && len >= CILEN_MPPE
-+ if ((go->mppe || go->mppc) && len >= CILEN_MPPE
- && p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
-- error("MPPE required but peer refused");
-- lcp_close(f->unit, "MPPE required but peer refused");
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
-+ if (p[2] != (go->mppe_stateless ? MPPE_STATELESS : 0) ||
-+ p[3] != 0 ||
-+ p[4] != 0 ||
-+ p[5] != ((go->mppe_40 ? MPPE_40BIT : 0) |
-+ (go->mppe_56 ? MPPE_56BIT : 0) |
-+ (go->mppe_128 ? MPPE_128BIT : 0) |
-+ (go->mppc ? MPPE_MPPC : 0)))
-+ return 0;
-+ if (go->mppc)
-+ try.mppc = 0;
-+ if (go->mppe) {
-+ try.mppe = 0;
-+ if (go->mppe_40)
-+ try.mppe_40 = 0;
-+ if (go->mppe_56)
-+ try.mppe_56 = 0;
-+ if (go->mppe_128)
-+ try.mppe_128 = 0;
-+ if (go->mppe_stateless)
-+ try.mppe_stateless = 0;
-+ if (!try.mppe_56 && !try.mppe_40 && !try.mppe_128)
-+ try.mppe = try.mppe_stateless = 0;
-+ if (wo->mppe) { /* we want MPPE but cannot negotiate key length */
-+ wo->mppc = wo->mppe = wo->mppe_stateless = wo->mppe_40 =
-+ wo->mppe_56 = wo->mppe_128 = 0;
-+ lcp_close(f->unit, "MPPE required but cannot negotiate MPPE "
-+ "key length");
-+ }
-+ }
- p += CILEN_MPPE;
- len -= CILEN_MPPE;
- }
--#endif
-+#endif /* MPPE */
-+ if (go->lzs && len >= CILEN_LZS && p[0] == CI_LZS && p[1] == CILEN_LZS) {
-+ if (p[2] != go->lzs_hists>>8 || p[3] != (go->lzs_hists&0xff)
-+ || p[4] != go->lzs_mode)
-+ return 0;
-+ try.lzs = 0;
-+ p += CILEN_LZS;
-+ len -= CILEN_LZS;
-+ }
- if (go->deflate_correct && len >= CILEN_DEFLATE
- && p[0] == CI_DEFLATE && p[1] == CILEN_DEFLATE) {
- if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
-@@ -1077,14 +1318,15 @@
- int dont_nak;
- {
- int ret, newret, res;
-- u_char *p0, *retp;
-+ u_char *p0, *retp, p2, p5;
- int len, clen, type, nb;
- ccp_options *ho = &ccp_hisoptions[f->unit];
- ccp_options *ao = &ccp_allowoptions[f->unit];
-+ ccp_options *wo = &ccp_wantoptions[f->unit];
- #ifdef MPPE
-- bool rej_for_ci_mppe = 1; /* Are we rejecting based on a bad/missing */
-- /* CI_MPPE, or due to other options? */
--#endif
-+ u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-+/* int mtu; */
-+#endif /* MPPE */
-
- ret = CONFACK;
- retp = p0 = p;
-@@ -1107,103 +1349,305 @@
- switch (type) {
- #ifdef MPPE
- case CI_MPPE:
-- if (!ao->mppe || clen != CILEN_MPPE) {
-+ if ((!ao->mppc && !ao->mppe) || clen != CILEN_MPPE) {
- newret = CONFREJ;
- break;
- }
-- MPPE_CI_TO_OPTS(&p[2], ho->mppe);
-
-- /* Nak if anything unsupported or unknown are set. */
-- if (ho->mppe & MPPE_OPT_UNSUPPORTED) {
-- newret = CONFNAK;
-- ho->mppe &= ~MPPE_OPT_UNSUPPORTED;
-- }
-- if (ho->mppe & MPPE_OPT_UNKNOWN) {
-+ p2 = p[2];
-+ p5 = p[5];
-+ /* not sure what they want, tell 'em what we got */
-+ if (((p[2] & ~MPPE_STATELESS) != 0 || p[3] != 0 || p[4] != 0 ||
-+ (p[5] & ~(MPPE_40BIT | MPPE_56BIT | MPPE_128BIT |
-+ MPPE_MPPC)) != 0 || p[5] == 0) ||
-+ (p[2] == 0 && p[3] == 0 && p[4] == 0 && p[5] == 0)) {
- newret = CONFNAK;
-- ho->mppe &= ~MPPE_OPT_UNKNOWN;
-+ p[2] = (wo->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[3] = 0;
-+ p[4] = 0;
-+ p[5] = (wo->mppe_40 ? MPPE_40BIT : 0) |
-+ (wo->mppe_56 ? MPPE_56BIT : 0) |
-+ (wo->mppe_128 ? MPPE_128BIT : 0) |
-+ (wo->mppc ? MPPE_MPPC : 0);
-+ break;
- }
-
-- /* Check state opt */
-- if (ho->mppe & MPPE_OPT_STATEFUL) {
-- /*
-- * We can Nak and request stateless, but it's a
-- * lot easier to just assume the peer will request
-- * it if he can do it; stateful mode is bad over
-- * the Internet -- which is where we expect MPPE.
-- */
-- if (refuse_mppe_stateful) {
-- error("Refusing MPPE stateful mode offered by peer");
-+ if ((p[5] & MPPE_MPPC)) {
-+ if (ao->mppc) {
-+ ho->mppc = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ opt_buf[2] = opt_buf[3] = opt_buf[4] = 0;
-+ opt_buf[5] = MPPE_MPPC;
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE, 1) <= 0) {
-+ ho->mppc = 0;
-+ p[5] &= ~MPPE_MPPC;
-+ newret = CONFNAK;
-+ }
-+ } else {
- newret = CONFREJ;
-- break;
-+ if (wo->mppe || ao->mppe) {
-+ p[5] &= ~MPPE_MPPC;
-+ newret = CONFNAK;
-+ }
-+ }
-+ }
-+
-+ if (ao->mppe)
-+ ho->mppe = 1;
-+
-+ if ((p[2] & MPPE_STATELESS)) {
-+ if (ao->mppe_stateless) {
-+ if (wo->mppe_stateless)
-+ ho->mppe_stateless = 1;
-+ else {
-+ newret = CONFNAK;
-+ if (!dont_nak)
-+ p[2] &= ~MPPE_STATELESS;
-+ }
-+ } else {
-+ newret = CONFNAK;
-+ if (!dont_nak)
-+ p[2] &= ~MPPE_STATELESS;
-+ }
-+ } else {
-+ if (wo->mppe_stateless && !dont_nak) {
-+ wo->mppe_stateless = 0;
-+ newret = CONFNAK;
-+ p[2] |= MPPE_STATELESS;
- }
- }
-
-- /* Find out which of {S,L} are set. */
-- if ((ho->mppe & MPPE_OPT_128)
-- && (ho->mppe & MPPE_OPT_40)) {
-- /* Both are set, negotiate the strongest. */
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT|MPPE_128BIT)) {
- newret = CONFNAK;
-- if (ao->mppe & MPPE_OPT_128)
-- ho->mppe &= ~MPPE_OPT_40;
-- else if (ao->mppe & MPPE_OPT_40)
-- ho->mppe &= ~MPPE_OPT_128;
-- else {
-- newret = CONFREJ;
-- break;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~(MPPE_40BIT|MPPE_56BIT);
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= (MPPE_40BIT|MPPE_56BIT);
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56_40;
-+ }
-+ goto check_mppe;
- }
-- } else if (ho->mppe & MPPE_OPT_128) {
-- if (!(ao->mppe & MPPE_OPT_128)) {
-- newret = CONFREJ;
-- break;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56_40;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_56BIT|MPPE_128BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~MPPE_56BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= MPPE_56BIT;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56;
-+ }
-+ goto check_mppe;
- }
-- } else if (ho->mppe & MPPE_OPT_40) {
-- if (!(ao->mppe & MPPE_OPT_40)) {
-- newret = CONFREJ;
-- break;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_56;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_128BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ p[5] &= ~MPPE_40BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] |= MPPE_40BIT;
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_40;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_128BIT;
-+ goto check_mppe_40;
-+ }
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_128BIT) {
-+ if (ao->mppe_128) {
-+ ho->mppe_128 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_128 = 0;
-+ p[5] &= ~MPPE_128BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_128BIT;
-+ newret = CONFNAK;
-+ goto check_mppe;
-+ }
-+ check_mppe_56_40:
-+ if ((p[5] & ~MPPE_MPPC) == (MPPE_40BIT|MPPE_56BIT)) {
-+ newret = CONFNAK;
-+ if (ao->mppe_56) {
-+ ho->mppe_56 = 1;
-+ p[5] &= ~MPPE_40BIT;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_56 = 0;
-+ p[5] |= MPPE_40BIT;
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ goto check_mppe_40;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_56BIT;
-+ goto check_mppe_40;
-+ }
-+ check_mppe_56:
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_56BIT) {
-+ if (ao->mppe_56) {
-+ ho->mppe_56 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_56 = 0;
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_56BIT;
-+ newret = CONFNAK;
-+ goto check_mppe;
-+ }
-+ check_mppe_40:
-+ if ((p[5] & ~MPPE_MPPC) == MPPE_40BIT) {
-+ if (ao->mppe_40) {
-+ ho->mppe_40 = 1;
-+ BCOPY(p, opt_buf, CILEN_MPPE);
-+ BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-+ MPPE_MAX_KEY_LEN);
-+ if (ccp_test(f->unit, opt_buf, CILEN_MPPE +
-+ MPPE_MAX_KEY_LEN, 1) <= 0) {
-+ ho->mppe_40 = 0;
-+ p[5] &= ~MPPE_40BIT;
-+ newret = CONFNAK;
-+ }
-+ goto check_mppe;
-+ }
-+ p[5] &= ~MPPE_40BIT;
-+ }
-+
-+ check_mppe:
-+ if (!ho->mppe_40 && !ho->mppe_56 && !ho->mppe_128) {
-+ if (wo->mppe_40 || wo->mppe_56 || wo->mppe_128) {
-+ newret = CONFNAK;
-+ p[2] |= (wo->mppe_stateless ? MPPE_STATELESS : 0);
-+ p[5] |= (wo->mppe_40 ? MPPE_40BIT : 0) |
-+ (wo->mppe_56 ? MPPE_56BIT : 0) |
-+ (wo->mppe_128 ? MPPE_128BIT : 0) |
-+ (wo->mppc ? MPPE_MPPC : 0);
-+ } else {
-+ ho->mppe = ho->mppe_stateless = 0;
- }
- } else {
-- /* Neither are set. */
-+ /* MPPE is not compatible with other compression types */
-+ if (wo->mppe) {
-+ ao->bsd_compress = 0;
-+ ao->predictor_1 = 0;
-+ ao->predictor_2 = 0;
-+ ao->deflate = 0;
-+ ao->lzs = 0;
-+ }
-+ }
-+ if ((!ho->mppc || !ao->mppc) && !ho->mppe) {
-+ p[2] = p2;
-+ p[5] = p5;
- newret = CONFREJ;
- break;
- }
-
-- /* rebuild the opts */
-- MPPE_OPTS_TO_CI(ho->mppe, &p[2]);
-- if (newret == CONFACK) {
-- u_char opt_buf[CILEN_MPPE + MPPE_MAX_KEY_LEN];
-- int mtu;
--
-- BCOPY(p, opt_buf, CILEN_MPPE);
-- BCOPY(mppe_send_key, &opt_buf[CILEN_MPPE],
-- MPPE_MAX_KEY_LEN);
-- if (ccp_test(f->unit, opt_buf,
-- CILEN_MPPE + MPPE_MAX_KEY_LEN, 1) <= 0) {
-- /* This shouldn't happen, we've already tested it! */
-- error("MPPE required, but kernel has no support.");
-- lcp_close(f->unit, "MPPE required but not available");
-- newret = CONFREJ;
-- break;
-- }
-- /*
-- * We need to decrease the interface MTU by MPPE_PAD
-- * because MPPE frames **grow**. The kernel [must]
-- * allocate MPPE_PAD extra bytes in xmit buffers.
-- */
-- mtu = netif_get_mtu(f->unit);
-- if (mtu)
-- netif_set_mtu(f->unit, mtu - MPPE_PAD);
-- else
-- newret = CONFREJ;
-- }
-+ /*
-+ * I have commented the code below because according to RFC1547
-+ * MTU is only information for higher level protocols about
-+ * "the maximum allowable length for a packet (q.v.) transmitted
-+ * over a point-to-point link without incurring network layer
-+ * fragmentation." Of course a PPP implementation should be able
-+ * to handle overhead added by MPPE - in our case apropriate code
-+ * is located in drivers/net/ppp_generic.c in the kernel sources.
-+ *
-+ * According to RFC1661:
-+ * - when negotiated MRU is less than 1500 octets, a PPP
-+ * implementation must still be able to receive at least 1500
-+ * octets,
-+ * - when PFC is negotiated, a PPP implementation is still
-+ * required to receive frames with uncompressed protocol field.
-+ *
-+ * So why not to handle MPPE overhead without changing MTU value?
-+ * I am sure that RFC3078, unfortunately silently, assumes that.
-+ */
-
- /*
-- * We have accepted MPPE or are willing to negotiate
-- * MPPE parameters. A CONFREJ is due to subsequent
-- * (non-MPPE) processing.
-+ * We need to decrease the interface MTU by MPPE_PAD
-+ * because MPPE frames **grow**. The kernel [must]
-+ * allocate MPPE_PAD extra bytes in xmit buffers.
- */
-- rej_for_ci_mppe = 0;
-+/*
-+ mtu = netif_get_mtu(f->unit);
-+ if (mtu) {
-+ netif_set_mtu(f->unit, mtu - MPPE_PAD);
-+ } else {
-+ newret = CONFREJ;
-+ if (ccp_wantoptions[f->unit].mppe) {
-+ error("Cannot adjust MTU needed by MPPE.");
-+ lcp_close(f->unit, "Cannot adjust MTU needed by MPPE.");
-+ }
-+ }
-+*/
- break;
- #endif /* MPPE */
-+
-+ case CI_LZS:
-+ if (!ao->lzs || clen != CILEN_LZS) {
-+ newret = CONFREJ;
-+ break;
-+ }
-+
-+ ho->lzs = 1;
-+ ho->lzs_hists = (p[2] << 8) | p[3];
-+ ho->lzs_mode = p[4];
-+ if ((ho->lzs_hists != ao->lzs_hists) ||
-+ (ho->lzs_mode != ao->lzs_mode)) {
-+ newret = CONFNAK;
-+ if (!dont_nak) {
-+ p[2] = ao->lzs_hists >> 8;
-+ p[3] = ao->lzs_hists & 0xff;
-+ p[4] = ao->lzs_mode;
-+ } else
-+ break;
-+ }
-+
-+ if (p == p0 && ccp_test(f->unit, p, CILEN_LZS, 1) <= 0) {
-+ newret = CONFREJ;
-+ }
-+ break;
-+
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (!ao->deflate || clen != CILEN_DEFLATE
-@@ -1345,12 +1789,6 @@
- else
- *lenp = retp - p0;
- }
--#ifdef MPPE
-- if (ret == CONFREJ && ao->mppe && rej_for_ci_mppe) {
-- error("MPPE required but peer negotiation failed");
-- lcp_close(f->unit, "MPPE required but peer negotiation failed");
-- }
--#endif
- return ret;
- }
-
-@@ -1372,24 +1810,35 @@
- char *p = result;
- char *q = result + sizeof(result); /* 1 past result */
-
-- slprintf(p, q - p, "MPPE ");
-- p += 5;
-- if (opt->mppe & MPPE_OPT_128) {
-- slprintf(p, q - p, "128-bit ");
-- p += 8;
-- }
-- if (opt->mppe & MPPE_OPT_40) {
-- slprintf(p, q - p, "40-bit ");
-- p += 7;
-- }
-- if (opt->mppe & MPPE_OPT_STATEFUL)
-- slprintf(p, q - p, "stateful");
-- else
-- slprintf(p, q - p, "stateless");
--
-+ if (opt->mppe) {
-+ if (opt->mppc) {
-+ slprintf(p, q - p, "MPPC/MPPE ");
-+ p += 10;
-+ } else {
-+ slprintf(p, q - p, "MPPE ");
-+ p += 5;
-+ }
-+ if (opt->mppe_128) {
-+ slprintf(p, q - p, "128-bit ");
-+ p += 8;
-+ } else if (opt->mppe_56) {
-+ slprintf(p, q - p, "56-bit ");
-+ p += 7;
-+ } else if (opt->mppe_40) {
-+ slprintf(p, q - p, "40-bit ");
-+ p += 7;
-+ }
-+ if (opt->mppe_stateless)
-+ slprintf(p, q - p, "stateless");
-+ else
-+ slprintf(p, q - p, "stateful");
-+ } else if (opt->mppc)
-+ slprintf(p, q - p, "MPPC");
- break;
- }
--#endif
-+#endif /* MPPE */
-+ case CI_LZS:
-+ return "Stac LZS";
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (opt2 != NULL && opt2->deflate_size != opt->deflate_size)
-@@ -1445,12 +1894,12 @@
- } else if (ANY_COMPRESS(*ho))
- notice("%s transmit compression enabled", method_name(ho, NULL));
- #ifdef MPPE
-- if (go->mppe) {
-+ if (go->mppe || go->mppc) {
- BZERO(mppe_recv_key, MPPE_MAX_KEY_LEN);
- BZERO(mppe_send_key, MPPE_MAX_KEY_LEN);
- continue_networks(f->unit); /* Bring up IP et al */
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -1473,7 +1922,7 @@
- lcp_close(f->unit, "MPPE disabled");
- }
- }
--#endif
-+#endif /* MPPE */
- }
-
- /*
-@@ -1533,24 +1982,28 @@
- #ifdef MPPE
- case CI_MPPE:
- if (optlen >= CILEN_MPPE) {
-- u_char mppe_opts;
--
-- MPPE_CI_TO_OPTS(&p[2], mppe_opts);
-- printer(arg, "mppe %s %s %s %s %s %s%s",
-- (p[2] & MPPE_H_BIT)? "+H": "-H",
-- (p[5] & MPPE_M_BIT)? "+M": "-M",
-- (p[5] & MPPE_S_BIT)? "+S": "-S",
-- (p[5] & MPPE_L_BIT)? "+L": "-L",
-+ printer(arg, "mppe %s %s %s %s %s %s",
-+ (p[2] & MPPE_STATELESS)? "+H": "-H",
-+ (p[5] & MPPE_56BIT)? "+M": "-M",
-+ (p[5] & MPPE_128BIT)? "+S": "-S",
-+ (p[5] & MPPE_40BIT)? "+L": "-L",
- (p[5] & MPPE_D_BIT)? "+D": "-D",
-- (p[5] & MPPE_C_BIT)? "+C": "-C",
-- (mppe_opts & MPPE_OPT_UNKNOWN)? " +U": "");
-- if (mppe_opts & MPPE_OPT_UNKNOWN)
-+ (p[5] & MPPE_MPPC)? "+C": "-C");
-+ if ((p[5] & ~(MPPE_56BIT | MPPE_128BIT | MPPE_40BIT |
-+ MPPE_D_BIT | MPPE_MPPC)) ||
-+ (p[2] & ~MPPE_STATELESS))
- printer(arg, " (%.2x %.2x %.2x %.2x)",
- p[2], p[3], p[4], p[5]);
- p += CILEN_MPPE;
- }
- break;
--#endif
-+#endif /* MPPE */
-+ case CI_LZS:
-+ if (optlen >= CILEN_LZS) {
-+ printer(arg, "lzs %.2x %.2x %.2x", p[2], p[3], p[4]);
-+ p += CILEN_LZS;
-+ }
-+ break;
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (optlen >= CILEN_DEFLATE) {
-@@ -1636,6 +2089,7 @@
- error("Lost compression sync: disabling compression");
- ccp_close(unit, "Lost compression sync");
- #ifdef MPPE
-+ /* My module dosn't need this. J.D., 2003-07-06 */
- /*
- * If we were doing MPPE, we must also take the link down.
- */
-@@ -1643,9 +2097,18 @@
- error("Too many MPPE errors, closing LCP");
- lcp_close(unit, "Too many MPPE errors");
- }
--#endif
-+#endif /* MPPE */
- } else {
- /*
-+ * When LZS or MPPE/MPPC is negotiated we just send CCP_RESETREQ
-+ * and don't wait for CCP_RESETACK
-+ */
-+ if ((ccp_gotoptions[f->unit].method == CI_LZS) ||
-+ (ccp_gotoptions[f->unit].method == CI_MPPE)) {
-+ fsm_sdata(f, CCP_RESETREQ, f->reqid = ++f->id, NULL, 0);
-+ return;
-+ }
-+ /*
- * Send a reset-request to reset the peer's compressor.
- * We don't do that if we are still waiting for an
- * acknowledgement to a previous reset-request.
-@@ -1676,4 +2139,3 @@
- } else
- ccp_localstate[f->unit] &= ~RACK_PENDING;
- }
--
-diff -ruN ppp-2.4.2.orig/pppd/ccp.h ppp-2.4.2-stdopt/pppd/ccp.h
---- ppp-2.4.2.orig/pppd/ccp.h 2002-12-05 00:03:32.000000000 +0100
-+++ ppp-2.4.2-stdopt/pppd/ccp.h 2004-01-21 06:51:09.000000000 +0100
-@@ -42,9 +42,17 @@
- bool predictor_2; /* do Predictor-2? */
- bool deflate_correct; /* use correct code for deflate? */
- bool deflate_draft; /* use draft RFC code for deflate? */
-+ bool lzs; /* do Stac LZS? */
-+ bool mppc; /* do MPPC? */
- bool mppe; /* do MPPE? */
-+ bool mppe_40; /* allow 40 bit encryption? */
-+ bool mppe_56; /* allow 56 bit encryption? */
-+ bool mppe_128; /* allow 128 bit encryption? */
-+ bool mppe_stateless; /* allow stateless encryption */
- u_short bsd_bits; /* # bits/code for BSD Compress */
- u_short deflate_size; /* lg(window size) for Deflate */
-+ u_short lzs_mode; /* LZS check mode */
-+ u_short lzs_hists; /* number of LZS histories */
- short method; /* code for chosen compression method */
- } ccp_options;
-
-diff -ruN ppp-2.4.2.orig/pppd/chap_ms.c ppp-2.4.2-stdopt/pppd/chap_ms.c
---- ppp-2.4.2.orig/pppd/chap_ms.c 2003-11-18 11:42:56.000000000 +0100
-+++ ppp-2.4.2-stdopt/pppd/chap_ms.c 2004-01-21 06:51:09.000000000 +0100
-@@ -858,13 +858,17 @@
- /*
- * Disable undesirable encryption types. Note that we don't ENABLE
- * any encryption types, to avoid overriding manual configuration.
-+ *
-+ * It seems that 56 bit keys are unsupported in MS-RADIUS (see RFC 2548)
- */
- switch(types) {
- case MPPE_ENC_TYPES_RC4_40:
-- ccp_wantoptions[0].mppe &= ~MPPE_OPT_128; /* disable 128-bit */
-+ ccp_wantoptions[0].mppe_128 = 0; /* disable 128-bit */
-+ ccp_wantoptions[0].mppe_56 = 0; /* disable 56-bit */
- break;
- case MPPE_ENC_TYPES_RC4_128:
-- ccp_wantoptions[0].mppe &= ~MPPE_OPT_40; /* disable 40-bit */
-+ ccp_wantoptions[0].mppe_56 = 0; /* disable 56-bit */
-+ ccp_wantoptions[0].mppe_40 = 0; /* disable 40-bit */
- break;
- default:
- break;
-diff -ruN ppp-2.4.2.orig/pppd/pppd.8 ppp-2.4.2-stdopt/pppd/pppd.8
---- ppp-2.4.2.orig/pppd/pppd.8 2004-01-15 06:09:00.000000000 +0100
-+++ ppp-2.4.2-stdopt/pppd/pppd.8 2004-01-21 06:51:09.000000000 +0100
-@@ -614,6 +614,9 @@
- Enables the use of PPP multilink; this is an alias for the `multilink'
- option. This option is currently only available under Linux.
- .TP
-+.B mppc
-+Enables MPPC (Microsoft Point to Point Compression). This is the default.
-+.TP
- .B mppe-stateful
- Allow MPPE to use stateful mode. Stateless mode is still attempted first.
- The default is to disallow stateful mode.
-@@ -749,12 +752,18 @@
- Disables the use of PPP multilink. This option is currently only
- available under Linux.
- .TP
-+.B nomppc
-+Diasables MPPC (Microsoft Point to Point Compression).
-+.TP
- .B nomppe
- Disables MPPE (Microsoft Point to Point Encryption). This is the default.
- .TP
- .B nomppe-40
- Disable 40\-bit encryption with MPPE.
- .TP
-+.B nomppe-56
-+Disable 56\-bit encryption with MPPE.
-+.TP
- .B nomppe-128
- Disable 128\-bit encryption with MPPE.
- .TP
-@@ -951,6 +960,9 @@
- .B require-mppe-40
- Require the use of MPPE, with 40\-bit encryption.
- .TP
-+.B require-mppe-56
-+Require the use of MPPE, with 56\-bit encryption.
-+.TP
- .B require-mppe-128
- Require the use of MPPE, with 128\-bit encryption.
- .TP
-diff -ruN ppp-2.4.2.orig/pppd/sha1.c ppp-2.4.2-stdopt/pppd/sha1.c
---- ppp-2.4.2.orig/pppd/sha1.c 2002-04-02 15:54:59.000000000 +0200
-+++ ppp-2.4.2-stdopt/pppd/sha1.c 2004-08-15 15:00:55.000000000 +0200
-@@ -21,7 +21,7 @@
- #include "sha1.h"
-
- static void
--SHA1_Transform(unsigned long[5], const unsigned char[64]);
-+SHA1_Transform(u_int32_t state[5], const u_int8_t buffer[64]);
-
- #define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
-
-@@ -42,17 +42,17 @@
- /* Hash a single 512-bit block. This is the core of the algorithm. */
-
- static void
--SHA1_Transform(unsigned long state[5], const unsigned char buffer[64])
-+SHA1_Transform(u_int32_t state[5], const u_int8_t buffer[64])
- {
-- unsigned long a, b, c, d, e;
-+ u_int32_t a, b, c, d, e;
- typedef union {
-- unsigned char c[64];
-- unsigned long l[16];
-+ u_int8_t c[64];
-+ u_int32_t l[16];
- } CHAR64LONG16;
- CHAR64LONG16 *block;
-
- #ifdef SHA1HANDSOFF
-- static unsigned char workspace[64];
-+ static u_int8_t workspace[64];
- block = (CHAR64LONG16 *) workspace;
- memcpy(block, buffer, 64);
- #else
-@@ -114,9 +114,9 @@
- /* Run your data through this. */
-
- void
--SHA1_Update(SHA1_CTX *context, const unsigned char *data, unsigned int len)
-+SHA1_Update(SHA1_CTX *context, const u_int8_t *data, u_int32_t len)
- {
-- unsigned int i, j;
-+ u_int32_t i, j;
-
- j = (context->count[0] >> 3) & 63;
- if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++;
-@@ -139,22 +139,24 @@
- /* Add padding and return the message digest. */
-
- void
--SHA1_Final(unsigned char digest[20], SHA1_CTX *context)
-+SHA1_Final(u_int8_t digest[SHA1_SIGNATURE_SIZE], SHA1_CTX *context)
- {
-- unsigned long i, j;
-- unsigned char finalcount[8];
-+ u_int32_t i, j;
-+ u_int8_t finalcount[8];
-
- for (i = 0; i < 8; i++) {
-- finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]
-+ finalcount[i] = (u_int8_t) ((context->count[(i >= 4 ? 0 : 1)]
- >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */
- }
-- SHA1_Update(context, (unsigned char *) "\200", 1);
-+ SHA1_Update(context, (u_int8_t *) "\200", 1);
- while ((context->count[0] & 504) != 448) {
-- SHA1_Update(context, (unsigned char *) "\0", 1);
-+ SHA1_Update(context, (u_int8_t *) "\0", 1);
- }
-+
- SHA1_Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
-+
- for (i = 0; i < 20; i++) {
-- digest[i] = (unsigned char)
-+ digest[i] = (u_int8_t)
- ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
- }
- /* Wipe variables */
-@@ -167,4 +169,3 @@
- SHA1Transform(context->state, context->buffer);
- #endif
- }
--
-diff -ruN ppp-2.4.2.orig/pppd/sha1.h ppp-2.4.2-stdopt/pppd/sha1.h
---- ppp-2.4.2.orig/pppd/sha1.h 2002-11-09 12:24:42.000000000 +0100
-+++ ppp-2.4.2-stdopt/pppd/sha1.h 2004-08-15 15:00:55.000000000 +0200
-@@ -8,6 +8,8 @@
-
- #ifndef __SHA1_INCLUDE_
-
-+#include <sys/types.h>
-+
- #ifndef SHA1_SIGNATURE_SIZE
- #ifdef SHA_DIGESTSIZE
- #define SHA1_SIGNATURE_SIZE SHA_DIGESTSIZE
-@@ -17,14 +19,14 @@
- #endif
-
- typedef struct {
-- unsigned long state[5];
-- unsigned long count[2];
-- unsigned char buffer[64];
-+ u_int32_t state[5];
-+ u_int32_t count[2];
-+ u_int8_t buffer[64];
- } SHA1_CTX;
-
- extern void SHA1_Init(SHA1_CTX *);
--extern void SHA1_Update(SHA1_CTX *, const unsigned char *, unsigned int);
--extern void SHA1_Final(unsigned char[SHA1_SIGNATURE_SIZE], SHA1_CTX *);
-+extern void SHA1_Update(SHA1_CTX *, const u_int8_t *, u_int32_t);
-+extern void SHA1_Final(u_int8_t[SHA1_SIGNATURE_SIZE], SHA1_CTX *);
-
- #define __SHA1_INCLUDE_
- #endif /* __SHA1_INCLUDE_ */