summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gatchat/ppp_cp.c15
-rw-r--r--gatchat/ppp_cp.h4
-rw-r--r--gatchat/ppp_ipcp.c13
-rw-r--r--gatchat/ppp_lcp.c1
4 files changed, 22 insertions, 11 deletions
diff --git a/gatchat/ppp_cp.c b/gatchat/ppp_cp.c
index de6c7766..c24d6122 100644
--- a/gatchat/ppp_cp.c
+++ b/gatchat/ppp_cp.c
@@ -936,7 +936,7 @@ static guint8 pppcp_process_configure_request(struct pppcp_data *data,
*/
if (action->option_process) {
g_list_foreach(data->acceptable_options,
- action->option_process, data->priv);
+ action->option_process, data);
g_list_foreach(data->acceptable_options, remove_config_option,
data);
}
@@ -986,8 +986,7 @@ static guint8 pppcp_process_configure_ack(struct pppcp_data *data,
* the config_options list.
*/
if (action->option_process)
- action->option_process(acked_option,
- data->priv);
+ action->option_process(acked_option, data);
g_free(list->data);
data->config_options =
@@ -1287,6 +1286,16 @@ void pppcp_free(struct pppcp_data *data)
g_free(data);
}
+void pppcp_set_data(struct pppcp_data *pppcp, gpointer data)
+{
+ pppcp->priv = data;
+}
+
+gpointer pppcp_get_data(struct pppcp_data *pppcp)
+{
+ return pppcp->priv;
+}
+
struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto)
{
struct pppcp_data *data;
diff --git a/gatchat/ppp_cp.h b/gatchat/ppp_cp.h
index 43068212..acd5329e 100644
--- a/gatchat/ppp_cp.h
+++ b/gatchat/ppp_cp.h
@@ -89,6 +89,10 @@ struct pppcp_data {
struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto);
void pppcp_free(struct pppcp_data *data);
+
+void pppcp_set_data(struct pppcp_data *pppcp, gpointer data);
+gpointer pppcp_get_data(struct pppcp_data *pppcp);
+
void pppcp_add_config_option(struct pppcp_data *data,
struct ppp_option *option);
void pppcp_set_valid_codes(struct pppcp_data *data, guint16 codes);
diff --git a/gatchat/ppp_ipcp.c b/gatchat/ppp_ipcp.c
index c3e781c7..922681bd 100644
--- a/gatchat/ppp_ipcp.c
+++ b/gatchat/ppp_ipcp.c
@@ -57,7 +57,7 @@ enum ipcp_option_types {
static void ipcp_up(struct pppcp_data *pppcp)
{
- struct ipcp_data *data = pppcp->priv;
+ struct ipcp_data *data = pppcp_get_data(pppcp);
char ip[INET_ADDRSTRLEN];
char dns1[INET_ADDRSTRLEN];
char dns2[INET_ADDRSTRLEN];
@@ -125,7 +125,8 @@ static guint ipcp_option_scan(struct ppp_option *option, gpointer user)
static void ipcp_option_process(gpointer data, gpointer user)
{
struct ppp_option *option = data;
- struct ipcp_data *ipcp = user;
+ struct pppcp_data *pppcp = user;
+ struct ipcp_data *ipcp = pppcp_get_data(pppcp);
switch (option->type) {
case IP_ADDRESS:
@@ -188,7 +189,8 @@ struct pppcp_data *ipcp_new(GAtPPP *ppp)
pppcp->option_strings = ipcp_option_strings;
pppcp->prefix = "ipcp";
- pppcp->priv = data;
+
+ pppcp_set_data(pppcp, data);
/* set the actions */
pppcp->action = &ipcp_action;
@@ -209,11 +211,8 @@ struct pppcp_data *ipcp_new(GAtPPP *ppp)
void ipcp_free(struct pppcp_data *data)
{
- struct ipcp_data *ipcp = data->priv;
+ struct ipcp_data *ipcp = pppcp_get_data(data);
- /* free ipcp */
g_free(ipcp);
-
- /* free pppcp */
pppcp_free(data);
}
diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
index 6460f336..aee7b104 100644
--- a/gatchat/ppp_lcp.c
+++ b/gatchat/ppp_lcp.c
@@ -220,7 +220,6 @@ struct pppcp_data *lcp_new(GAtPPP *ppp)
pppcp->option_strings = lcp_option_strings;
pppcp->prefix = "lcp";
- pppcp->priv = pppcp;
/* set the actions */
pppcp->action = &lcp_action;