summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/ppp')
-rw-r--r--accel-pppd/ppp/ipcp_opt_ipaddr.c2
-rw-r--r--accel-pppd/ppp/ppp.h1
-rw-r--r--accel-pppd/ppp/ppp_ccp.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/accel-pppd/ppp/ipcp_opt_ipaddr.c b/accel-pppd/ppp/ipcp_opt_ipaddr.c
index b2a74ca..ed0de51 100644
--- a/accel-pppd/ppp/ipcp_opt_ipaddr.c
+++ b/accel-pppd/ppp/ipcp_opt_ipaddr.c
@@ -133,7 +133,7 @@ static int ipaddr_recv_conf_req(struct ppp_ipcp_t *ipcp, struct ipcp_option_t *o
if (ipaddr_opt->ip->peer_addr == opt32->val) {
ipcp->ppp->ipaddr = ipaddr_opt->ip->addr;
ipcp->ppp->peer_ipaddr = ipaddr_opt->ip->peer_addr;
- ipcp->delay_ack = !ipcp->started;
+ ipcp->delay_ack = !ipcp->ppp->ccp_started;
return IPCP_OPT_ACK;
}
diff --git a/accel-pppd/ppp/ppp.h b/accel-pppd/ppp/ppp.h
index 9d2409e..4476f05 100644
--- a/accel-pppd/ppp/ppp.h
+++ b/accel-pppd/ppp/ppp.h
@@ -103,6 +103,7 @@ struct ppp_t
int terminating:1;
int terminated:1;
int terminate_cause;
+ int ccp_started:1;
void *buf;
int buf_size;
diff --git a/accel-pppd/ppp/ppp_ccp.c b/accel-pppd/ppp/ppp_ccp.c
index a8b813d..f0334e8 100644
--- a/accel-pppd/ppp/ppp_ccp.c
+++ b/accel-pppd/ppp/ppp_ccp.c
@@ -133,6 +133,7 @@ int ccp_layer_start(struct ppp_layer_data_t *ld)
log_ppp_debug("ccp_layer_start\n");
if (list_empty(&ccp->options) || !conf_ccp) {
+ ccp->ppp->ccp_started = 1;
ppp_layer_started(ccp->ppp, &ccp->ld);
return 0;
}
@@ -183,6 +184,7 @@ static void ccp_layer_up(struct ppp_fsm_t *fsm)
if (!ccp->started) {
log_ppp_debug("ccp_layer_started\n");
ccp->started = 1;
+ ccp->ppp->ccp_started = 1;
if (ccp_set_flags(ccp->ppp->unit_fd, 1, 1)) {
ppp_terminate(ccp->ppp, TERM_NAS_ERROR, 0);
return;