summaryrefslogtreecommitdiffstats
path: root/gatchat/ppp_cp.h
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-04-08 16:41:16 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-04-08 16:47:05 -0500
commit06298becc19b6261bc9b12dd1a40db402f509ef5 (patch)
tree9e95b890fa9738661ad9747ced1921a9c2d2056a /gatchat/ppp_cp.h
parentb803ea8616478bff6c0cb75101784b6dd20ac359 (diff)
downloadofono-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.h38
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);