[ ChangeLog | Download .tar.gz | Browse the source ]
README file from the current release:
The wmpptpd is a linux PPTP server. After few minor changes it can be used
as a client, too.
This server is distributed under the terms of GNU GPL license, check
``COPYING'' for details.
(c) 2000, 2001 Milan Pikula and Marek Zelem .
The PPTP, point-to-point tunelling protocol, is used to tunell a PPP connection
over the local network. It is often used to build the virtual private networks
using Windows 9x machines and NT server. There exists a PPTP server and PPTP
client for Linux, both of them used to communicate with a windows machine:
server (PoPToP): http://poptop.lineo.com
client (PPTP-Linux): http://cag.lcs.mit.edu/~cananian/Projects/PPTP
However, there are more implementations than the one in Windows around, and
we've got a Compaq Microcom 4000 modem rack, which answers digital incomming
calls and forwards the requests to a server (using PPTP of course). At first,
we tried to adapt a PoPToP server or client to do the job for us, but
unfortunately found many problems, so we started from scratch. Our goals
- working PPTP implementation
- extensible and flexible design
- multiple connections at one time
- support for as many pptp-talking clients as possible
After few nights, the first versions were ready, few bugs were caught (for
example, we had to throw our implementation of windows, as microcom 4000 does
not use them; we found few serious design flaws of PPTP protocol itself,
spent some time catching the bugs with multiple connections, ...). Then we
installed this all on our production server and forgot about it. After some
time, we've got some bug reports, which needed to be ironed out. So we
re-visited the sources, fixed the bugs and made this release.
... is almost as simple as usual GNU software installation:
zcat wmpptpd.tar.gz | tar xf -
At this point, you have to create the wmpptp-options and wmpptpd_ppp_cmdlines,
both probably located in /etc. Look at the section ``How does it work'' for
Eventually you might want to tune some parameters. For the list of known
options and their values, look at ./configure --help.
Just a small footnote: to connect with Compaq Microcom 4000, use
--disable-give-ack --disable-have-ack --disable-window --enable-outseq
and to connect to PPTP-Linux client, use
--enable-give-ack --enable-have-ack --enable-window --enable-outseq
How does it work
wmpptpd waits for client's IN_CALL_REQUEST, and then starts a pppd and connect it to client.
File /etc/ppp/wmpptp-options contains the options for pppd started from wmpptpd,
which should be similar to your /etc/ppp/options.
File /etc/wmpptpd_ppp_cmdlines contains multiple lines, each containing
a commandline arguments for pppd. When starting multiple instances of pppd,
each one is given a parameter to use the wmpptp-options file, followed by
one line of arguments from wmpptpd_ppp_cmdlines. Thus, the maximum number
of simultaneously running pppd is limited by number of lines with command-line
File /etc/wmpptpd_ppp_cmdlines will be most likely used to specify unique
IP address for each pppd.
A little contribution to the non-existing ``bugs and features'' chapter:
In fact we support a server part of PPTP. We can communicate with linux client,
compaq microcom 4000 and probably many more devices. As the various implementations
of PPTP are almost as miserable as the protocol itself, you must tune the
options of the wmpptp daemon at compile time to include/exclude some features,
in order to communicate with other end. There is not very much work to be
done to implement client mode, too - in fact, it's just copying few lines of code
and make some command-line parameters for this.
Plans, known bugs, todo list
As this is a open-source project, we encourage ANYONE to contribute. This is not
our priority project, so most likely we will not do a regular support or updates.
If someone wants to take over this project, (s)he's welcome. Here is the current
1. Documentation!!! This have to be written by someone, translated into few
languages and kept up-to-date with software.
2. client mode
3. test this against all real pptp implementations (clients, servers) to find out,
what needs to be done and what configuration options to use when communicating
with the implementation.
You? great, well, mail to firstname.lastname@example.org for details.
0.0.9 (first public release), May 22 2001
- reverted order of "dialing to/dialed from"
- fixed the problem of opening too many GRE connections
- added command-line parsing (-v, -h)
- autoconf/automake support
0.0.8, Oct 24 2000
- added 'lastlog' logging
0.0.7, Oct 24 2000
- fixed little bug in PNS code (caller_id order)
- fixed memory leak when returning ppp struct into chain
- more verbose error messages
- zombies does not exist anymore
0.0.6, Oct 20 2000
- correctly closing the connections, more verbose logging
0.0.5, Oct 14 2000
- fixed bug in multiple connection support
- discarding wrong GRE headers (the daemon is much more stable now:)
- closing the pty for child process
0.0.4, Oct 13 2000
- GRE channel support
- various bugfixes
0.0.3 (lost release), Oct 10 2000
- added the structs from pptpd-1.1.1 containing this statement:
$Id: pptpdefs.h,v 1.2 1999/12/23 21:43:33 patl Exp $
(very usefull as I was lazy to go through entire RFC and
write the structs myself)
0.0.2, Oct 9 2000
- control connection works, starting ppp, added some pptp structs.
what about GRE?
0.0.1, Oct 7 2000
- initial release
PoPToP project - a PPTP server
PPTP-Linux - a client