// Copyright 2018 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;
}
