aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/ppp/datalink.c
diff options
context:
space:
mode:
authorBrian Somers <brian@FreeBSD.org>1999-10-07 07:32:12 +0000
committerBrian Somers <brian@FreeBSD.org>1999-10-07 07:32:12 +0000
commit14e34a55c3ab95ff7203cf7bd100ad584e505f00 (patch)
tree77151792148ee13e6f41ff0acb9dfa546318a28c /usr.sbin/ppp/datalink.c
parentdbb1a3463c9c23eb17bcc57fea1e8eaf164b2468 (diff)
downloadsrc-14e34a55c3ab95ff7203cf7bd100ad584e505f00.tar.gz
src-14e34a55c3ab95ff7203cf7bd100ad584e505f00.zip
Don't go from datalink state opening directly to lcp, go via
carrier instead so that we can set up our carrier detect timer and eventually notice when we lose carrier. Honour the script.run value when coming out of carrier state. PR: 14145
Notes
Notes: svn path=/head/; revision=51978
Diffstat (limited to 'usr.sbin/ppp/datalink.c')
-rw-r--r--usr.sbin/ppp/datalink.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/usr.sbin/ppp/datalink.c b/usr.sbin/ppp/datalink.c
index 3113a1342563..4dc104eec01d 100644
--- a/usr.sbin/ppp/datalink.c
+++ b/usr.sbin/ppp/datalink.c
@@ -277,7 +277,7 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
dl->name, dl->cfg.dial.max - dl->dial.tries,
dl->cfg.dial.max);
} else
- datalink_LoginDone(dl);
+ datalink_NewState(dl, DATALINK_CARRIER);
return datalink_UpdateSet(d, r, w, e, n);
} else {
if (!(dl->physical->type & (PHYS_DDIAL|PHYS_DEDICATED)) &&
@@ -316,14 +316,20 @@ datalink_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e,
return 0; /* A device timer is running to wake us up again */
case CARRIER_OK:
- datalink_NewState(dl, DATALINK_LOGIN);
- chat_Init(&dl->chat, dl->physical, dl->cfg.script.login, 0, NULL);
+ if (dl->script.run) {
+ datalink_NewState(dl, DATALINK_LOGIN);
+ chat_Init(&dl->chat, dl->physical, dl->cfg.script.login, 0, NULL);
+ } else
+ datalink_LoginDone(dl);
return datalink_UpdateSet(d, r, w, e, n);
case CARRIER_LOST:
- datalink_NewState(dl, DATALINK_HANGUP);
physical_Offline(dl->physical); /* Is this required ? */
- chat_Init(&dl->chat, dl->physical, dl->cfg.script.hangup, 1, NULL);
+ if (dl->script.run) {
+ datalink_NewState(dl, DATALINK_HANGUP);
+ chat_Init(&dl->chat, dl->physical, dl->cfg.script.hangup, 1, NULL);
+ } else
+ datalink_HangupDone(dl);
return datalink_UpdateSet(d, r, w, e, n);
}