mirror of git://git.sysmocom.de/ofono
ppp: Reset the options whenever the layer is down
So we can re-negotiate the options if the layer is opened again.
This commit is contained in:
parent
8c1677713f
commit
dbbaa3c416
|
@ -101,6 +101,20 @@ static void ipcp_generate_config_options(struct ipcp_data *ipcp)
|
||||||
ipcp->options_len = len;
|
ipcp->options_len = len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ipcp_reset_config_options(struct ipcp_data *ipcp)
|
||||||
|
{
|
||||||
|
ipcp->req_options = REQ_OPTION_IPADDR | REQ_OPTION_DNS1 |
|
||||||
|
REQ_OPTION_DNS2 | REQ_OPTION_NBNS1 |
|
||||||
|
REQ_OPTION_NBNS2;
|
||||||
|
ipcp->ipaddr = 0;
|
||||||
|
ipcp->dns1 = 0;
|
||||||
|
ipcp->dns2 = 0;
|
||||||
|
ipcp->nbns1 = 0;
|
||||||
|
ipcp->nbns2 = 0;
|
||||||
|
|
||||||
|
ipcp_generate_config_options(ipcp);
|
||||||
|
}
|
||||||
|
|
||||||
static void ipcp_up(struct pppcp_data *pppcp)
|
static void ipcp_up(struct pppcp_data *pppcp)
|
||||||
{
|
{
|
||||||
struct ipcp_data *ipcp = pppcp_get_data(pppcp);
|
struct ipcp_data *ipcp = pppcp_get_data(pppcp);
|
||||||
|
@ -129,6 +143,10 @@ static void ipcp_up(struct pppcp_data *pppcp)
|
||||||
|
|
||||||
static void ipcp_down(struct pppcp_data *pppcp)
|
static void ipcp_down(struct pppcp_data *pppcp)
|
||||||
{
|
{
|
||||||
|
struct ipcp_data *ipcp = pppcp_get_data(pppcp);
|
||||||
|
|
||||||
|
ipcp_reset_config_options(ipcp);
|
||||||
|
pppcp_set_local_options(pppcp, ipcp->options, ipcp->options_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -307,12 +325,7 @@ struct pppcp_data *ipcp_new(GAtPPP *ppp)
|
||||||
}
|
}
|
||||||
|
|
||||||
pppcp_set_data(pppcp, ipcp);
|
pppcp_set_data(pppcp, ipcp);
|
||||||
|
ipcp_reset_config_options(ipcp);
|
||||||
ipcp->req_options = REQ_OPTION_IPADDR | REQ_OPTION_DNS1 |
|
|
||||||
REQ_OPTION_DNS2 | REQ_OPTION_NBNS1 |
|
|
||||||
REQ_OPTION_NBNS2;
|
|
||||||
|
|
||||||
ipcp_generate_config_options(ipcp);
|
|
||||||
pppcp_set_local_options(pppcp, ipcp->options, ipcp->options_len);
|
pppcp_set_local_options(pppcp, ipcp->options, ipcp->options_len);
|
||||||
|
|
||||||
return pppcp;
|
return pppcp;
|
||||||
|
|
|
@ -90,6 +90,14 @@ static void lcp_generate_config_options(struct lcp_data *lcp)
|
||||||
lcp->options_len = len;
|
lcp->options_len = len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void lcp_reset_config_options(struct lcp_data *lcp)
|
||||||
|
{
|
||||||
|
lcp->req_options = REQ_OPTION_ACCM;
|
||||||
|
lcp->accm = 0;
|
||||||
|
|
||||||
|
lcp_generate_config_options(lcp);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* signal the Up event to the NCP
|
* signal the Up event to the NCP
|
||||||
*/
|
*/
|
||||||
|
@ -103,7 +111,10 @@ static void lcp_up(struct pppcp_data *pppcp)
|
||||||
*/
|
*/
|
||||||
static void lcp_down(struct pppcp_data *pppcp)
|
static void lcp_down(struct pppcp_data *pppcp)
|
||||||
{
|
{
|
||||||
/* XXX should implement a way to signal NCP */
|
struct lcp_data *lcp = pppcp_get_data(pppcp);
|
||||||
|
|
||||||
|
lcp_reset_local_options(lcp);
|
||||||
|
pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -255,10 +266,7 @@ struct pppcp_data *lcp_new(GAtPPP *ppp)
|
||||||
|
|
||||||
pppcp_set_data(pppcp, lcp);
|
pppcp_set_data(pppcp, lcp);
|
||||||
|
|
||||||
lcp->req_options = REQ_OPTION_ACCM;
|
lcp_reset_local_options(lcp);
|
||||||
lcp->accm = 0;
|
|
||||||
|
|
||||||
lcp_generate_config_options(lcp);
|
|
||||||
pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
|
pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
|
||||||
|
|
||||||
return pppcp;
|
return pppcp;
|
||||||
|
|
Loading…
Reference in New Issue