This page is the new home for http://mcarpenter.free.fr/Dev/pptp.php which was written around autumn 2000. Unless you really are looking for a PPTP client for Solaris 2.5.1 then you will be happier looking at http://blog.curthread.org/projects/pptp_solaris, which patches the latest version of the Linux client (now available at http://pptpclient.sourceforge.net), just as I did a decade or so back. If you really are looking for an antique Solaris client, then I'm sorry this is all of the information that I have left on the subject.
NB: When I started down this road, I didn't realise that the Solaris
PPTP daemon is actually called asppp(8)
, so I also took
the source to the Linux pppd and compiled and installed that (with CHAP
support) on my Solaris 2.5.1 system. (It compiled and installed straight
out of the box). All of my tests have thus been performed with that
binary and not the native Solaris daemon - although I wouldn't expect
that to cause any problems. YMMV. Summary of changes performed for
Solaris 2.5.1:
uint32
, uint_16
, uint_8
following the models in /usr/include
since
these aren't standard defines on Solaris 2.5.1. inet_addr.c
to stop the compiler moaning about inet_aton()
.
compat.[ch]
to define vsnprintf()
and
snprintf()
which aren't defined under Solaris 2.5.1.
Some correspondence from a couple of Austrian guys who tried to make this stuff work on Solaris 8. I wasn't much help, but here's the cause of the problem that they encountered:
Hi again, just wanted to let you know the cause of the problem. In pptp_ctrl.c, there's the following if statement:if (ntoh8(packet->result_code)!=1) { /* some problem with start */ /* if result_code == 5, we might fall back to different version */ if (conn->callback!=NULL) conn->callback(conn, CONN_OPEN_FAIL); close_reason = PPTP_STOP_PROTOCOL; goto pptp_conn_close; }The RFC for PPTP states that a certain reserved part of the header (Reserved1), which is tested by that if statement, must be 0; and if everything works fine, the modem will return a value of 0. If that happens, the if statement will think it is a problem with the peer's protocol and exit. You can either change the statement to match !=0, or ammend it and add !=0; both works fine. Again Thanks for your help, rgds Dragos