From: Richard Buckle (

In the past few years there’s been an explosion of mutually incompatible
PPP drivers for the Mac. Writing one product to support them all cleanly
was a programmer’s nightmare — not to mention the testing.

The Universal PPP API is the solution: a general wrapper that dynamically
detects which PPP driver is in use and maps to its sub-API. Programmers can
simply code to the Universal API. For users, it “just works”, even if they
switch between PPP flavours without restarting. Performance has been
carefully optimised.

The underlying code is modular, and other protocols (such as SLIP) which
have a well-definined API can easily be added. Mail me if you would like me
to add support for your protocol.

The Universal PPP API currently supports:
* Metrowerks C, C++ and Pascal.
* Open Transport 1.1.1 or better, or MacTCP 2.0.6.
* All versions of MacPPP, FreePPP, OT/PPP and ARA/PPP
available at the time of writing.

Example projects are included to get you started.

CodeWarrior Pro 1 or later.

If you use the Universal PPP Interfaces you must send me one registered
copy of every program you create with it, plus US$0 if the project is
freeware, US$20 if the project is shareware, or US$50 if the project is
commercial. You may not redistribute the Universal PPP Interfaces without
my explicit written consent. You must include the notice ” Universal PPP
Interfaces 1997 Sailmaker Software Ltd. All rights reserved.” in your
program’s about box and documentation.

The source code is available for US$150, for which you may modify and use
it but not redistribute it. The full source code has some additional
options, including a “fake” mode for testing your UI without dialling up,
an option to use the FreePPP 2.5 commercial SDK if you have it, and an
option for PPPSDKCleanup() to return immediately without waiting for OT/PPP
to finish any work in progress.

The Universal PPP API is available from (
and has also been sent to info-mac.

Sailmaker Software: Programming consultancy services.
PGP key: 368D27E9 = 9F ED F7 B9 02 AF 13 C5 23 B5 30 D6 18 10 E4 76