/* * auth.h * * Written by Archie Cobbs * Copyright (c) 1995-1999 Whistle Communications, Inc. All rights reserved. * See ``COPYRIGHT.whistle'' */ #ifndef _AUTH_H_ #define _AUTH_H_ #include "pap.h" #include "chap.h" #include "timer.h" /* * DEFINITIONS */ #define AUTH_RETRIES 3 #define AUTH_MSG_WELCOME "Welcome\r\n" #define AUTH_MSG_INVALID "Login incorrect\r\n" #define AUTH_MSG_BAD_PACKET "Incorrectly formatted packet\r\n" #define AUTH_MSG_NOT_ALLOWED "Login not allowed for this account\r\n" #define AUTH_MSG_NOT_EXPECTED "Unexpected packet\r\n" #define AUTH_MSG_ACCT_DISAB "Account disabled\r\n" #define AUTH_MSG_RESTR_HOURS "Login hours restricted\r\n" #define AUTH_PEER_TO_SELF 0 #define AUTH_SELF_TO_PEER 1 #define AUTH_FAIL_INVALID_LOGIN 0 #define AUTH_FAIL_ACCT_DISABLED 1 #define AUTH_FAIL_NO_PERMISSION 2 #define AUTH_FAIL_RESTRICTED_HOURS 3 #define AUTH_FAIL_INVALID_PACKET 4 #define AUTH_FAIL_NOT_EXPECTED 5 /* State of authorization process during authorization phase */ struct auth { u_short peer_to_self; /* What I need from peer */ u_short self_to_peer; /* What peer needs from me */ struct pppTimer timer; /* Max time to spend doing auth */ struct papinfo pap; /* PAP state */ struct chapinfo chap; /* CHAP state */ }; typedef struct auth *Auth; /* For returning a secrets file entry */ struct authdata { char authname[AUTH_MAX_AUTHNAME]; char password[AUTH_MAX_PASSWORD]; char extcmd[AUTH_MAX_EXTCMD]; struct in_range range; u_int range_valid:1; u_int external:1; }; typedef struct authdata *AuthData; /* * FUNCTIONS */ extern void AuthStart(void); extern void AuthStop(void); extern void AuthFinish(int which, int ok, AuthData auth); extern int AuthGetData(AuthData auth, int complain, int *whyFail); extern int AuthPreChecks(AuthData auth, int complain, int *whyFail); extern const char *AuthFailMsg(int proto, int alg, int whyFail); #endif