diff options
author | brian <brian@FreeBSD.org> | 1998-08-01 01:02:41 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1998-08-01 01:02:41 +0000 |
commit | 16c3373eb0f0d353895742f81daf8a2b2a6cf90d (patch) | |
tree | 1865109945b1d7343582bd9009f2c644f8fbab70 /usr.sbin/ppp/fsm.c | |
parent | d3b63b723f6605c08198b4c8a78bedb14bdfd551 (diff) | |
download | FreeBSD-src-16c3373eb0f0d353895742f81daf8a2b2a6cf90d.zip FreeBSD-src-16c3373eb0f0d353895742f81daf8a2b2a6cf90d.tar.gz |
When we receive an LCP config REQ in Opened state,
do TLD *before* processing the config request as
TLD initialises the peers LCP values.
It's strange that an IRC isn't required here - but
I'll bow to the wisdom of the rfc.
Diffstat (limited to 'usr.sbin/ppp/fsm.c')
-rw-r--r-- | usr.sbin/ppp/fsm.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/usr.sbin/ppp/fsm.c b/usr.sbin/ppp/fsm.c index 4888e09..dc5913f 100644 --- a/usr.sbin/ppp/fsm.c +++ b/usr.sbin/ppp/fsm.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: fsm.c,v 1.34 1998/06/27 23:48:43 brian Exp $ + * $Id: fsm.c,v 1.35 1998/06/30 23:04:15 brian Exp $ * * TODO: */ @@ -488,6 +488,10 @@ FsmRecvConfigReq(struct fsm *fp, struct fsmheader *lhp, struct mbuf *bp) case ST_STOPPING: mbuf_Free(bp); return; + case ST_OPENED: + (*fp->fn->LayerDown)(fp); + (*fp->parent->LayerDown)(fp->parent->object, fp); + break; } dec.ackend = dec.ack; @@ -501,13 +505,11 @@ FsmRecvConfigReq(struct fsm *fp, struct fsmheader *lhp, struct mbuf *bp) ackaction = 1; switch (fp->state) { - case ST_OPENED: - (*fp->fn->LayerDown)(fp); - FsmSendConfigReq(fp); - (*fp->parent->LayerDown)(fp->parent->object, fp); - break; case ST_STOPPED: FsmInitRestartCounter(fp); + /* Fall through */ + + case ST_OPENED: FsmSendConfigReq(fp); break; } |