Thu Jan 18 11:10:32 2018 James Cameron * pptp-1.10.0: released. [this file is not maintained, see NEWS and "git log"] Tue Nov 29 16:13:57 2016 James Cameron * pptp-1.9.0: released. [this file is not maintained, see "git log"] Wed Oct 23 19:04:57 2013 James Cameron * pptp-1.8.0: released. Thu Aug 30 13:45:26 2012 Paul Howarth * options.pptp: fix typo in 'Encryption' comment, add notes and references regarding recent chapcrack exploit, note that the ppp_mppe kernel module will not load into the kernel if it's booted in FIPS mode (http://bugzilla.redhat.com/845112), and fix broken link to Jan Dubiec's ppp_mppe_mppc code. Wed Nov 30 09:02:18 2011 Paul Howarth * Makefile (config.h): fix unexpected build failure with a highly-parallel build (-j16). Thu Mar 3 12:24:15 2011 David Lamparter * pptp.c, pptp_callmgr.c, pptp.8: add -nohostroute option to disable adding a host route for the pptp server to the routing table. Also add some documentation while at it. Mon Feb 21 15:01:14 2011 David Lamparter * pptp.c, pptp_callmgr.c, pptp_gre.c, pptp.8: add --rtmark option for specifying the Linux policy routing / netfilter mark. Thu Sep 30 16:16:58 2010 Paul Howarth * pptp_ctrl.c: we could maintain a separate vector of peer call IDs and use that when we get a call-disconnect-notify packet to find our call ID and close that call, but as call-disconnect-notify packets are relatively rare, I've tried a slower but simpler approach of doing a linear search through the existing vector to look for the peer's call ID. Tue Jun 15 15:02:28 2010 James Cameron * pptp.c (open_callmgr): fix usage of status returned by waitpid; it must be wrapped by WEXITSTATUS to shift bits as required. Tue Jun 15 15:00:40 2010 James Cameron * pptp_ctrl.c (pptp_conn_is_dead): immediately destroying the connection and freeing the structure has led to segmentation faults on more recent heap implementations, since we use the structure after it has been freed. Defer the free of the structure until after all uses of it have ceased, by adding a connection state for dead and terminating the main loop once it is detected. Fri Jun 4 10:54:04 2010 Jan Just Keijser * pptp_ctrl.c: check for failure return by pptp_send_ctrl_packet and avoid using freed struct conn. Tue Nov 10 15:39:33 2009 Charles Shen * pptp_ctrl.c (ctrlp_disp): add call ID of outgoing call so that Call-Disconnect-Notify from peer causes correct disconnection sequence. Thu Jun 25 11:39:24 2009 James Cameron * AUTHORS: maintainer mail address change, james.cameron@hp.com is no longer valid. Mon Jun 1 14:43:00 2009 Paul Howarth * pptpsetup: only check for MPPE support in kernel and pppd if an encrypted tunnel is being created. Wed Mar 25 13:38:00 2009 Paul Howarth * pptpsetup: retain permissions on chap-secrets file when deleting tunnels (http://bugzilla.redhat.com/492090). Thu Jul 24 15:51:30 2008 Paul Howarth * routing.c, pptp_compat.c: compilation fixes for old distributions. Thu Jul 24 15:28:32 2008 Ilya Voronin * routing.c, Makefile: fixe use of /bin/ip and all compiler warnings on Solaris. Thu May 22 09:44:19 2008 James Cameron * routing.c: add config.h and use IP_BINARY. * Makefile (IP): add pointer to IP binary, store it in config.h, and add dependencies to support parallel make and development. Wed May 14 15:59:17 2008 James Cameron * pptp-1.7.2 released. Fri Jan 11 13:20:18 2008 Ilya Voronin * ppp_fcs.h, pptp.c, pptp_ctrl.h, pptp_gre.h, pptp_msg.h: port to Solaris 10/11. Wed Nov 21 14:29:46 2007 Leo Savernik * pptp_ctrl.c (pptp_fd_set): fix compile with an ANSI C89-compliant compiler. Tue Aug 28 10:17:36 2007 James Cameron * README, pptp.c: assign copyright to Free Software Foundation, and make license explicit. Signed-off-by: "C. Scott Ananian" Wed Apr 4 16:30:24 2007 James Cameron * pptp.8, pptp.c: add --test-type and --test-rate options. * pptp_gre.c: use alternate write(2) function for sending GRE packets. * test.c: implement reordering tests to assist with pptpd testing. These tests reorder the stream to simulate real-world examples. Fri Dec 15 02:02:08 2006 Michael Adda * pptp_gre.c: when we fail to write due to a transient error simply ignore it (treat it as a drop). Thu Oct 12 13:52:46 2006 James Cameron * pptp_gre.c (pptp_gre_copy): select(2) may return error, and the code was checking the read file descriptors without checking if they are valid. Thu Aug 17 14:36:18 2006 James Cameron * Makefile: add pptpsetup man page using pod2man. Wed Aug 2 16:21:08 2006 James Cameron * routing.c, routing.h, pptp_callmgr.c (callmgr_main): add route to PPTP server. Experimental feature. Note that this has a side-effect of leaving a route to the server in place after the tunnel has terminated. Wed Aug 2 16:19:06 2006 James Cameron * pptp.c: fix a few compilation warnings. Wed Aug 2 16:02:23 2006 James Cameron * pptpsetup: merge updates from Nelson Ferraz as of 24th April. * Makefile (dist): include pptpsetup in kit. Thu Apr 20 08:52:45 2006 James Cameron * Makefile (dist): remove Reference documentation as the license is non-free. The documentation is available from other sources. Thu Apr 20 08:49:01 2006 James Cameron * pptp.8: merge Debian contribution in 1.7.0-2 by Ola Lundqvist. Mon Apr 3 15:28:37 2006 James Cameron * pptpsetup: add script contributed by Nelson Ferraz. Mon Mar 27 10:09:20 2006 James Cameron * options.pptp: add refuse-pap to default options, along with a comment that a server may need to use PAP or CHAP if it is not using MPPE. Mon Feb 13 14:01:34 2006 James Cameron * pptp-1.7.1 released. Fri Feb 10 10:59:31 2006 James Cameron * pptp.c: use prctl(2) to set process name for gateway process so that killall(1) of pptp will affect control connection call manager only. Mon Aug 29 15:42:03 2005 James Cameron * pptp.c: add --version feature. Mon Aug 22 10:46:38 2005 James Cameron * util.c (sigpipe_assign): remove superfluous sigset variable and calls; they served no purpose. Reported by: Pavol Gono. Sat Aug 20 23:14:25 2005 James Cameron * options.pptp: default to not require MPPE, per Red Hat Bugzilla #166394. Thu Aug 11 10:46:32 2005 James Cameron * PROTOCOL-SECURITY: add write-up regarding protocol security risks. * Makefile (dist): add PROTOCOL-SECURITY write-up. Wed Jul 27 20:49:30 2005 James Cameron * pptp-1.7.0 released. Mon Jul 11 13:17:37 2005 James Cameron * pptp_gre.c (decaps_gre): silently discard packets that are not for this call. Reported by: Alan Jenkins. Thu Mar 31 17:41:17 2005 James Cameron * pptp_ctrl.c (pptp_dispatch): handle signals first, since there's a possibility of premature return from the function. * pptp_callmgr.c (callmgr_main): terminate faster when peer closes control connection. Thu Mar 10 11:07:52 2005 James Cameron * pptp_ctrl.c (pptp_handle_timer): when we close connection due to loss of echo replies, say so in the log. Reported by: Jean Wolter. * pptp_ctrl.c: fix signal deadlock on kernel 2.6.x Reported by: Jean Wolter. * util.c, util.h: adopt sigpipe implementation from pptpd. * pptp_ctrl.c (pptp_conn_open): use sigpipe implementation instead of trying I/O in signal handler (which causes deadlocks). * pptp_ctrl.c (pptp_fd_set): include the sigpipe in the file descriptor set. * pptp_ctrl.c (pptp_dispatch): detect queued signals via sigpipe. * pptp_ctrl.c (pptp_conn_destroy): close the sigpipe. Fri Feb 18 12:38:18 2005 James Cameron * pptp-1.6.0 released. Fri Feb 18 12:38:02 2005 James Cameron * Makefile (install): move options.pptp to this package from the RPM spec file. Tue Dec 14 08:56:07 2004 James Cameron * pptp_ctrl.c (ctrlp_disp): fix typo. From: Avi Kivity Tue Dec 7 09:43:00 2004 James Cameron * pptp_ctrl.c: add error propagation to the ctrlp_disp callchain, so that we don't double-free the connection on a stop control connection reply. From: Avi Kivity Wed Nov 10 09:49:48 2004 James Cameron * util.{c,h}: recent compilers spew a packetload of compilation warnings. From: Avi Kivity Tue Nov 9 12:30:57 2004 James Cameron * pptp.{8,c}, pptp_ctrl.c, pptp_options.h: add --idle-wait (time to wait before sending an echo request on the control connection) and --max-echo-wait (time to wait before giving up on lack of reply to an echo request). The latter is not yet implemented. Tue Nov 9 12:23:48 2004 James Cameron * pptp_callmgr.c, pptp_ctrl.{c,h}: pptp_dispatch and its subordinates insist on handling fatal errors by calling pptp_conn_destroy. unfortunately, as the comments say, callmgr_main uses the connection afterwards with the usual results. Added error propagation to the routines mentioned, allowing callmgr_main to have the honor of closing the connection. From: Avi Kivity Wed Oct 27 21:03:28 2004 James Cameron * pptp_callmgr.c (callmgr_main): pptp sometimes crashes in pptp_fd_set and leaves a core dump. Think this is due to a signal being caught and longjmp'ed to callmgr_main's shutdown label after we are out of that function, causing garbage local variables to be used. From: Avi Kivity Wed Jul 21 16:52:01 CEST 2004 Rein Klazes * pptp_ctrl.c (ctrlp_rep): Do not log sending of echo requests, preventing dead-locks observed with Linux 2.6 systems. The syslog call is not reentrant and must not be used within a signal handler. A better solution would probably be to get rid of the SIGALRM timer altogether. Wed Jul 21 19:00:59 2004 Peter Surda * pptp_callmgr.c (callmgr_main): prevent kill of init. Sat Jun 26 14:37:10 2004 James Cameron * pptp_gre.c (decaps_hdlc): portability fix, use IPPROTO_IP in place of SOL_IP in getsockopt(). From: Thomas Quinot Tue Jun 22 19:08:58 2004 James Cameron * Makefile, AUTHORS, rename package from pptp-linux to pptp. Tue Jun 22 18:08:27 2004 James Cameron * pptp-linux-1.5.0 released. Fri Jun 11 09:28:05 2004 Chris Wilson * pptp.8, pptp_gre.c: make the statistics work properly when buffering is disabled. Fix the issue with log messages claiming buffering when no buffering is being done. Thu Jun 10 16:58:53 2004 James Cameron * pptp.c (main): remove the sleep(3) on termination; it isn't really required; and causes the GRE-to-PPP gateway process to hang around after the connection has been terminated. * pptp.c (open_callmgr): call manager was inheriting the GRE socket, so close it before launching the callmgr, a regression introduced 18th July 2002, in the patch to bind the GRE socket earlier. Thu Jun 10 08:34:17 CEST 2004 Rein Klazes * pptp_callmgr.c: fix a case when the call manager does not shutdown properly, a regression introduced by the changes on 2003 Oct 22 and 23. Wed Jun 9 10:08:02 2004 Chris Wilson * pptp.8, pptp.c, pptp_gre.c, pptp_gre.h: add --nobuffer option to eliminate all buffering of packets, a "pptp quake patch". Wed Jun 9 09:37:06 2004 Paul Howarth * inststr.c: fix non-setting of the command line. Tue Jun 8 21:25:27 2004 James Cameron * pptp-linux-1.5.0-rc1 released. Sat Jun 5 22:44:50 2004 James Cameron * pptp_ctrl.c (pptp_read_some): fix for CPU loop after pppd killed with -9, if read() returns zero, it is because the control connection has closed, so destroy the connection. Wed Mar 24 08:45:12 2004 Mark-Andre Hopf * pptp.c: fix compile for ARM architecture. Mon Mar 8 11:04:00 2004 Chris Wilson * pptp.8: added documentation for command-line options where missing. Updated to reflect the use of getopt. Tue Mar 2 09:53:53 2004 Peter McCurdy * pptp.c (main, do_nothing): do not hang when a connection is refused. When the controlling process (pptp.c) paused while waiting for the child to send SIGUSR1, if the child died then the controlling process wouldn't ever wake up. Now if the child dies, SIGCHLD gets handled and the controlling process quits. Tue Feb 10 20:35:18 2004 James Cameron * pptp_gre.c (decaps_hdlc): temporarily add code that captures additional detail if EMSGSIZE is returned by read(). Fri Jan 2 10:05:17 2004 James Cameron * pptp-linux-1.4.0 released. Mon Dec 1 11:58:24 2003 James Cameron * pptp.c (main): remove arguments debugging printf. Wed Nov 26 12:22:00 2003 Chris Wilson * pptp.c: fixed argument handling so that hostname can be supplied anywhere on the command line, not just at the start. pppd options starting with "-" but before "--" are no longer supported. * pptp.c: added some spacing to improve readability, removed pointless "Step X" comments. * pptp.c: fixed usage message: there should not be a "pppd" in the command line. Mon Nov 10 15:39:41 2003 James Cameron * pptp-linux-1.4.0-rc1 released. Thu Oct 23 12:48:54 2003 James Cameron * pptp_callmgr.c (callmgr_main): if connection fails, pptp enters a CPU loop calling select() with no file descriptors set, and being given EBADF. Introduced by yesterday's modifications. Correct code to detect this situation and break the main loop. Wed Oct 22 13:02:04 2003 James Cameron * pptp_ctrl.c (pptp_call_open): add an assertion to prevent a call open attempt while the control connection is not established. * pptp_callmgr.c (callmgr_main): avoid accepting a UNIX socket connection and therefore calling pptp_call_open() if the control connection has not yet been established. * pptp_ctrl.c (pptp_conn_established): add function for pptp_callmgr.c to use to determine if the control connection has been established. TODO: if a connection reply is not received, what happens? Reported by: John BouAntoun Mon Sep 8 10:33:41 2003 James Cameron * pptp.c: fix for compile on OpenBSD. From: Waldemar Brodkorb Mon Aug 18 12:12:00 2003 Chris Wilson * pptp.c pptp_gre.c util.h: add log level control, to increase or reduce verbosity of log messages, for debugging and for people who have lossy connections. Thu Aug 7 12:20:09 2003 James Cameron * pptp_gre.c (decaps_gre): fix reporting of packet loss. From: Chris Wilson Wed Jun 25 12:59:28 2003 Rein Klazes * pptp_callmgr.c: Wait for the replies on our Call-Clear-Request's and Stop-Control-Connection-Request's. * pptp_ctrl.c: small tweak in a message about non existant call: report the received call ID's. Sun Jun 22 19:08:14 2003 Rein Klazes * pptp_ctrl.c: Log the buffering and sending of ALL control messages (except Echo messages and Replies of course). Change the way the sending of these messages is done. The original way was to first put them into a buffer ( in pptp_send_ctrl_packet()) and at some later write the buffered bytes to the socket ( in pptp_write_some()). Now pptp_send_ctrl_packet first attempts to write the packet directly. Only it the write() does not write all of the bytes, the remaining ones are buffered. This should help to track bugs in this area (like one sending two Start-Control-Request's). Thu Jun 19 09:09:53 2003 Rein Klazes * pptp_ctrl.c: Improve logging of received control packets: Move duplicated code to report on Result codes and General errors to a separate function; Verbosely report error codes embedded in start-control-connection replies; Translated some French comment; Log when an unexpected Outgoing Call Reply is received; Log the receipt of ALL control messages (except in case of echo request/reply packets of which only the first 10 are logged); Shorten the name of the function "pptp_dispatch_ctrl_packet" to "ctrlp_disp", 25 characters is just too much in the log files. Thu Jun 19 10:11:26 2003 Jan Pieter * Makefile (uninstall): include uninstall target, and a minor fix to dist. Wed Jun 18 12:19:09 2003 Rein Klazes * pptp_gre.c: Instead of logging the (a)synchronous mode of ppp, only issue a warning when it conflicts with the mode of pptp. Comparing two sequence numbers for(in)equality is safe even when a wrap-around has occurred. This contrasts with comparing for smaller/bigger. Remove a few unneeded tests for wrap-around. Tue Jun 17 19:40:41 2003 Rein Klazes * dirutil.c, ppp_fcs.c, pptp.c, pptp_gre.c, util.c, vector_test.c, * pptp_ctrl.c, pptp_callmgr.c, vector.c : reformat code with standard 4 spaced indents, uniform function headings and some general tidying up. Patches have been separated in "diff -w" invariant patches that should be safe and others that may be not so safe. Wed Jun 11 14:06:21 2003 Rein Klazes * pptp_gre.c: When a timeout is specified in the select call make it always non-zero. Making this call block makes it likely that pppd will run before the select returns. This results in a big reduction in transmitted ack-only packets (number down from 40% to 0.8% of received packets on my system). Tue Jun 11 18:42:00 2003 James Cameron * pptp-linux-1.3.1 released. Tue Jun 10 13:53:00 2003 Chris Wilson * pptp_callmgr.c: fixed a bug with call manager socket naming, introduced since 1.2.0, which caused confusing problems when trying to open more than one tunnel from the same machine. Tue Jun 10 18:43:34 2003 James Cameron * pptp-linux-1.3.0 released. Tue Jun 3 19:16:52 2003 James Cameron * pptp.8, pptp.c: change SIGHUP to SIGUSR1 for dumping stats. Tue May 20 13:20:00 2003 Chris Wilson * pptp.c: rewrote command-line usage information, to increase clarity and usefulness, and to describe various command-line options which have been added recently. Fri May 23 20:52:05 2003 Rein Klazes * pptp_ctrl.c: increase the verbosity of the log message at the receipt of a Call Disconnect Notification. Mon May 12 16:56:14 2003 James Cameron * Makefile: don't install the manpage with execute permission, swap LDFLAGS and LIBS so that one can say 'make LDFLAGS=-s' to create a stripped versions of the executables, introduce the optimization flag as a make variable, so that one can say 'make DEBUG= OPTIMIZE=-O2 LDFLAGS=-s'. From: Peter Breitenlohner Tue Apr 29 19:13:33 2003 James Cameron * Makefile (dist): remove CVS directory from distribution. Reported by: Ola Lundqvist Tue Apr 15 10:28:00 2003 Chris Wilson * pptp.c, pptp_gre.c, pptp_gre.h: Added GRE statistics counters and RTT calculation, which can be dumped to the syslog by sending a SIGHUP to the GRE-to-PPP gateway process. Mon Apr 14 11:57:00 2003 Chris Wilson * pptp_gre.c: Fixed one case where an ACK could be immediately followed by a data packet, they should be combined into a single packet. Sat Mar 8 2003 15:19:12 2003 Rein Klazes * pptp_gre.c, pqueue.c: Actually copy the packet into a new entry in the packet queue, fixing "unknown protocol" error messages; Change the program logic making it obvious that there is not a memory leak; Restore the "buffering out-of-order packet" log messages, so we have a chance to notice any more side effects. Mon Feb 17 09:18:30 2003 James Cameron * pptp_callmgr.c, pptp.c, Makefile: compile call manager from Makefile rather than include from pptp.c. From: Jan Pieter Sat Feb 15 21:32:42 2003 James Cameron * pptp_ctrl.c, pptp_msg.h: move code out of .h file and into .c file. From: Jan Pieter Sat Feb 15 17:34:38 2003 James Cameron * pptp.c: add include fixes for Apple MacOS X as contributed by an anonymous donor. Sat Feb 15 14:59:20 2003 James Cameron * pptp.c, pptp_callmgr.c, pptp_gre.c: add localbind option to support multiple clients from separate alias IP addresses. From: Yury Tarasievich, with contributions by Ed Marcotte. Fri Feb 14 10:11:27 2003 James Cameron * pptp-linux-1.2.0 released. Fri Feb 14 16:08:26 CET 2003 Rein Klazes * pptp_ctrl.c, pptp_msg.h: tweak the outgoing call reply messages once more. Print the error text that comes with the result code. * pptp.c: close all unused file descriptors belonging to the pty. * pptp_gre.c: Convert received acknowledgement numbers from network to host order. Mon Jan 20 11:46 2003 Chris Wilson * pqueue.c, pqueue.h: changed "expires" field of pqueue entry to a struct timeval for microsecond accuracy (in theory =) * pptp_gre.c: use queue head expiry time as the upper bound on how long we block waiting for data from the network or pppd * pptp.c: allow setting of packet timeout with sub-second accuracy, print error message to stderr and exit if timeout out of range Mon Jan 13 10:28 2003 Chris Wilson * pqueue.c, pqueue.h: added freelist support for packet queue, From: Kai Poitschke . Should help to prevent memory fragmentation and perhaps improve performance a little. * pqueue.c: wrap some log() statements with DEBUG_CMD, should improve performance (thanks to Kai Poitschke) * pptpd.c: bugfix for --log-string option: make a copy of the string with strdup, because optarg will be destroyed Wed Jan 15 14:16:27 2003 James Cameron * AUTHORS, DEVELOPERS, NEWS, README, TODO, USING: add or move CVS header to tail. * DEVELOPERS: change IRC server name to new alias. * AUTHORS: change a few addresses. * INSTALL: rewrite. * README, USING: review and adjust, minor changes. * Makefile (install): add MANDIR and man page. Thu Jan 2 11:28:41 2003 James Cameron * pptp_gre.c: fix response to dropped packets. From: Rein Klazes. Thu Jan 2 09:11:33 2003 James Cameron * pptp.8: the IP address should be before the option. From: Rein Klazes Mon Dec 30 15:57:48 2002 James Cameron * Makefile (install): add install target. Mon Dec 9 08:52:56 2002 James Cameron * pptp_callmgr.c, pptp.c: close stderr after becoming daemon, otherwise ssh sessions, CGI scripts, or other programs that start pptp don't exit properly; they are held up until the pptp processes terminate and close stderr. Thu Nov 21 08:41:39 2002 James Cameron * pptp_gre.c: log return value from the read of the GRE socket as a signed number as well. Wed Nov 20 11:21:48 CET 2002 Rein Klazes * pptp_gre.c: log return value from the read of the pty as a signed number. * pptp_ctrl.c: change the log message to clarify that error codes in a outgoing call reply come from the server, not the client. Wed Nov 20 16:07:30 2002 James Cameron * Makefile (dist): adjust distribution target to include new files since prior use. Wed Nov 20 15:17:12 2002 James Cameron * pptp_gre.c: hid many packet reordering log calls in an ifdef, added a hint as to cause of EIO on read of the pty. Fri Oct 11 15:44 BST 2002 Chris Wilson * pptp.c util.c util.h: added "--logstring" option to help identify connections in syslog output where multiple connections are made from the same host. Wed Oct 02 10:31 BST 2002 Chris Wilson * pptp_gre.c pqueue.c: changed some "log" statements to "warn" to reflect the severity of the condition, allowing much better filtering * util.c: changed _warn to log at WARNING, and _fatal at CRIT level * pptp_gre.c: disabled logging of individual accepted packets * pptp_gre.c: removed a potential NULL pointer dereference crash * pptp_gre.c: fixed the select-timeout check for packets in the queue * pqueue.h: increased window size to 300 following testing * pptp.c: added command-line parameter "--timeout" to set the lost packet timeout Fri Aug 30 09:55:05 CEST 2002 Rein Klazes pptp_gre.c: Try to send more ACK's piggy backed on data packets. Previously if there were any outstanding ACK's to be sent, the program used a non-blocking select (timeout zero) to see if any data packets are available. In most cases there will be none, since the time passed since the last read is too short and an ACK without data will be sent. This change allows one outstanding ACK, for at most 0.5 second, multiple outstanding ACK's are treated as before. Tests show that this gives a big reduction in the number of sent packets. Fri Aug 30 09:15:35 CEST 2002 Rein Klazes * pptp_gre.c: Sequence numbers of sent gre packets should start with 1. Mon Aug 26 10:56:42 CEST 2002 Rein Klazes * pptp.c pptp_gre.c pptp_gre.h: added "--sync" option to work in combination with the pppd sync option. In synchronous mode checksum calculations and (un-)escaping of control characters become unnecessary. This results in big CPU usage reduction. Mon Aug 26 08:53:45 CEST 2002 Rein Klazes * pptp.c: fix bug in command line options parsing (misplaced break in switch statement). Wed Aug 21 10:57:01 2002 James Cameron * pptp.c: add handler for SIGCHLD. From: Peter Surda Thu Aug 15 09:30:00 2002 Chris Wilson * pqueue.h: increased window size following James' tests * pptp_gre.c: check for errors while dequeueing packets Wed Aug 14 20:02:39 2002 James Cameron * pptp.c, pptp_gre.c, pqueue.c: packet re-ordering bugfixes following distributed testing: - Moved daemon() call to run on GRE gateway process only, and not if running as pppd pty - Make select() timeout after 1 second if there is data in the queue, to prevent the queue from having to wait forever - Added log messages for accepting individual packets (noisy!) and for timeouts on missing packets - Fixed a bug with the packet queue (append to tail was broken) - Removed unused code from pqueue.c From: chris@netservers.co.uk Wed Aug 14 11:14:05 2002 James Cameron * pqueue.c, pqueue.h, pptp_gre.c: major changes to support packet re-ordering. Queueing Packets are added to the queue by decaps_gre if their sequence number is higher than expected, but within the window. The default window is defined as 30 packets. Packets which are below the window (older than the most recent packet read) or above the window (too far ahead) are discarded, to protect against denial-of-service attacks. Dequeueing The new function dequeue_gre retrieves packets from the head of the queue which are: 1. Next in sequence (unwrapped or wrapped) 2. Older than five seconds (assuming that the intermediate packets have been lost by the network). The function will continue to read packets from the head of the queue until it finds one which doesn't match these criteria, and then stop. Limitations There are some limitations with this patch: - The receive window is hardcoded at 30 packets. I couldn't see where to get the negotiated and/or current window size from. - The timeout is hardcoded at 5 seconds. A packet which was received and queued within the window, but which should have been preceded by other packets which never appeared, will be accepted anyway after this time (increasing the sequence number to its own). - There may be memory leaks or other bugs in the reordering code. * pqueue.c, pqueue.h, Makefile (PPTP_OBJS, PPTP_DEPS): add two new files to the pptp executable. pqueue.c implements the packet queue used by the reordering code, and pqueue.h describes its public interface. The queue is implemented as a linked list. This is required for reordering. * pptp.c: Add a new command-line option, --debug. Prevents pptp from going into the background. Change to call the daemon(3) function to change the current directory and close the standard file descriptors. This prevents a shell from hanging open if pptp is started remotely. * Makefile (CFLAGS): reduce the optimisation level (gcc's -O flag) to zero (none), to make debugging easier. * pptp.c (get_ip_address): avoid reporting h_errno value. From: chris@netservers.co.uk Thu Jul 18 12:26:25 2002 James Cameron * pptp_gre.h, pptp_gre.c, pptp.c: bind the GRE socket early, by calling the a function pptp_gre_bind. Also changed prototype of pptp_gre_copy. Fixes ICMP Unreachable bug: <1026868263.2855.67.camel@jander> 16th July 2002. From: chris@netservers.co.uk Thu May 30 18:28:02 2002 James Cameron * pptp_ctrl.c (pptp_call_open): do translation to network byte order after limit checking of phone number. From: staelin@hpl.hp.com 2002-05-13 08:14:40 Muli Ben-Yehuda * TODO: remove 'remove setjmp/longjmp' TODO item. * pptp.c: change comment re volatile qualifiers. * pptp_callmgr.c: remove unused function 'conn_callback' and change comment re volatile qualifiers. Thu Apr 4 09:34:10 2002 James Cameron * pptp_ctrl.c: correct spelling error. From: Mary.Deck@COMPAQ.com 2002-03-30 13:13:52 mulix * USING: change URL for bezeq adsl howto. * pptp.c: (get_ip_address): if the user runs 'pptp --quirks ...' instead of 'pptp hostname', we'll get here and then give a verbose error message. Mon Mar 11 10:21:00 2002 mulix * Makefile (all): make config.h before making $(PPTP_BIN). * Makefile (config.h): truncate the file if it exists before inputing to it - '>' instead of '>>' Mon Mar 11 12:48:16 2002 James Cameron * DEVELOPERS: add mailing lists. * Makefile (CFLAGS): remove PPPD_BINARY and PPTP_LINUX_VERSION in favour of a config.h file. * Makefile (config.h): create config.h from Makefile variables * Makefile (PPTP_DEPS): add config.h * pptp.c: include config.h * version.c: include config.h * util.c (PROGRAM_NAME): no longer used by two programs, change PROGRAM_NAME to default to pptp. * Makefile (CFLAGS): remove -DPROGRAM_NAME Fri Mar 8 11:56:00 2002 mulix * TODO: remove notes about compiler warnings, as all compiler warnings are now gone. * pptp.c (main): add volatile qualifier to some variables to silence gcc warnings 'variable might be clobbered by longjmp or vfork'. add note explaining why volatile and that it should be removed when the longjmp is removed. * pptp_callmgr.c (main): likewise. * inststr.c (inststr): break up "ptr += strlen(++ptr)" which is undefined behaviour into two expressions. * pptp.c (main): initialize callmgr_sock to -1 since it might be used uninitialized otherwise. * pptp_ctrl.c (pptp_dispatch_ctrl_packet): #ifdef 0 two unused variables referring to the current packet, which should not be simply erased, as we might want to use them in the future. * util.c: add missing #include. Fri Mar 8 21:11:17 2002 James Cameron * DEVELOPERS: new file. Fri Mar 8 10:12:28 2002 James Cameron * NEWS: convert to newest first format to comply with GNU Coding Standards, The NEWS File. Fri Mar 8 09:01:22 2002 James Cameron * pptp_ctrl.c (pptp_make_packet): Cisco PIX is generating a non-complaint header with the reserved0 field not zero, causing the connection to stop after 60 seconds. From: Rein Klazes Fri Mar 8 08:56:30 2002 James Cameron * TODO: add compiler warnings note. * NEWS: propogate summary of ChangeLog. * AUTHORS: add names from mailing list contributions. From: Rein Klazes * Makefile: remove pptp_callmgr binary * debian/copyright: adjust pointer to current release. * debian/rules, Makefile: remove pptp_callmgr binary now that pptp forks and calls it without exec. Sat Mar 2 04:04:37 2002 James Cameron * README: adopt new mailing lists and point to project web site. * USING: include psuedo-tty activation instructions. * Makefile: increment version, avoid clobbering editor backup files on clean. Fri Mar 1 12:13:03 2002 James Cameron * pptp_gre.c: move #include higher up * pptp_gre.c, pptp_ctrl.c: change unsigned to unsigned int * pptp.c: what we need from pty.h is in libutil.h for FreeBSD and util.h for NetBSD (ideally this should be in autoconf) * pptp.c: synchronisation changes * orckit_quirks.c: #include From: rhialto@azenomei.knuffel.net Fri Nov 23 14:42:07 2001 James Cameron * USING: reformat, add version header. Tue Nov 20 11:01:10 2001 mulix * AUTHORS: add mulix. * USING: add paragraph on quirks support. * orckit_quirks.c: remove debugging call, rename functions and variables consistently. * pptp.c: (usage) remove debugging print. * pptp_ctrl.c: when calling quirks hooks, check their return values and warn if an error occurs. * pptp_quirks.c: orckit_atur3_start_ctrl_conn was renamed orckit_atur3_start_ctrl_conn_hook. From: mulix@actcom.co.il Tue Nov 20 17:01:10 2001 James Cameron * orckit_quirks.c, orckit_quirks.h: add quirks handling for orckit adsl modems. * pptp_quirks.c, pptp_quirks.h: add generic quirks handling. * Makefile (PPTP_DEPS, PPTP_OBJS, CALLMGR_OBJS, CALLMGR_DEPS): add quirks sources and objects. * pptp_ctrl.c: add pptp_set_link, add code to adjust packets depending on quirks. * pptp.c (usage, long_options, main): add --quirks command line option. From: mulix@actcom.co.il Tue Nov 20 16:45:35 2001 James Cameron * pptp_gre.c: enhance error message for bad FCS.