PPPD versions and extra Help

I’ve been having problems with PPPD and thought I’d post the
results of the investigations in case it helps others and
documents what needs to be fixed in a future release.

There are currently THREE versions of PPD available for Neutrino.

They are:

The version that installs with 6.1.0:

/usr/sbin$ ./pppd.6.1.0.orig --version
pppd version 2.3.11

The version that PATCH-A installed:

/usr/sbin$ ./pppd.patch.a --version
pppd version 2.3.11

And the good and working version that has the bugs fixed
and is available in:

http://develpers.qnx.com/Fixes/Software/pppd.tar.gz

Which is:

/usr/sbin$ ./pppd --version
pppd version 2.3.11

Yes, all claim to be the one-and-only 2.3.11! Is this a BSD-ish
leftover that QNX doesn’t use or are these meant to be different?

They are different, and have different sizes and dates, and
so looking at the dates and sizes is one way to tell them
apart, and to tell which one you’re running:

/usr/sbin$ dir ppp*
-rwsrwxr-x 1 root bin 169094 Oct 13 00:12 pppd*
-rwsrwxr-x 1 root bin 144024 Aug 24 09:05 pppd.patch.a*
-rwsrwxr-x 1 root bin 144056 Jun 22 18:31 pppd.6.1.0.orig*

Note that installing Patch-A will replace the latest one if
you let it.

They also have different IDENT strings for the files they are
built from, which shows when they were modified:

/usr/sbin$ grep “^&Id” pppd
$Id: auth.c,v 1.5.2.2 2001/10/11 18:53:17 xtang Exp $
$Id: ccp.c,v 1.2 2001/04/23 21:07:10 xtang Exp $
$Id: chap.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: chap_ms.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: demand.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: fsm.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: ipcp.c,v 1.4 2001/06/04 16:01:56 bstecher Exp $
$Id: lcp.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: magic.c,v 1.1 2000/11/22 15:11:06 xtang Exp $
$Id: main.c,v 1.4.2.2 2001/10/11 20:19:32 dabrown Exp $
$Id: options.c,v 1.6.2.1 2001/07/18 20:30:34 xtang Exp $
$Id: upap.c,v 1.2 2001/06/04 16:01:56 bstecher Exp $
$Id: utils.c,v 1.1 2000/11/22 15:11:06 xtang Exp $

The PATCH-A one has the following differences:

$Id: auth.c,v 1.5.2.1 2001/07/18 20:33:06 xtang Exp $
$Id: main.c,v 1.4 2001/06/04 16:01:56 bstecher Exp $

The original one has the following differences:

$Id: auth.c,v 1.5 2001/06/04 16:01:55 bstecher Exp $
$Id: main.c,v 1.4 2001/06/04 16:01:56 bstecher Exp $
$Id: options.c,v 1.6 2001/06/07 22:15:58 xtang Exp $

Another problem with the current PPPD is that the Help Viewer
documentation is incomplete. There are actually FIVE sets
of “documentation”.

  • There’s what’s in the Help Viewer.

  • There’s what you get with “/usr/sbin/pppd --help”:

/usr/sbin$ ./pppd --help
pppd version 2.3.11
Usage: ./pppd [ options ], where options are:
Communicate over the named device
Set the baud rate to
: Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap Set the desired async map to hex
auth Require authentication from peer
connect

Invoke shell command

to set up the serial
line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file Take options from file
modem Use modem control lines
mru Set MRU value to for negotiation
See pppd(8) for more options.

  • There’s “pppd(8)”, which is meant to list the rest, but
    there no MAN page for PPPD - the Help Viewer is meant to
    cover all the options.

  • There’s “use /usr/sbin/pppd” which goes on for 136 lines but
    is still incomplete, and

  • There’s "strings /usr/sbin/pppd | more} which shows options
    that aren’t documented in any of the above ones, like:

allow-ip
Allow group members to use privileged options
privgroup
Password for authenticating us to the peer
password
Get PAP user and password from file
PAP passwords are encrypted
papcrypt
Use system password database for PAP
login
Don’t require peer to authenticate
noauth
Require authentication from peer
auth
Set remote name for authentication
remotename
Must use hostname for authentication
usehostname
Set name for auth with peer
user
Set local name for authentication
Don’t allow CHAP authentication with peer
-chap
Don’t agree to auth to peer with CHAP
refuse-chap
+chap
Require CHAP authentication from peer
require-chap
Don’t allow PAP authentication with peer
-pap
Don’t agree to auth to peer with PAP
refuse-pap
+pap
Require PAP authentication from peer
require-pap

The treasure in the above is “-chap”, which allowed me to get
around the but in the original pppd where it SIGSEGV’d on
receipt of the CHAP packet.

Of course some of the above sets of listed options may not be
supported in QNX, but who’s to know with all the differences?

Tom Evans
InitialSurnameAt
tennyson.com.au