martin carpenter

contents

most popular
2012/05/05, updated 2012/12/15
ubuntu unity lens for vim
2010/04/14
ckwtmpx

pptp client for Solaris

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.

Excerpts from original page:

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:

Solaris 8

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