summaryrefslogtreecommitdiffstats
path: root/gatchat/ppp_net.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-04-01 00:17:10 -0700
committerMarcel Holtmann <marcel@holtmann.org>2010-04-01 00:17:10 -0700
commit5f0d8493e7f2f60130e34927789b9b4effacb533 (patch)
tree3594142ad22be0f01fb8893648c5f247492c40dc /gatchat/ppp_net.c
parenteb9e7872a9c7931478b8b14b33ecc7303d163dcc (diff)
downloadofono-5f0d8493e7f2f60130e34927789b9b4effacb533.tar.bz2
Remove forward declarations in PPP network handling
Diffstat (limited to 'gatchat/ppp_net.c')
-rw-r--r--gatchat/ppp_net.c156
1 files 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);
+}