diff options
author | Kozlov Dmitry <xeb@mail.ru> | 2012-06-05 14:24:31 +0400 |
---|---|---|
committer | Kozlov Dmitry <xeb@mail.ru> | 2012-06-05 14:27:57 +0400 |
commit | fa315a7a7584f6f4954888c010e3cc84c2b33330 (patch) | |
tree | 778396449f9e19c52d8b83e7fabdb1c37706e16f /accel-pppd/ppp/ppp_ipcp.c | |
parent | 6f01783f2b67cd0b82805240f2aeea9a39606d65 (diff) | |
download | accel-ppp-xebd-fa315a7a7584f6f4954888c010e3cc84c2b33330.tar.gz accel-ppp-xebd-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.c | 6 |
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) |