| // |
| // Copyright (C) 2012 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| // pppd.h declares a field member called |class| which forces this file to be C. |
| #include <pppd/pppd.h> |
| |
| #include "shill/shims/c_ppp.h" |
| |
| char pppd_version[] = VERSION; |
| |
| static void PPPOnUp(void* data, int arg) { |
| PPPOnConnect(ifname); |
| } |
| |
| static void PPPOnPhaseChange(void* data, int arg) { |
| if (arg == PHASE_AUTHENTICATE) { |
| PPPOnAuthenticateStart(); |
| } else if (arg == PHASE_NETWORK) { |
| // Either no authentication was required, or authentication has |
| // completed. |
| // |
| // TODO(quiche): We can also transition backwards to PHASE_NETWORK, |
| // when disconnecting. In such cases, the may want to omit this |
| // (spurious) call. |
| PPPOnAuthenticateDone(); |
| } else if (arg == PHASE_DISCONNECT || arg == PHASE_DEAD) { |
| PPPOnDisconnect(); |
| } |
| } |
| |
| __attribute__ ((visibility("default"))) int plugin_init() { |
| PPPInit(); |
| |
| chap_check_hook = PPPHasSecret; |
| pap_check_hook = PPPHasSecret; |
| |
| pap_passwd_hook = PPPGetSecret; |
| chap_passwd_hook = PPPGetSecret; |
| |
| add_notifier(&ip_up_notifier, PPPOnUp, NULL); |
| add_notifier(&phasechange, PPPOnPhaseChange, NULL); |
| add_notifier(&exitnotify, PPPOnExit, NULL); |
| |
| return 0; |
| } |