summaryrefslogtreecommitdiff
path: root/accel-pppd
diff options
context:
space:
mode:
authorGuillaume Nault <g.nault@alphalink.fr>2013-01-24 16:14:08 +0100
committerKozlov Dmitry <xeb@mail.ru>2013-01-25 00:04:44 +0400
commita478611de8d0454389225d296a0c210d261a1b5b (patch)
tree0f16651908e1859e6c269d171d70bc9a652f2646 /accel-pppd
parent7702033f4eb40bb70ffb0cbdc1edd7b2efc0903b (diff)
downloadaccel-ppp-xebd-a478611de8d0454389225d296a0c210d261a1b5b.tar.gz
accel-ppp-xebd-a478611de8d0454389225d296a0c210d261a1b5b.zip
l2tp: Perform session disconnection in ppp context
PPP and L2TP session contexts are the same. So since l2tp_ppp_finished() is called within the PPP context, it doesn't need to switch to the session context for calling l2tp_ppp_session_disconnect(). Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Diffstat (limited to 'accel-pppd')
-rw-r--r--accel-pppd/ctrl/l2tp/l2tp.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/accel-pppd/ctrl/l2tp/l2tp.c b/accel-pppd/ctrl/l2tp/l2tp.c
index 1ad5a81..f09aaed 100644
--- a/accel-pppd/ctrl/l2tp/l2tp.c
+++ b/accel-pppd/ctrl/l2tp/l2tp.c
@@ -403,10 +403,11 @@ static int l2tp_session_disconnect(struct l2tp_sess_t *sess,
return 0;
}
-static void l2tp_ppp_session_disconnect(void *param)
+static void l2tp_ppp_finished(struct ap_session *ses)
{
- struct l2tp_sess_t *sess = param;
+ struct l2tp_sess_t *sess = l2tp_session_self();
+ log_ppp_debug("l2tp: ppp finished\n");
if (sess->state1 != STATE_CLOSE) {
l2tp_send_CDN(sess, 2, 0);
l2tp_session_free(sess);
@@ -422,15 +423,6 @@ static void l2tp_ppp_started(struct ap_session *ses)
log_ppp_debug("l2tp: ppp started\n");
}
-static void l2tp_ppp_finished(struct ap_session *ses)
-{
- struct ppp_t *ppp = container_of(ses, typeof(*ppp), ses);
- struct l2tp_sess_t *sess = container_of(ppp, typeof(*sess), ppp);
-
- log_ppp_debug("l2tp: ppp finished\n");
- triton_context_call(&sess->sctx, l2tp_ppp_session_disconnect, sess);
-}
-
static void l2tp_session_timeout(struct triton_timer_t *t)
{
struct l2tp_sess_t *sess = container_of(t, typeof(*sess),