Refactor: Add pppcp_set_data & pppcp_get_data

Using these functions makes the code much cleaner than trying to pass
the priv pointer everywhere
This commit is contained in:
Denis Kenzior 2010-04-05 14:16:00 -05:00
parent 331fcaea32
commit 60d96505dc
4 changed files with 22 additions and 11 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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);
}

View File

@ -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;