diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-04-08 16:41:16 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-04-08 16:47:05 -0500 |
commit | 06298becc19b6261bc9b12dd1a40db402f509ef5 (patch) | |
tree | 9e95b890fa9738661ad9747ced1921a9c2d2056a /gatchat/ppp_cp.h | |
parent | b803ea8616478bff6c0cb75101784b6dd20ac359 (diff) | |
download | ofono-06298becc19b6261bc9b12dd1a40db402f509ef5.tar.bz2 |
ppp: Rip out the old option processing
Put in the new option processing
Diffstat (limited to 'gatchat/ppp_cp.h')
-rw-r--r-- | gatchat/ppp_cp.h | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/gatchat/ppp_cp.h b/gatchat/ppp_cp.h index 487b46d8..15207659 100644 --- a/gatchat/ppp_cp.h +++ b/gatchat/ppp_cp.h @@ -29,10 +29,10 @@ struct ppp_option { guint8 data[0]; }; -enum option_rval { - OPTION_ACCEPT, - OPTION_REJECT, - OPTION_NAK, +enum rcr_result { + RCR_ACCEPT, + RCR_REJECT, + RCR_NAK, }; enum pppcp_code { @@ -76,10 +76,25 @@ struct pppcp_proto { void (*this_layer_finished)(struct pppcp_data *data); /* Remote side acked these options, we can now use them */ void (*rca)(struct pppcp_data *pppcp, const struct pppcp_packet *pkt); - enum option_rval (*option_scan)(struct pppcp_data *pppcp, - struct ppp_option *option); - void (*option_process)(struct pppcp_data *data, - struct ppp_option *option); + /* + * Remote side sent us an Conf-Req-Nak or Conf-Req-Rej. The protocol + * driver should examine the packet and update its options accordingly, + * then use set_local_options to set a new set of options to try + * before returning + */ + void (*rcn_nak)(struct pppcp_data *pppcp, + const struct pppcp_packet *pkt); + void (*rcn_rej)(struct pppcp_data *pppcp, + const struct pppcp_packet *pkt); + /* + * Remote side has sent us a request with its options, return whether + * we should ack / nak / rej these options. In the case of nak / rej, + * the list of options to be sent to the peer is given in the + * new_options & new_len out arguments + */ + enum rcr_result (*rcr)(struct pppcp_data *pppcp, + const struct pppcp_packet *pkt, + guint8 **new_options, guint16 *new_len); }; void ppp_option_iter_init(struct ppp_option_iter *iter, @@ -94,11 +109,12 @@ void pppcp_free(struct pppcp_data *data); void pppcp_set_data(struct pppcp_data *pppcp, gpointer data); gpointer pppcp_get_data(struct pppcp_data *pppcp); - GAtPPP *pppcp_get_ppp(struct pppcp_data *pppcp); -void pppcp_add_config_option(struct pppcp_data *data, - struct ppp_option *option); +void pppcp_set_local_options(struct pppcp_data *data, + const guint8 *options, + guint16 len); + void pppcp_process_packet(gpointer priv, guint8 *new_packet); void pppcp_send_protocol_reject(struct pppcp_data *data, guint8 *rejected_packet, gsize len); |