summaryrefslogtreecommitdiffstats
path: root/gatchat/ppp_cp.h
diff options
context:
space:
mode:
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);