summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/auth.c
diff options
context:
space:
mode:
authoramurai <amurai@FreeBSD.org>1995-02-26 12:18:08 +0000
committeramurai <amurai@FreeBSD.org>1995-02-26 12:18:08 +0000
commiteeb422fed8735188e4e141578d0383ae57ba8343 (patch)
treed05da3a88d3d54962fad8582d501f1b7ad9500b9 /usr.sbin/ppp/auth.c
parent7c16fe40ea66e6edc77ed310b654360adf11b9f9 (diff)
downloadFreeBSD-src-eeb422fed8735188e4e141578d0383ae57ba8343.zip
FreeBSD-src-eeb422fed8735188e4e141578d0383ae57ba8343.tar.gz
New user Process PPP based on iij-ppp0.94beta2.
o Supporting SYNC SIO device (But need a device driver) - add "set speed sync" o Fixing bug for Predictor-1 function. o Add new parameter that re-sent interval for set timeout commands. o Improving RTT (Round Trip Time) and reducing processor time. - Previous Timer service was using polling, and now using SIGALRM ;-) - A 0.94beta2 will not work correctly.... -- Follows are additinal feature not including 0.94beta2 o Support Proxy ARP - add "enable/disable proxy" commands o Marging common routine in CHAP/PAP. o Enhancing LCP/IPCP log information. o Support local Authfication connection on port 300x and tty. - You can set up pair of your "hostname -s" and password in ppp.secret. if either ppp.secret file nor your hostname line don't exist, It will notify a message and working as same as previous version.(Backword compatibility) - If you did set up them, It's allow connection but nothing to do except help and passwd command. - add "passwd yourpasswd" commands o Support afilter - keep Alive filter that a packet can send/receiving according to ifilter/ofilter but doesn't count it as preventing idle timer expires. - Same syntax of other filters. o Fixing bugs reported by current user for previous one. Thanks !! Reviewed by: Atsushi Murai (amurai@spec.co.jp)
Diffstat (limited to 'usr.sbin/ppp/auth.c')
-rw-r--r--usr.sbin/ppp/auth.c94
1 files changed, 92 insertions, 2 deletions
diff --git a/usr.sbin/ppp/auth.c b/usr.sbin/ppp/auth.c
index d6a5f72..1bd6e2e 100644
--- a/usr.sbin/ppp/auth.c
+++ b/usr.sbin/ppp/auth.c
@@ -16,18 +16,69 @@
* 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.
- *
+ *
* $Id:$
- *
+ *
* TODO:
* o Imprement check against with registerd IP addresses.
*/
#include "fsm.h"
+#include "lcpproto.h"
#include "ipcp.h"
+#include "vars.h"
+#include "auth.h"
extern FILE *OpenSecret();
extern void CloseSecret();
+LOCAL_AUTH_VALID
+LocalAuthInit(void){
+
+ char *p;
+
+ if ( gethostname( VarShortHost, sizeof(VarShortHost))) {
+ return(1);
+ }
+ if ( p = strchr( VarShortHost, '.' ) )
+ *p = '\0';
+
+ return LocalAuthValidate( SECRETFILE, VarShortHost, "" );
+
+}
+
+LOCAL_AUTH_VALID
+LocalAuthValidate( char *fname, char *system, char *key) {
+ FILE *fp;
+ int n;
+ char *vector[20]; /* XXX */
+ char buff[200]; /* XXX */
+ LOCAL_AUTH_VALID rc;
+
+ rc = NOT_FOUND; /* No system entry */
+ fp = OpenSecret(fname);
+ if (fp == NULL)
+ return( rc );
+ while (fgets(buff, sizeof(buff), fp)) {
+ if (buff[0] == '#')
+ continue;
+ buff[strlen(buff)-1] = 0;
+ bzero(vector, sizeof(vector));
+ n = MakeArgs(buff, &vector);
+ if (n < 1)
+ continue;
+ if (strcmp(vector[0], system) == 0) {
+ if ( vector[1] != (char *) NULL && strcmp(vector[1], key) == 0) {
+ rc = VALID; /* Valid */
+ } else {
+ rc = INVALID; /* Invalid */
+ }
+ break;
+ }
+ }
+ CloseSecret(fp);
+ return( rc );
+}
+
int
AuthValidate(fname, system, key)
char *fname, *system, *key;
@@ -110,3 +161,42 @@ int len, setaddr;
CloseSecret(fp);
return(NULL); /* Invalid */
}
+
+static void
+AuthTimeout(authp)
+struct authinfo *authp;
+{
+ struct pppTimer *tp;
+
+ tp = &authp->authtimer;
+ StopTimer(tp);
+ if (--authp->retry > 0) {
+ StartTimer(tp);
+ (authp->ChallengeFunc)(++authp->id);
+ }
+}
+
+void
+StartAuthChallenge(authp)
+struct authinfo *authp;
+{
+ struct pppTimer *tp;
+
+ tp = &authp->authtimer;
+ StopTimer(tp);
+ tp->func = AuthTimeout;
+ tp->load = VarRetryTimeout * SECTICKS;
+ tp->state = TIMER_STOPPED;
+ tp->arg = (void *)authp;
+ StartTimer(tp);
+ authp->retry = 3;
+ authp->id = 1;
+ (authp->ChallengeFunc)(authp->id);
+}
+
+void
+StopAuthTimer(authp)
+struct authinfo *authp;
+{
+ StopTimer(&authp->authtimer);
+}
OpenPOWER on IntegriCloud