[pptp-server] What the heck... Announcing pptpd-1.1.1pre1

Patrick J. LoPresti patl at cag.lcs.mit.edu
Thu Dec 23 17:53:54 CST 1999


Several people expressed interest in trying out my rewritten
pptpgre.c, and Matt told me he would be willing to release a
"development" version 1.1.1.  I have not tested it enough myself to be
ready to inflict it on very many people, though, so I would rather
release it with a more conservative version number first.  I hope I am
not being too presumptuous in...

...introducing pptpd-1.1.1pre1.  You can download it from:

  <http://cag-www.lcs.mit.edu/~patl/pptpd-1.1.1pre1.tar.gz>

*** This is a hacker's release; you should not let this anywhere near
*** your production systems.

It logs things a bit differently and it has the potential for logging
quite a bit of interesting info for people with problems.  For real
verbosity, search through pptpgre.c for calls to syslog() preceeded by
"#ifdef 0", and change one or more of them to "#ifdef 1".

I welcome all testers, although I am especially interested in hearing
from people who can read the source.  My changes are in pptpgre.h and
pptpgre.c (which I almost completely rewrote), plus enough mods in
pptpctrl.c to work with the changed interface.  The new code does not
yet do anything differently than the old code, although it may be
differently-buggy.  The code's structure should make it easy to
implement real windowing and packet reordering should we find them to
be useful.  Whether these would be useful will become clear from the
log messages people collect, so do not forget to include such messages
in any feedback!

I modified things to log to the local2 facility instead of daemon,
because that's where my pppd logs and it's nice to keep these messages
in their own little world.  So you will need to edit your syslog.conf
to catch local2.* messages.  If you don't like this, just frob the
LOG_PPTP definition in defaults.h and rebuild.

The code in pptpgre.c is meant to be read; I would appreciate any
suggestions and would be glad to answer any questions.  A brief
roadmap follows.

It is helpful to have some familiarity with RFCs 2637 and 1662
(specifically, the format of the GRE and HDLC packets), but it is not
necessary.

Roughly the first half of pptpgre.c is devoted to HDLC-to-GRE routines
(pushing data from the PPP daemon to the PPTP client).  The second
half is GRE-to-HDLC routines (vice-versa).  The basic strategy in each
direction is the same: Read from the source, translate a packet, send
it out.  I gave each of these three operations a separate function for
each direction.

All state is kept in a struct gre_state, a pointer to which is passed
to all routines.  Most routines are idempotent: The first thing they
do is check the gre_state to see whether they should proceed.  My goal
was to make the code "obviously correct" and to worry about efficiency
later.

I will be away for a few days starting tomorrow, but if you find any
critical problems in the next 12 hours or so I can probably fix them
before I leave.

Many thanks in advance for helping me test this!

 - Pat




More information about the pptp-server mailing list