RXR = 15,
};
+struct pppcp_data {
+ unsigned char state;
+ struct pppcp_timer_data config_timer_data;
+ struct pppcp_timer_data terminate_timer_data;
+ guint max_failure;
+ guint failure_counter;
+ guint32 magic_number;
+ GList *config_options;
+ GList *acceptable_options;
+ GList *unacceptable_options;
+ GList *rejected_options;
+ GList *applied_options;
+ GAtPPP *ppp;
+ guint8 identifier; /* don't think I need this now */
+ guint8 config_identifier;
+ guint8 terminate_identifier;
+ guint8 reject_identifier;
+ const struct pppcp_action *action;
+ guint16 valid_codes;
+ gpointer priv;
+ guint16 proto;
+ const char *prefix;
+ const char **option_strings;
+};
+
static void pppcp_generate_event(struct pppcp_data *data,
enum pppcp_event_type event_type,
guint8 *packet, guint len);
static void pppcp_this_layer_up(struct pppcp_data *data)
{
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
if (action->this_layer_up)
action->this_layer_up(data);
static void pppcp_this_layer_down(struct pppcp_data *data)
{
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
if (action->this_layer_down)
action->this_layer_down(data);
static void pppcp_this_layer_started(struct pppcp_data *data)
{
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
if (action->this_layer_started)
action->this_layer_started(data);
static void pppcp_this_layer_finished(struct pppcp_data *data)
{
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
pppcp_trace(data);
if (action->this_layer_finished)
int i = 0;
struct ppp_option *option;
enum option_rval rval;
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
pppcp_trace(data);
GList *list;
struct ppp_option *acked_option;
guint i = 0;
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
pppcp_trace(data);
struct ppp_option *config_option;
guint i = 0;
enum option_rval rval;
- struct pppcp_action *action = data->action;
+ const struct pppcp_action *action = data->action;
pppcp_trace(data);
return pppcp->magic_number;
}
-struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto)
+struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto,
+ const struct pppcp_action *action)
{
struct pppcp_data *data;
data->ppp = ppp;
data->proto = proto;
+ data->action = action;
return data;
}
guint restart_timer;
};
-struct pppcp_data {
- unsigned char state;
- struct pppcp_timer_data config_timer_data;
- struct pppcp_timer_data terminate_timer_data;
- guint max_failure;
- guint failure_counter;
- guint32 magic_number;
- GList *config_options;
- GList *acceptable_options;
- GList *unacceptable_options;
- GList *rejected_options;
- GList *applied_options;
- GAtPPP *ppp;
- guint8 identifier; /* don't think I need this now */
- guint8 config_identifier;
- guint8 terminate_identifier;
- guint8 reject_identifier;
- struct pppcp_action *action;
- guint16 valid_codes;
- gpointer priv;
- guint16 proto;
- const char *prefix;
- const char **option_strings;
-};
-
-struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto);
+struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto,
+ const struct pppcp_action *action);
void pppcp_free(struct pppcp_data *data);
void pppcp_set_data(struct pppcp_data *pppcp, gpointer data);
if (!data)
return NULL;
- pppcp = pppcp_new(ppp, IPCP_PROTO);
+ pppcp = pppcp_new(ppp, IPCP_PROTO, &ipcp_action);
if (!pppcp) {
g_printerr("Failed to allocate PPPCP struct\n");
g_free(data);
pppcp_set_valid_codes(pppcp, IPCP_SUPPORTED_CODES);
pppcp_set_data(pppcp, data);
- /* set the actions */
- pppcp->action = &ipcp_action;
-
/* add the default config options */
ipcp_option = g_try_malloc0(6);
if (!ipcp_option) {
struct pppcp_data *pppcp;
struct ppp_option *option;
- pppcp = pppcp_new(ppp, LCP_PROTOCOL);
+ pppcp = pppcp_new(ppp, LCP_PROTOCOL, &lcp_action);
if (!pppcp) {
g_print("Failed to allocate PPPCP struct\n");
return NULL;
pppcp_set_valid_codes(pppcp, LCP_SUPPORTED_CODES);
- /* set the actions */
- pppcp->action = &lcp_action;
-
/* add the default config options */
option = g_try_malloc0(6);
if (option == NULL) {