diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-04-05 16:14:39 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-04-05 16:14:39 -0500 |
commit | 4f5de3426e11f6f382a3063cc7d3ce0ec4d52a97 (patch) | |
tree | 0986b92c1ecc154d0631ffcd4f317601541dd2f7 /gatchat/ppp_cp.c | |
parent | 48a012c810ab16eb616b332a0bfcde88780877d7 (diff) | |
download | ofono-4f5de3426e11f6f382a3063cc7d3ce0ec4d52a97.tar.gz |
Refactor: Move packet_ops to a static look-up
No need to allocate space for this, as it is always the same for all
instances.
Diffstat (limited to 'gatchat/ppp_cp.c')
-rw-r--r-- | gatchat/ppp_cp.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/gatchat/ppp_cp.c b/gatchat/ppp_cp.c index 5ade8769..78fbe426 100644 --- a/gatchat/ppp_cp.c +++ b/gatchat/ppp_cp.c @@ -1242,6 +1242,21 @@ void pppcp_send_protocol_reject(struct pppcp_data *data, pppcp_packet_free(packet); } +static guint8 (*packet_ops[11])(struct pppcp_data *data, + struct pppcp_packet *packet) = { + pppcp_process_configure_request, + pppcp_process_configure_ack, + pppcp_process_configure_nak, + pppcp_process_configure_reject, + pppcp_process_terminate_request, + pppcp_process_terminate_ack, + pppcp_process_code_reject, + pppcp_process_protocol_reject, + pppcp_process_echo_request, + pppcp_process_echo_reply, + pppcp_process_discard_request, +}; + /* * parse the packet and determine which event this packet caused */ @@ -1260,7 +1275,7 @@ void pppcp_process_packet(gpointer priv, guint8 *new_packet) if (!(data->valid_codes & (1 << packet->code))) event_type = RUC; else - event_type = data->packet_ops[packet->code-1](data, packet); + event_type = packet_ops[packet->code-1](data, packet); if (event_type) { data_len = ntohs(packet->length); @@ -1321,21 +1336,6 @@ struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto) data->ppp = ppp; data->proto = proto; - /* setup func ptrs for processing packet by pppcp code */ - data->packet_ops[CONFIGURE_REQUEST - 1] = - pppcp_process_configure_request; - data->packet_ops[CONFIGURE_ACK - 1] = pppcp_process_configure_ack; - data->packet_ops[CONFIGURE_NAK - 1] = pppcp_process_configure_nak; - data->packet_ops[CONFIGURE_REJECT - 1] = pppcp_process_configure_reject; - data->packet_ops[TERMINATE_REQUEST - 1] = - pppcp_process_terminate_request; - data->packet_ops[TERMINATE_ACK - 1] = pppcp_process_terminate_ack; - data->packet_ops[CODE_REJECT - 1] = pppcp_process_code_reject; - data->packet_ops[PROTOCOL_REJECT - 1] = pppcp_process_protocol_reject; - data->packet_ops[ECHO_REQUEST - 1] = pppcp_process_echo_request; - data->packet_ops[ECHO_REPLY - 1] = pppcp_process_echo_reply; - data->packet_ops[DISCARD_REQUEST - 1] = pppcp_process_discard_request; - switch (proto) { case LCP_PROTOCOL: codes = LCP_SUPPORTED_CODES; |