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/fsm.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/fsm.c')
-rw-r--r-- | usr.sbin/ppp/fsm.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/usr.sbin/ppp/fsm.c b/usr.sbin/ppp/fsm.c index 89f9151..e1e8d99 100644 --- a/usr.sbin/ppp/fsm.c +++ b/usr.sbin/ppp/fsm.c @@ -16,9 +16,9 @@ * 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 Refer loglevel for log output * o Better option log display @@ -229,6 +229,7 @@ u_char *option; int count; { LogPrintf(LOG_LCP, "%s: SendConfigAck(%s)\n", fp->name, StateNames[fp->state]); + (fp->DecodeConfig)(option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGACK, lhp->id, option, count); } @@ -240,6 +241,7 @@ u_char *option; int count; { LogPrintf(LOG_LCP, "%s: SendConfigRej(%s)\n", fp->name, StateNames[fp->state]); + (fp->DecodeConfig)(option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGREJ, lhp->id, option, count); } @@ -252,6 +254,7 @@ int count; { LogPrintf(LOG_LCP, "%s: SendConfigNak(%s)\n", fp->name, StateNames[fp->state]); + (fp->DecodeConfig)(option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGNAK, lhp->id, option, count); } @@ -318,16 +321,18 @@ struct fsm *fp; struct fsmheader *lhp; struct mbuf *bp; { - int plen; + int plen, flen; int ackaction = 0; plen = plength(bp); - if (plen < sizeof(struct fsmconfig)) { -logprintf("** plen = %d\n", plen); + flen = ntohs(lhp->length) - sizeof(*lhp); + if (plen < flen) { + logprintf("** plen (%d) < flen (%d)\n", plen, flen); pfree(bp); return; } + /* * Check and process easy case */ @@ -349,7 +354,7 @@ logprintf("## state = %d\n", fp->state); return; } - (fp->DecodeConfig)(bp, MODE_REQ); + (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_REQ); if (nakp == NakBuff && rejp == RejBuff) ackaction = 1; @@ -440,10 +445,11 @@ struct fsm *fp; struct fsmheader *lhp; struct mbuf *bp; { - int plen; + int plen, flen; plen = plength(bp); - if (plen < sizeof(struct fsmconfig)) { + flen = ntohs(lhp->length) - sizeof(*lhp); + if (plen < flen) { pfree(bp); return; } @@ -469,7 +475,7 @@ struct mbuf *bp; return; } - (fp->DecodeConfig)(bp, MODE_NAK); + (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_NAK); switch (fp->state) { case ST_REQSENT: @@ -556,10 +562,11 @@ struct fsm *fp; struct fsmheader *lhp; struct mbuf *bp; { - int plen; + int plen, flen; plen = plength(bp); - if (plen < sizeof(struct fsmconfig)) { + flen = ntohs(lhp->length) - sizeof(*lhp); + if (plen < flen) { pfree(bp); return; } @@ -586,7 +593,7 @@ struct mbuf *bp; return; } - (fp->DecodeConfig)(bp, MODE_REJ); + (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_REJ); switch (fp->state) { case ST_REQSENT: @@ -791,7 +798,7 @@ struct mbuf *bp; codep = FsmCodes + lhp->code - 1; LogPrintf(LOG_LCP, "%s: Received %s (%d) state = %s (%d)\n", - fp->name, codep->name, lhp->code, StateNames[fp->state], fp->state); + fp->name, codep->name, lhp->id, StateNames[fp->state], fp->state); #ifdef DEBUG LogMemory(); #endif |