X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/81ca38323a409a68ef80c46283c555d20d553e2d..5e65215ed4758c8fcd26ecaadc4b6121b93dab1c:/ppp.c diff --git a/ppp.c b/ppp.c index 7251e94..fb74ba9 100644 --- a/ppp.c +++ b/ppp.c @@ -12,6 +12,10 @@ #include "tbf.h" #include "cluster.h" +#ifdef LAC +#include "l2tplac.h" +#endif + extern tunnelt *tunnel; extern bundlet *bundle; extern fragmentationt *frag; @@ -100,6 +104,14 @@ void processpap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) LOG(3, s, t, "PAP login %s/%s\n", user, pass); } +#ifdef LAC + if ((!config->disable_lac_func) && lac_conf_forwardtoremotelns(s, user)) + { + // Creating a tunnel/session has been started + return; + } +#endif + if (session[s].ip || !(r = radiusnew(s))) { // respond now, either no RADIUS available or already authenticated @@ -251,6 +263,16 @@ void processchap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) packet.username = calloc(l + 1, 1); memcpy(packet.username, p, l); +#ifdef LAC + if ((!config->disable_lac_func) && lac_conf_forwardtoremotelns(s, packet.username)) + { + free(packet.username); + free(packet.password); + // Creating a tunnel/session has been started + return; + } +#endif + run_plugins(PLUGIN_PRE_AUTH, &packet); if (!packet.continue_auth) { @@ -1879,9 +1901,12 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) // calculate the jitter average uint32_t ljitter = time_now_ms - sess_local[s].prev_time; - sess_local[s].jitteravg = (sess_local[s].jitteravg + ljitter)>>1; - sess_local[s].prev_time = time_now_ms; - + if (ljitter > 0) + { + sess_local[s].jitteravg = (sess_local[s].jitteravg + ljitter)>>1; + sess_local[s].prev_time = time_now_ms; + } + uint32_t Mmin; if (seq_num < this_fragmentation->M) @@ -2084,7 +2109,7 @@ find_frame: } assembling_frame: - // try to assemble the frame that has the received fragment as a member + // try to assemble the frame that has the received fragment as a member // get the beginning of this frame begin_index = end_index = this_fragmentation->start_index; if (this_fragmentation->fragment[begin_index].length)