summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/fsm.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/fsm.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/fsm.c')
-rw-r--r--usr.sbin/ppp/fsm.c33
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
OpenPOWER on IntegriCloud