summaryrefslogtreecommitdiff
path: root/accel-pptpd/ppp_lcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pptpd/ppp_lcp.c')
-rw-r--r--accel-pptpd/ppp_lcp.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/accel-pptpd/ppp_lcp.c b/accel-pptpd/ppp_lcp.c
index 50ad444..2d1dee0 100644
--- a/accel-pptpd/ppp_lcp.c
+++ b/accel-pptpd/ppp_lcp.c
@@ -20,13 +20,15 @@ char* auth="pap,eap,mschap-v2";
char* mppe="allow,disabled";
char* pwdb="radius";
+static void lcp_layer_up(struct ppp_layer_t*);
+static void lcp_layer_down(struct ppp_layer_t*);
static void send_conf_req(struct ppp_layer_t*);
static void send_conf_ack(struct ppp_layer_t*);
static void send_conf_nak(struct ppp_layer_t*);
static void send_conf_rej(struct ppp_layer_t*);
static void lcp_recv(struct ppp_layer_t*);
-struct ppp_layer_t* ppp_lcp_init(struct ppp_t *ppp)
+void lcp_start(struct ppp_t *ppp)
{
struct ppp_layer_t *layer=malloc(sizeof(*layer));
memset(layer,0,sizeof(*layer));
@@ -37,16 +39,26 @@ struct ppp_layer_t* ppp_lcp_init(struct ppp_t *ppp)
layer->ppp=ppp;
ppp_fsm_init(layer);
+ layer->layer_started=lcp_layer_started;
layer->send_conf_req=send_conf_req;
layer->send_conf_ack=send_conf_ack;
layer->send_conf_nak=send_conf_nak;
layer->send_conf_rej=send_conf_rej;
ppp_fsm_init(layer);
+ ppp_fsm_lower_up(layer);
+ ppp_fsm_open(layer);
ppp_register_handler(&layer->h);
+}
- return layer;
+static void lcp_layer_up(struct ppp_layer_t *l)
+{
+ ppp_layer_started(l->ppp);
+}
+static void lcp_layer_down(struct ppp_layer_t *l)
+{
+ ppp_terminate(l->ppp);
}
static void send_conf_req(struct ppp_layer_t*l)