X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fupap.h;h=709cd6294ffd2bf216799da3284518bea0238a2c;hp=ba4e153cb330169d76bedbe0b1aa33cf450d529f;hb=HEAD;hpb=2115d4179805e719798ce83482f2cf70d70cabdf diff --git a/pppd/upap.h b/pppd/upap.h index ba4e153..c86e520 100644 --- a/pppd/upap.h +++ b/pppd/upap.h @@ -1,28 +1,58 @@ /* * upap.h - User/Password Authentication Protocol definitions. * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * $Id: upap.h,v 1.6 1996/07/01 01:21:45 paulus Exp $ + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifndef PPP_UPAP_H +#define PPP_UPAP_H + +#include "pppdconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + /* * Packet header = Code, id, length. */ -#define UPAP_HEADERLEN (sizeof (u_char) + sizeof (u_char) + sizeof (u_short)) +#define UPAP_HEADERLEN 4 /* @@ -44,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 */ @@ -81,7 +111,46 @@ typedef struct upap_state { extern upap_state upap[]; -void upap_authwithpeer __P((int, char *, char *)); -void upap_authpeer __P((int)); +void upap_authwithpeer(int, char *, char *); +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