blob: 2d245788a75188836b211f9ce474e9e05d9e9e19 [file] [log] [blame]
PPPoPPTP-Android plugin
=======================
This plugin was written for AOSP project from scratch. It has nothing to do with
accel-pptp plugin [1].
This plugin adds support for upstream kernel PPTP implementation in pppd daemon.
Only PNS (client) part of PPTP is implemented, as we don't use Android devices
in PAC mode.
In general case, the execution flow for VPN startup on Android devices is:
1. Run PPTP client (mtpd)
2. mtpd obtains remote Call ID on OCRP (Outgoing-Call-Reply) packet
3. mtpd creates PPTP socket
4. mtpd runs pppd, passing PPTP socket as to pppopptp-android (as parameter)
5. pppd dlopen() pppopptp-android plugin (because it received corresponding
arguments from mtpd)
Main task of this plugin is to obtain PPTP socket FD from mtpd and pass it
back to pppd when .connect() callback is executed.
All control packets are handled in mtpd. PPP packets (like LCP) are handled in
pppd. Data packets are handled by kernel PPTP driver.
[1] http://accel-pptp.sourceforge.net/