1 // 2 // Copyright (C) 2012 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 // pppd.h declares a field member called |class| which forces this file to be C. 18 #include <pppd/pppd.h> 19 20 #include "shill/shims/c_ppp.h" 21 22 char pppd_version[] = VERSION; 23 24 static void PPPOnUp(void* data, int arg) { 25 PPPOnConnect(ifname); 26 } 27 28 static void PPPOnPhaseChange(void* data, int arg) { 29 if (arg == PHASE_AUTHENTICATE) { 30 PPPOnAuthenticateStart(); 31 } else if (arg == PHASE_NETWORK) { 32 // Either no authentication was required, or authentication has 33 // completed. 34 // 35 // TODO(quiche): We can also transition backwards to PHASE_NETWORK, 36 // when disconnecting. In such cases, the may want to omit this 37 // (spurious) call. 38 PPPOnAuthenticateDone(); 39 } else if (arg == PHASE_DISCONNECT || arg == PHASE_DEAD) { 40 PPPOnDisconnect(); 41 } 42 } 43 44 __attribute__ ((visibility("default"))) int plugin_init() { 45 PPPInit(); 46 47 chap_check_hook = PPPHasSecret; 48 pap_check_hook = PPPHasSecret; 49 50 pap_passwd_hook = PPPGetSecret; 51 chap_passwd_hook = PPPGetSecret; 52 53 add_notifier(&ip_up_notifier, PPPOnUp, NULL); 54 add_notifier(&phasechange, PPPOnPhaseChange, NULL); 55 add_notifier(&exitnotify, PPPOnExit, NULL); 56 57 return 0; 58 } 59