diff options
author | amurai <amurai@FreeBSD.org> | 1995-02-26 12:18:08 +0000 |
---|---|---|
committer | amurai <amurai@FreeBSD.org> | 1995-02-26 12:18:08 +0000 |
commit | eeb422fed8735188e4e141578d0383ae57ba8343 (patch) | |
tree | d05da3a88d3d54962fad8582d501f1b7ad9500b9 /usr.sbin/ppp/auth.c | |
parent | 7c16fe40ea66e6edc77ed310b654360adf11b9f9 (diff) | |
download | FreeBSD-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.c | 94 |
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); +} |