blob: e3b472100e3747f92b77514436eee19000f314ea [file] [log] [blame]
// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// 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;
}