mirror of git://git.sysmocom.de/ofono
Refactor: Move valid code selection to ipcp/lcp
We already have a set_valid_codes function, let us use it
This commit is contained in:
parent
4f5de3426e
commit
7b447dd0e2
|
@ -135,40 +135,6 @@ static int cp_transitions[16][10] = {
|
|||
{ INV, INV, 2, 3, 4, 5, 6, 7, 8, SER|9 },
|
||||
};
|
||||
|
||||
enum pppcp_code {
|
||||
CONFIGURE_REQUEST = 1,
|
||||
CONFIGURE_ACK,
|
||||
CONFIGURE_NAK,
|
||||
CONFIGURE_REJECT,
|
||||
TERMINATE_REQUEST,
|
||||
TERMINATE_ACK,
|
||||
CODE_REJECT,
|
||||
PROTOCOL_REJECT,
|
||||
ECHO_REQUEST,
|
||||
ECHO_REPLY,
|
||||
DISCARD_REQUEST
|
||||
};
|
||||
|
||||
#define LCP_SUPPORTED_CODES ((1 << CONFIGURE_REQUEST) | \
|
||||
(1 << CONFIGURE_ACK) | \
|
||||
(1 << CONFIGURE_NAK) | \
|
||||
(1 << CONFIGURE_REJECT) | \
|
||||
(1 << TERMINATE_REQUEST) | \
|
||||
(1 << TERMINATE_ACK) | \
|
||||
(1 << CODE_REJECT) | \
|
||||
(1 << PROTOCOL_REJECT) | \
|
||||
(1 << ECHO_REQUEST) | \
|
||||
(1 << ECHO_REPLY) | \
|
||||
(1 << DISCARD_REQUEST))
|
||||
|
||||
#define IPCP_SUPPORTED_CODES ((1 << CONFIGURE_REQUEST) | \
|
||||
(1 << CONFIGURE_ACK) | \
|
||||
(1 << CONFIGURE_NAK) | \
|
||||
(1 << CONFIGURE_REJECT) | \
|
||||
(1 << TERMINATE_REQUEST) | \
|
||||
(1 << TERMINATE_ACK) | \
|
||||
(1 << CODE_REJECT))
|
||||
|
||||
enum pppcp_event_type {
|
||||
UP = 0,
|
||||
DOWN = 1,
|
||||
|
@ -415,7 +381,8 @@ static void pppcp_send_configure_request(struct pppcp_data *data)
|
|||
/* figure out how much space to allocate for options */
|
||||
g_list_foreach(data->config_options, get_option_length, &olength);
|
||||
|
||||
packet = pppcp_packet_new(data, CONFIGURE_REQUEST, olength);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_CONFIGURE_REQUEST,
|
||||
olength);
|
||||
|
||||
/* copy config options into packet data */
|
||||
odata = packet->data;
|
||||
|
@ -460,7 +427,7 @@ static void pppcp_send_configure_ack(struct pppcp_data *data,
|
|||
/* subtract for header. */
|
||||
len = ntohs(pppcp_header->length) - sizeof(*packet);
|
||||
|
||||
packet = pppcp_packet_new(data, CONFIGURE_ACK, len);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_CONFIGURE_ACK, len);
|
||||
|
||||
/* copy the applied options in. */
|
||||
odata = packet->data;
|
||||
|
@ -508,7 +475,8 @@ static void pppcp_send_configure_nak(struct pppcp_data *data,
|
|||
g_list_foreach(data->rejected_options, get_option_length,
|
||||
&olength);
|
||||
|
||||
packet = pppcp_packet_new(data, CONFIGURE_REJECT, olength);
|
||||
packet = pppcp_packet_new(data,
|
||||
PPPCP_CODE_TYPE_CONFIGURE_REJECT, olength);
|
||||
|
||||
/* copy the rejected options in. */
|
||||
odata = packet->data;
|
||||
|
@ -533,7 +501,8 @@ static void pppcp_send_configure_nak(struct pppcp_data *data,
|
|||
g_list_foreach(data->unacceptable_options, get_option_length,
|
||||
&olength);
|
||||
|
||||
packet = pppcp_packet_new(data, CONFIGURE_NAK, olength);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_CONFIGURE_NAK,
|
||||
olength);
|
||||
|
||||
/* copy the unacceptable options in. */
|
||||
odata = packet->data;
|
||||
|
@ -565,7 +534,7 @@ static void pppcp_send_terminate_request(struct pppcp_data *data)
|
|||
* the data field can be used by the sender (us).
|
||||
* leave this empty for now.
|
||||
*/
|
||||
packet = pppcp_packet_new(data, TERMINATE_REQUEST, 0);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_TERMINATE_REQUEST, 0);
|
||||
|
||||
/*
|
||||
* Is this a retransmission? If so, do not change
|
||||
|
@ -594,7 +563,7 @@ static void pppcp_send_terminate_ack(struct pppcp_data *data,
|
|||
|
||||
pppcp_trace(data);
|
||||
|
||||
packet = pppcp_packet_new(data, TERMINATE_ACK, 0);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_TERMINATE_ACK, 0);
|
||||
|
||||
/* match identifier of the request */
|
||||
packet->identifier = pppcp_header->identifier;
|
||||
|
@ -619,7 +588,8 @@ static void pppcp_send_code_reject(struct pppcp_data *data,
|
|||
|
||||
pppcp_trace(data);
|
||||
|
||||
packet = pppcp_packet_new(data, CODE_REJECT, ntohs(old_packet->length));
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_CODE_REJECT,
|
||||
ntohs(old_packet->length));
|
||||
|
||||
/*
|
||||
* Identifier must be changed for each Code-Reject sent
|
||||
|
@ -651,7 +621,7 @@ static void pppcp_send_echo_reply(struct pppcp_data *data,
|
|||
/*
|
||||
* 0 bytes for data, 4 bytes for magic number
|
||||
*/
|
||||
packet = pppcp_packet_new(data, ECHO_REPLY, 4);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_ECHO_REPLY, 4);
|
||||
|
||||
/*
|
||||
* match identifier of request
|
||||
|
@ -1222,7 +1192,7 @@ void pppcp_send_protocol_reject(struct pppcp_data *data,
|
|||
* info should contain the old packet info, plus the 16bit
|
||||
* protocol number we are rejecting.
|
||||
*/
|
||||
packet = pppcp_packet_new(data, PROTOCOL_REJECT, len);
|
||||
packet = pppcp_packet_new(data, PPPCP_CODE_TYPE_PROTOCOL_REJECT, len);
|
||||
|
||||
/*
|
||||
* Identifier must be changed for each Protocol-Reject sent
|
||||
|
@ -1317,7 +1287,6 @@ gpointer pppcp_get_data(struct pppcp_data *pppcp)
|
|||
struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto)
|
||||
{
|
||||
struct pppcp_data *data;
|
||||
guint16 codes;
|
||||
|
||||
data = g_try_malloc0(sizeof(struct pppcp_data));
|
||||
if (!data)
|
||||
|
@ -1336,19 +1305,5 @@ struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto)
|
|||
data->ppp = ppp;
|
||||
data->proto = proto;
|
||||
|
||||
switch (proto) {
|
||||
case LCP_PROTOCOL:
|
||||
codes = LCP_SUPPORTED_CODES;
|
||||
break;
|
||||
case IPCP_PROTO:
|
||||
codes = IPCP_SUPPORTED_CODES;
|
||||
break;
|
||||
default:
|
||||
codes = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
pppcp_set_valid_codes(data, codes);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,20 @@ enum option_rval {
|
|||
OPTION_ERR,
|
||||
};
|
||||
|
||||
enum pppcp_code {
|
||||
PPPCP_CODE_TYPE_CONFIGURE_REQUEST = 1,
|
||||
PPPCP_CODE_TYPE_CONFIGURE_ACK,
|
||||
PPPCP_CODE_TYPE_CONFIGURE_NAK,
|
||||
PPPCP_CODE_TYPE_CONFIGURE_REJECT,
|
||||
PPPCP_CODE_TYPE_TERMINATE_REQUEST,
|
||||
PPPCP_CODE_TYPE_TERMINATE_ACK,
|
||||
PPPCP_CODE_TYPE_CODE_REJECT,
|
||||
PPPCP_CODE_TYPE_PROTOCOL_REJECT,
|
||||
PPPCP_CODE_TYPE_ECHO_REQUEST,
|
||||
PPPCP_CODE_TYPE_ECHO_REPLY,
|
||||
PPPCP_CODE_TYPE_DISCARD_REQUEST
|
||||
};
|
||||
|
||||
struct pppcp_action {
|
||||
void (*this_layer_up)(struct pppcp_data *data);
|
||||
void (*this_layer_down)(struct pppcp_data *data);
|
||||
|
|
|
@ -35,6 +35,14 @@
|
|||
#include "gatppp.h"
|
||||
#include "ppp.h"
|
||||
|
||||
#define IPCP_SUPPORTED_CODES ((1 << PPPCP_CODE_TYPE_CONFIGURE_REQUEST) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_ACK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_NAK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_REJECT) | \
|
||||
(1 << PPPCP_CODE_TYPE_TERMINATE_REQUEST) | \
|
||||
(1 << PPPCP_CODE_TYPE_TERMINATE_ACK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CODE_REJECT))
|
||||
|
||||
struct ipcp_data {
|
||||
guint8 ip_address[4];
|
||||
guint8 primary_dns[4];
|
||||
|
@ -190,6 +198,7 @@ struct pppcp_data *ipcp_new(GAtPPP *ppp)
|
|||
pppcp->option_strings = ipcp_option_strings;
|
||||
pppcp->prefix = "ipcp";
|
||||
|
||||
pppcp_set_valid_codes(pppcp, IPCP_SUPPORTED_CODES);
|
||||
pppcp_set_data(pppcp, data);
|
||||
|
||||
/* set the actions */
|
||||
|
|
|
@ -34,6 +34,18 @@
|
|||
#include "gatppp.h"
|
||||
#include "ppp.h"
|
||||
|
||||
#define LCP_SUPPORTED_CODES ((1 << PPPCP_CODE_TYPE_CONFIGURE_REQUEST) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_ACK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_NAK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CONFIGURE_REJECT) | \
|
||||
(1 << PPPCP_CODE_TYPE_TERMINATE_REQUEST) | \
|
||||
(1 << PPPCP_CODE_TYPE_TERMINATE_ACK) | \
|
||||
(1 << PPPCP_CODE_TYPE_CODE_REJECT) | \
|
||||
(1 << PPPCP_CODE_TYPE_PROTOCOL_REJECT) | \
|
||||
(1 << PPPCP_CODE_TYPE_ECHO_REQUEST) | \
|
||||
(1 << PPPCP_CODE_TYPE_ECHO_REPLY) | \
|
||||
(1 << PPPCP_CODE_TYPE_DISCARD_REQUEST))
|
||||
|
||||
enum lcp_options {
|
||||
RESERVED = 0,
|
||||
MRU = 1,
|
||||
|
@ -221,6 +233,8 @@ struct pppcp_data *lcp_new(GAtPPP *ppp)
|
|||
pppcp->option_strings = lcp_option_strings;
|
||||
pppcp->prefix = "lcp";
|
||||
|
||||
pppcp_set_valid_codes(pppcp, LCP_SUPPORTED_CODES);
|
||||
|
||||
/* set the actions */
|
||||
pppcp->action = &lcp_action;
|
||||
|
||||
|
|
Loading…
Reference in New Issue