diff options
author | brian <brian@FreeBSD.org> | 2002-03-30 12:52:55 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2002-03-30 12:52:55 +0000 |
commit | 631238220a5b5f952606b7e8cdd805b95ea1c17a (patch) | |
tree | 8f46e94d73b1705bd4b32a02305225bb47e33ab6 | |
parent | 4aad533fbf9d1afeb10de8d0087049afdabd71b3 (diff) | |
download | FreeBSD-src-631238220a5b5f952606b7e8cdd805b95ea1c17a.zip FreeBSD-src-631238220a5b5f952606b7e8cdd805b95ea1c17a.tar.gz |
Add a sprinkling of mp_Down() calls to ensure that we don't think that
the multi-link NCP is up when it isn't.
-rw-r--r-- | usr.sbin/ppp/bundle.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c index 5280548..64cce9d 100644 --- a/usr.sbin/ppp/bundle.c +++ b/usr.sbin/ppp/bundle.c @@ -330,9 +330,11 @@ bundle_LayerDown(void *v, struct fsm *fp) fp->link->name); } - if (!others_active) + if (!others_active) { /* Down the NCPs. We don't expect to get fsm_Close()d ourself ! */ ncp2initial(&bundle->ncp); + mp_Down(&bundle->ncp.mp); + } } } @@ -342,6 +344,7 @@ bundle_LayerFinish(void *v, struct fsm *fp) /* The given fsm is now down (fp cannot be NULL) * * If it's the last NCP, fsm_Close all LCPs + * If it's the last NCP, bring any MP layer down */ struct bundle *bundle = (struct bundle *)v; @@ -354,6 +357,7 @@ bundle_LayerFinish(void *v, struct fsm *fp) if (dl->state == DATALINK_OPEN) datalink_Close(dl, CLOSE_STAYDOWN); fsm2initial(fp); + mp_Down(&bundle->ncp.mp); } } @@ -400,6 +404,7 @@ bundle_Close(struct bundle *bundle, const char *name, int how) ncp_Close(&bundle->ncp); else { ncp2initial(&bundle->ncp); + mp_Down(&bundle->ncp.mp); for (dl = bundle->links; dl; dl = dl->next) datalink_Close(dl, how); } @@ -934,6 +939,7 @@ bundle_LinkClosed(struct bundle *bundle, struct datalink *dl) if (dl->physical->type != PHYS_AUTO) /* Not in -auto mode */ bundle_DownInterface(bundle); ncp2initial(&bundle->ncp); + mp_Down(&bundle->ncp.mp); bundle_NewPhase(bundle, PHASE_DEAD); bundle_StopIdleTimer(bundle); } |