summaryrefslogtreecommitdiffstats
path: root/gatchat/ppp_cp.h
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-04-07 15:40:02 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-04-07 16:41:49 -0500
commit5f361d7de979aaac9212b5dd596eaf71fbf3b557 (patch)
treea0f997f90536b11be61079d3a5c429bb94226cc7 /gatchat/ppp_cp.h
parent4a6a381a1d5c2932c904b021383b8d63e369aeb0 (diff)
downloadofono-5f361d7de979aaac9212b5dd596eaf71fbf3b557.tar.bz2
ppp: Add pppcp option iterators
Diffstat (limited to 'gatchat/ppp_cp.h')
-rw-r--r--gatchat/ppp_cp.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/gatchat/ppp_cp.h b/gatchat/ppp_cp.h
index 913df0f8..407cbd7e 100644
--- a/gatchat/ppp_cp.h
+++ b/gatchat/ppp_cp.h
@@ -20,6 +20,7 @@
*/
struct pppcp_data;
+struct ppp_option_iter;
/* option format */
struct ppp_option {
@@ -48,6 +49,15 @@ enum pppcp_code {
PPPCP_CODE_TYPE_DISCARD_REQUEST
};
+struct ppp_option_iter {
+ guint16 max;
+ guint16 pos;
+ const guint8 *pdata;
+ guint8 type;
+ guint8 len;
+ const guint8 *option_data;
+};
+
struct pppcp_action {
void (*this_layer_up)(struct pppcp_data *data);
void (*this_layer_down)(struct pppcp_data *data);
@@ -66,6 +76,13 @@ struct pppcp_packet {
guint8 data[0];
} __attribute__((packed));
+void ppp_option_iter_init(struct ppp_option_iter *iter,
+ const struct pppcp_packet *packet);
+gboolean ppp_option_iter_next(struct ppp_option_iter *iter);
+guint8 ppp_option_iter_get_type(struct ppp_option_iter *iter);
+guint8 ppp_option_iter_get_length(struct ppp_option_iter *iter);
+const guint8 *ppp_option_iter_get_data(struct ppp_option_iter *iter);
+
struct pppcp_data *pppcp_new(GAtPPP *ppp, guint16 proto,
const struct pppcp_action *action);
void pppcp_free(struct pppcp_data *data);