PDEL_PPP(3)

NAME
pdel_ppp - PPP library for VPNs that uses netgraph(3)

LIBRARY
PDEL Library (libpdel, -lpdel)

SYNOPSIS
#include <sys/types.h>
#include <pdel/ppp/*.h>

DESCRIPTION
The libpdel(3) library includes a PPP stack with support for:

-   The IP network layer (IPCP)

-   Authentication via PAP, CHAP-MD5, MS-CHAPv1, MS-CHAPv2, and RADIUS

-   The PPTP transport layer with PPTP server support

-   The L2TP transport layer with L2TP server support

-   Microsoft MPPE encryption

This library works in conjunction with the various netgraph(4) nodes that come with the FreeBSD kernel and is a PPP library, not a PPP server. That is, it handles all the PPP state machinery, while deferring all “policy” decisions to the application code via callbacks. For example, the application is ultimately responsible for acquiring and verifying user credentials, determining what IP addresses may be negotiated, etc.

The library constructs netgraph node graphs that have a “loose end” netgraph hook which transmits and receives IP packets; the application is responsible for connecting this hook to something useful (e.g., an ng_iface(3) node), configuring the interface, etc. The library makes available to the application all the information that it needs in order to properly do such configuration (such as the negotiated IP addresses).

At this time, there is no documentation other than this man page and the comments in the code. There is a fully functioning sample PPTP/L2TP test server in the test subdirectory that is statically configured and allows a single connection at a time. It demonstrates how to create a server and the application callbacks. The application callbacks are documented in the corresponding header files.

Because PPTP and L2TP are the only supported transport types, this library is most useful for implementing VPN software.

SEE ALSO
libpdel(3),

HISTORY
The PDEL library was developed at Packet Design, LLC. http://www.packetdesign.com/

AUTHORS
Archie Cobbs <archie@freebsd.org>