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.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/accel-pptpd/ppp_lcp.c b/accel-pptpd/ppp_lcp.c
index dc996e0..50ad444 100644
--- a/accel-pptpd/ppp_lcp.c
+++ b/accel-pptpd/ppp_lcp.c
@@ -31,11 +31,12 @@ struct ppp_layer_t* ppp_lcp_init(struct ppp_t *ppp)
struct ppp_layer_t *layer=malloc(sizeof(*layer));
memset(layer,0,sizeof(*layer));
- layer->proto=PPP_LCP;
+ layer->h.proto=PPP_LCP;
+ layer->h.recv=lcp_recv;
+
layer->ppp=ppp;
ppp_fsm_init(layer);
- layer->recv=lcp_recv;
layer->send_conf_req=send_conf_req;
layer->send_conf_ack=send_conf_ack;
layer->send_conf_nak=send_conf_nak;
@@ -43,6 +44,8 @@ struct ppp_layer_t* ppp_lcp_init(struct ppp_t *ppp)
ppp_fsm_init(layer);
+ ppp_register_handler(&layer->h);
+
return layer;
}
@@ -324,9 +327,10 @@ void send_echo_reply(struct ppp_layer_t *layer)
ppp_send(layer->ppp,&msg,msg.hdr.len+2);
}
-static void lcp_recv(struct ppp_layer_t*l)
+static void lcp_recv(struct ppp_handler_t*h)
{
struct lcp_hdr_t *hdr;
+ struct ppp_layer_t *l=container_of(h,typeof(*l),h);
if (l->ppp->in_buf_size<PPP_HEADERLEN+2)
{