X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fupap.h;h=709cd6294ffd2bf216799da3284518bea0238a2c;hp=af09cd914176225a76a1fd6ef28ff760660e84a0;hb=HEAD;hpb=fb3529ccfc1868e8563a2dcfbae7b386125fccbc diff --git a/pppd/upap.h b/pppd/upap.h index af09cd9..c86e520 100644 --- a/pppd/upap.h +++ b/pppd/upap.h @@ -1,5 +1,3 @@ -#include "pppdconf.h" - /* * upap.h - User/Password Authentication Protocol definitions. * @@ -46,6 +44,11 @@ #include "pppdconf.h" +#ifdef __cplusplus +extern "C" { +#endif + + /* * Packet header = Code, id, length. */ @@ -71,7 +74,7 @@ typedef struct upap_state { int us_passwdlen; /* Password length */ int us_clientstate; /* Client state */ int us_serverstate; /* Server state */ - u_char us_id; /* Current id */ + unsigned char us_id; /* Current id */ int us_timeouttime; /* Timeout (seconds) for auth-req retrans. */ int us_transmits; /* Number of auth-reqs sent */ int us_maxtransmits; /* Maximum number of auth-reqs to send */ @@ -113,4 +116,41 @@ void upap_authpeer(int); extern struct protent pap_protent; +typedef int (pap_check_hook_fn)(void); +typedef int (pap_auth_hook_fn)(char *user, char *passwd, char **msgp, + struct wordlist **paddrs, + struct wordlist **popts); +typedef void (pap_logout_hook_fn)(void); +typedef int (pap_passwd_hook_fn)(char *user, char *passwd); + +/* + * This function will return a value of 1 to indicate that a plugin intent to + * supply a username or a password through the pap_auth_hook callback. + * + * A return value of > 0 will avoid parsing pap-secrets file. + */ +extern pap_check_hook_fn *pap_check_hook; + +/* + * This hook is used to check if a username and password matches against the + * PAP secrets. + */ +extern pap_auth_hook_fn *pap_auth_hook; + +/* + * Hook for plugin to know about PAP user logout. + */ +extern pap_logout_hook_fn *pap_logout_hook; + +/* + * A plugin can chose to supply its own user and password overriding what + * previously has been configured. Hook is only valid when pppd is acting + * as a client + */ +extern pap_passwd_hook_fn *pap_passwd_hook; + +#ifdef __cplusplus +} +#endif + #endif // PPP_UPAP_H