summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp/ppp_ipcp.c
diff options
context:
space:
mode:
authorKozlov Dmitry <xeb@mail.ru>2012-06-05 14:24:31 +0400
committerKozlov Dmitry <xeb@mail.ru>2012-06-05 14:27:57 +0400
commitfa315a7a7584f6f4954888c010e3cc84c2b33330 (patch)
tree778396449f9e19c52d8b83e7fabdb1c37706e16f /accel-pppd/ppp/ppp_ipcp.c
parent6f01783f2b67cd0b82805240f2aeea9a39606d65 (diff)
downloadaccel-ppp-fa315a7a7584f6f4954888c010e3cc84c2b33330.tar.gz
accel-ppp-fa315a7a7584f6f4954888c010e3cc84c2b33330.zip
ppp: implemented unit cache
If enabled accel-pppd will not destroy interface immediately after corresponding session is terminated, instead interface will be brought down and placed to cache for later use for new sessions. It should reduce kernel interface creation/deletion rate lack and increase responsibility of daemon
Diffstat (limited to 'accel-pppd/ppp/ppp_ipcp.c')
-rw-r--r--accel-pppd/ppp/ppp_ipcp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/accel-pppd/ppp/ppp_ipcp.c b/accel-pppd/ppp/ppp_ipcp.c
index 625358a..9ec92d4 100644
--- a/accel-pppd/ppp/ppp_ipcp.c
+++ b/accel-pppd/ppp/ppp_ipcp.c
@@ -11,6 +11,7 @@
#include "ppp.h"
#include "ppp_ipcp.h"
+#include "ipdb.h"
#include "memdebug.h"
@@ -208,6 +209,11 @@ static void ipcp_layer_finished(struct ppp_fsm_t *fsm)
ppp_terminate(ipcp->ppp, TERM_USER_ERROR, 0);
fsm->fsm_state = FSM_Closed;
+
+ if (ipcp->ppp->ipv4) {
+ ipdb_put_ipv4(ipcp->ppp, ipcp->ppp->ipv4);
+ ipcp->ppp->ipv4 = NULL;
+ }
}
static void ipcp_layer_down(struct ppp_fsm_t *fsm)