diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-04-13 14:55:10 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-04-13 14:55:10 -0500 |
commit | d1d73a75fc46e9ea88d4daf5c9223e8d9268c305 (patch) | |
tree | 9c74b8bd1e9d10b444c549c2c0d1d05e242e23f6 /gatchat | |
parent | 6525826455939c96105826bfcec2d334827748eb (diff) | |
download | ofono-d1d73a75fc46e9ea88d4daf5c9223e8d9268c305.tar.bz2 |
ppp: Introduce ppp_net_up_notify and use it
This is slightly cleaner way than defining a weird callback function.
Diffstat (limited to 'gatchat')
-rw-r--r-- | gatchat/gatppp.c | 26 | ||||
-rw-r--r-- | gatchat/ppp.h | 4 | ||||
-rw-r--r-- | gatchat/ppp_ipcp.c | 3 |
3 files changed, 17 insertions, 16 deletions
diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c index b7c4cd38..c49223ff 100644 --- a/gatchat/gatppp.c +++ b/gatchat/gatppp.c @@ -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; diff --git a/gatchat/ppp.h b/gatchat/ppp.h index 9373242b..f3b325e2 100644 --- a/gatchat/ppp.h +++ b/gatchat/ppp.h @@ -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); diff --git a/gatchat/ppp_ipcp.c b/gatchat/ppp_ipcp.c index f695079e..1eebd21f 100644 --- a/gatchat/ppp_ipcp.c +++ b/gatchat/ppp_ipcp.c @@ -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); } |