Home | History | Annotate | Download | only in shims
      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