summaryrefslogtreecommitdiffstats
path: root/gatchat
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-04-13 14:55:10 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-04-13 14:55:10 -0500
commitd1d73a75fc46e9ea88d4daf5c9223e8d9268c305 (patch)
tree9c74b8bd1e9d10b444c549c2c0d1d05e242e23f6 /gatchat
parent6525826455939c96105826bfcec2d334827748eb (diff)
downloadofono-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.c26
-rw-r--r--gatchat/ppp.h4
-rw-r--r--gatchat/ppp_ipcp.c3
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);
}