#ifndef NPPPD_AUTH_H
#define NPPPD_AUTH_H 1
#include <netinet/in.h>
#define NPPPD_AUTH_TYPE_LOCAL 1
#define NPPPD_AUTH_TYPE_RADIUS 2
struct _npppd_auth_base;
struct _npppd_auth_radius;
struct _npppd_auth_local;
typedef struct _npppd_auth_base npppd_auth_base;
typedef struct _npppd_auth_radius npppd_auth_radius;
typedef struct _npppd_auth_local npppd_auth_local;
typedef struct _npppd_auth_user {
char *username;
char *password;
struct in_addr framed_ip_address;
struct in_addr framed_ip_netmask;
char *calling_number;
char space[0];
} npppd_auth_user;
#ifdef __cplusplus
extern "C" {
#endif
npppd_auth_base *npppd_auth_create (int, const char *, void *);
void npppd_auth_dispose (npppd_auth_base *);
void npppd_auth_destroy (npppd_auth_base *);
int npppd_auth_reload (npppd_auth_base *);
int npppd_auth_get_user_password (npppd_auth_base *, const char *, char *, int *);
int npppd_auth_get_framed_ip (npppd_auth_base *, const char *, struct in_addr *, struct in_addr *);
int npppd_auth_get_calling_number (npppd_auth_base *, const char *, char *, int *);
int npppd_auth_get_type (npppd_auth_base *);
int npppd_auth_is_usable (npppd_auth_base *);
int npppd_auth_is_ready (npppd_auth_base *);
int npppd_auth_is_disposing (npppd_auth_base *);
int npppd_auth_is_eap_capable (npppd_auth_base *);
const char *npppd_auth_get_name (npppd_auth_base *);
const char *npppd_auth_get_suffix (npppd_auth_base *);
const char *npppd_auth_username_for_auth (npppd_auth_base *, const char *, char *);
void *npppd_auth_radius_get_radius_auth_setting (npppd_auth_radius *);
void *npppd_auth_radius_get_radius_acct_setting (npppd_auth_radius *);
int npppd_auth_user_session_unlimited(npppd_auth_base *);
int npppd_check_auth_user_max_session(npppd_auth_base *, int);
#ifdef __cplusplus
}
#endif
#endif