From 5f0d8493e7f2f60130e34927789b9b4effacb533 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 1 Apr 2010 00:17:10 -0700 Subject: [PATCH] Remove forward declarations in PPP network handling --- gatchat/ppp_net.c | 156 ++++++++++++++++++++++------------------------ 1 file changed, 75 insertions(+), 81 deletions(-) diff --git a/gatchat/ppp_net.c b/gatchat/ppp_net.c index 09f7a1e2..03c6ef09 100644 --- a/gatchat/ppp_net.c +++ b/gatchat/ppp_net.c @@ -38,8 +38,6 @@ #include "gatppp.h" #include "ppp.h" -static void ipcp_free(struct pppcp_data *data); - /* XXX should be maximum IP Packet size */ #define MAX_PACKET 1500 #define PPP_IP_PROTO 0x0021 @@ -53,10 +51,6 @@ struct ipcp_data { struct pppcp_data *pppcp; }; -static struct pppcp_data *ipcp_new(GAtPPP *ppp); -static void ipcp_option_process(gpointer data, gpointer user); -static guint ipcp_option_scan(struct ppp_option *option, gpointer user); - static void ip_process_packet(gpointer priv, guint8 *packet) { struct ppp_net_data *data = priv; @@ -167,38 +161,6 @@ struct ppp_packet_handler ip_packet_handler = { .handler = ip_process_packet, }; -void ppp_net_free(struct ppp_net_data *data) -{ - /* TBD unregister packet handler */ - - /* cleanup tun interface */ - ppp_net_close(data); - - /* free ipcp data */ - ipcp_free(data->ipcp); - - /* free self */ - g_free(data); -} - -struct ppp_net_data *ppp_net_new(GAtPPP *ppp) -{ - struct ppp_net_data *data; - - data = g_try_malloc0(sizeof(*data)); - if (!data) - return NULL; - - data->ppp = ppp; - data->ipcp = ipcp_new(ppp); - - /* register packet handler for IP protocol */ - ip_packet_handler.priv = data; - ppp_register_packet_handler(&ip_packet_handler); - return data; -} - -/****** IPCP support ****************/ #define IPCP_SUPPORTED_CODES ((1 << CONFIGURE_REQUEST) | \ (1 << CONFIGURE_ACK) | \ (1 << CONFIGURE_NAK) | \ @@ -213,6 +175,7 @@ enum ipcp_option_types { IP_ADDRESSES = 1, IP_COMPRESSION_PROTO = 2, IP_ADDRESS = 3, + MOBILE_IPV4 = 4, PRIMARY_DNS_SERVER = 129, PRIMARY_NBNS_SERVER = 130, SECONDARY_DNS_SERVER = 131, @@ -271,39 +234,6 @@ static void ipcp_finished(struct pppcp_data *data) g_print("ipcp finished\n"); } -static const char ipcp_prefix[] = "ipcp"; - -static const char *ipcp_option_strings[256] = { - [1] = "IP-Address (deprecated)", - [2] = "IP-Compression-Protocol", - [3] = "IP-Address", - [4] = "Mobile-IPv4", - [129] = "Primary DNS Server Address", - [130] = "Primary NBNS Server Address", - [131] = "Secondary DNS Server Address", - [132] = "Secondary NBNS Server Address", -}; - -struct pppcp_action ipcp_action = { - .this_layer_up = ipcp_up, - .this_layer_down = ipcp_down, - .this_layer_started = ipcp_started, - .this_layer_finished = ipcp_finished, - .option_scan = ipcp_option_scan, - .option_process = ipcp_option_process, -}; - -static struct pppcp_protocol_data ipcp_protocol_data = { - .proto = IPCP_PROTO, - .prefix = ipcp_prefix, - .options = ipcp_option_strings, -}; - -struct ppp_packet_handler ipcp_packet_handler = { - .proto = IPCP_PROTO, - .handler = pppcp_process_packet, -}; - /* * Scan the option to see if it is acceptable, unacceptable, or rejected */ @@ -352,20 +282,40 @@ static void ipcp_option_process(gpointer data, gpointer user) } } -static void ipcp_free(struct pppcp_data *data) -{ - struct ipcp_data *ipcp = data->priv; +struct pppcp_action ipcp_action = { + .this_layer_up = ipcp_up, + .this_layer_down = ipcp_down, + .this_layer_started = ipcp_started, + .this_layer_finished = ipcp_finished, + .option_scan = ipcp_option_scan, + .option_process = ipcp_option_process, +}; - /* TBD unregister IPCP packet handler */ +static const char ipcp_prefix[] = "ipcp"; - /* free ipcp */ - g_free(ipcp); +static const char *ipcp_option_strings[256] = { + [IP_ADDRESSES] = "IP-Addresses (deprecated)", + [IP_COMPRESSION_PROTO] = "IP-Compression-Protocol", + [IP_ADDRESS] = "IP-Address", + [MOBILE_IPV4] = "Mobile-IPv4", + [PRIMARY_DNS_SERVER] = "Primary DNS Server Address", + [PRIMARY_NBNS_SERVER] = "Primary NBNS Server Address", + [SECONDARY_DNS_SERVER] = "Secondary DNS Server Address", + [SECONDARY_NBNS_SERVER] = "Secondary NBNS Server Address", +}; - /* free pppcp */ - pppcp_free(data); -} +static struct pppcp_protocol_data ipcp_protocol_data = { + .proto = IPCP_PROTO, + .prefix = ipcp_prefix, + .options = ipcp_option_strings, +}; -static struct pppcp_data * ipcp_new(GAtPPP *ppp) +struct ppp_packet_handler ipcp_packet_handler = { + .proto = IPCP_PROTO, + .handler = pppcp_process_packet, +}; + +static struct pppcp_data *ipcp_new(GAtPPP *ppp) { struct ipcp_data *data; struct pppcp_data *pppcp; @@ -404,3 +354,47 @@ static struct pppcp_data * ipcp_new(GAtPPP *ppp) ppp_register_packet_handler(&ipcp_packet_handler); return pppcp; } + +static void ipcp_free(struct pppcp_data *data) +{ + struct ipcp_data *ipcp = data->priv; + + /* TBD unregister IPCP packet handler */ + + /* free ipcp */ + g_free(ipcp); + + /* free pppcp */ + pppcp_free(data); +} + +struct ppp_net_data *ppp_net_new(GAtPPP *ppp) +{ + struct ppp_net_data *data; + + data = g_try_malloc0(sizeof(*data)); + if (!data) + return NULL; + + data->ppp = ppp; + data->ipcp = ipcp_new(ppp); + + /* register packet handler for IP protocol */ + ip_packet_handler.priv = data; + ppp_register_packet_handler(&ip_packet_handler); + return data; +} + +void ppp_net_free(struct ppp_net_data *data) +{ + /* TBD unregister packet handler */ + + /* cleanup tun interface */ + ppp_net_close(data); + + /* free ipcp data */ + ipcp_free(data->ipcp); + + /* free self */ + g_free(data); +}