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