summaryrefslogtreecommitdiff
path: root/pppd_plugin/src/pptp_ctrl.h
diff options
context:
space:
mode:
authorxeb <xeb@mail.ru>2009-06-17 00:56:34 +0400
committerxeb <xeb@mail.ru>2009-06-17 00:56:34 +0400
commitdf2441c834cf341d9b969dacc2dd8dac07cd588e (patch)
treeca0c7d8bade520ac35f5cd5c34dec54b136bd491 /pppd_plugin/src/pptp_ctrl.h
downloadaccel-ppp-df2441c834cf341d9b969dacc2dd8dac07cd588e.tar.gz
accel-ppp-df2441c834cf341d9b969dacc2dd8dac07cd588e.zip
initial import
Diffstat (limited to 'pppd_plugin/src/pptp_ctrl.h')
-rw-r--r--pppd_plugin/src/pptp_ctrl.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/pppd_plugin/src/pptp_ctrl.h b/pppd_plugin/src/pptp_ctrl.h
new file mode 100644
index 00000000..a7bb5067
--- /dev/null
+++ b/pppd_plugin/src/pptp_ctrl.h
@@ -0,0 +1,57 @@
+/* pptp_ctrl.h ... handle PPTP control connection.
+ * C. Scott Ananian <cananian@alumni.princeton.edu>
+ *
+ * $Id: pptp_ctrl.h,v 1.5 2004/11/09 01:42:32 quozl Exp $
+ */
+
+#ifndef INC_PPTP_CTRL_H
+#define INC_PPTP_CTRL_H
+#include <sys/types.h>
+
+typedef struct PPTP_CONN PPTP_CONN;
+typedef struct PPTP_CALL PPTP_CALL;
+
+enum call_state { CALL_OPEN_RQST, CALL_OPEN_DONE, CALL_OPEN_FAIL,
+ CALL_CLOSE_RQST, CALL_CLOSE_DONE };
+enum conn_state { CONN_OPEN_RQST, CONN_OPEN_DONE, CONN_OPEN_FAIL,
+ CONN_CLOSE_RQST, CONN_CLOSE_DONE };
+
+typedef void (*pptp_call_cb)(PPTP_CONN*, PPTP_CALL*, enum call_state);
+typedef void (*pptp_conn_cb)(PPTP_CONN*, enum conn_state);
+
+/* if 'isclient' is true, then will send 'conn open' packet to other host.
+ * not necessary if this is being opened by a server process after
+ * receiving a conn_open packet from client.
+ */
+PPTP_CONN * pptp_conn_open(int inet_sock, int isclient,
+ pptp_conn_cb callback);
+PPTP_CALL * pptp_call_open(PPTP_CONN * conn, int call_id,
+ pptp_call_cb callback, char *phonenr,int window);
+int pptp_conn_established(PPTP_CONN * conn);
+/* soft close. Will callback on completion. */
+void pptp_call_close(PPTP_CONN * conn, PPTP_CALL * call);
+/* hard close. */
+void pptp_call_destroy(PPTP_CONN *conn, PPTP_CALL *call);
+/* soft close. Will callback on completion. */
+void pptp_conn_close(PPTP_CONN * conn, u_int8_t close_reason);
+/* hard close */
+void pptp_conn_destroy(PPTP_CONN * conn);
+
+/* Add file descriptors used by pptp to fd_set. */
+void pptp_fd_set(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set, int *max_fd);
+/* handle any pptp file descriptors set in fd_set, and clear them */
+int pptp_dispatch(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set);
+
+/* Get info about connection, call */
+void pptp_call_get_ids(PPTP_CONN * conn, PPTP_CALL * call,
+ u_int16_t * call_id, u_int16_t * peer_call_id);
+/* Arbitrary user data about this call/connection.
+ * It is the caller's responsibility to free this data before calling
+ * pptp_call|conn_close()
+ */
+void * pptp_conn_closure_get(PPTP_CONN * conn);
+void pptp_conn_closure_put(PPTP_CONN * conn, void *cl);
+void * pptp_call_closure_get(PPTP_CONN * conn, PPTP_CALL * call);
+void pptp_call_closure_put(PPTP_CONN * conn, PPTP_CALL * call, void *cl);
+
+#endif /* INC_PPTP_CTRL_H */