ppp: Introduce ppp_net_up_notify and use it

This is slightly cleaner way than defining a weird callback function.
This commit is contained in:
Denis Kenzior 2010-04-13 14:55:10 -05:00
parent 6525826455
commit d1d73a75fc
3 changed files with 17 additions and 16 deletions

View File

@ -85,16 +85,6 @@ void ppp_debug(GAtPPP *ppp, const char *str)
ppp->debugf(str, ppp->debug_data);
}
void ppp_connect_cb(GAtPPP *ppp, GAtPPPConnectStatus success,
const char *ip, const char *dns1, const char *dns2)
{
if (ppp->connect_cb == NULL)
return;
ppp->connect_cb(success, ppp_net_get_interface(ppp->net),
ip, dns1, dns2, ppp->connect_data);
}
#define PPPINITFCS16 0xffff /* Initial FCS value */
#define PPPGOODFCS16 0xf0b8 /* Good final FCS value */
@ -373,8 +363,6 @@ void ppp_enter_phase(GAtPPP *ppp, enum ppp_phase phase)
/* Send UP & OPEN events to the IPCP layer */
pppcp_signal_open(ppp->ipcp);
pppcp_signal_up(ppp->ipcp);
/* bring network phase up */
ppp_net_open(ppp->net);
break;
case PPP_PHASE_TERMINATION:
pppcp_signal_close(ppp->lcp);
@ -416,6 +404,20 @@ void ppp_auth_notify(GAtPPP *ppp, gboolean success)
ppp_enter_phase(ppp, PPP_PHASE_TERMINATION);
}
void ppp_net_up_notify(GAtPPP *ppp, const char *ip,
const char *dns1, const char *dns2)
{
/* bring network phase up */
ppp_net_open(ppp->net);
if (ppp->connect_cb == NULL)
return;
ppp->connect_cb(G_AT_PPP_CONNECT_SUCCESS,
ppp_net_get_interface(ppp->net),
ip, dns1, dns2, ppp->connect_data);
}
void ppp_set_recv_accm(GAtPPP *ppp, guint32 accm)
{
ppp->recv_accm = accm;

View File

@ -79,6 +79,8 @@ void ppp_enter_phase(GAtPPP *ppp, enum ppp_phase phase);
void ppp_transmit(GAtPPP *ppp, guint8 *packet, guint infolen);
void ppp_set_auth(GAtPPP *ppp, const guint8 *auth_data);
void ppp_auth_notify(GAtPPP *ppp, gboolean success);
void ppp_net_up_notify(GAtPPP *ppp, const char *ip,
const char *dns1, const char *dns2);
void ppp_set_recv_accm(GAtPPP *ppp, guint32 accm);
void ppp_set_xmit_accm(GAtPPP *ppp, guint32 accm);
void ppp_set_pfc(GAtPPP *ppp, gboolean pfc);
@ -90,8 +92,6 @@ void lcp_free(struct pppcp_data *lcp);
void lcp_protocol_reject(struct pppcp_data *lcp, guint8 *packet, gsize len);
struct pppcp_data *ipcp_new(GAtPPP *ppp);
void ipcp_free(struct pppcp_data *data);
void ppp_connect_cb(GAtPPP *ppp, GAtPPPConnectStatus success,
const char *ip, const char *dns1, const char *dns2);
/* CHAP related functions */
struct ppp_chap *ppp_chap_new(GAtPPP *ppp, guint8 method);

View File

@ -135,8 +135,7 @@ static void ipcp_up(struct pppcp_data *pppcp)
addr.s_addr = ipcp->dns2;
inet_ntop(AF_INET, &addr, dns2, INET_ADDRSTRLEN);
ppp_connect_cb(pppcp_get_ppp(pppcp), G_AT_PPP_CONNECT_SUCCESS,
ip[0] ? ip : NULL,
ppp_net_up_notify(pppcp_get_ppp(pppcp), ip[0] ? ip : NULL,
dns1[0] ? dns1 : NULL,
dns2[0] ? dns2 : NULL);
}