Apply MLPPP patch from Muhammad Tayseer Alquoatli, very belatedly, with
thanks. Changes: - Handle session shutdown gracefully regarding leaving the bundle (bug that is caused when a all session leaves a bundle then another join) - IP assignment is done only for the first session in the bundle (save IP waste for multiple MLPPP sessions) - Route is being added only for the first session in the bundle (less routes on l2tpns system) - Fix route deletion problem for MLPPP sessions (bug that caused when a session leaves a bundle) - Uniformity of sequence number space satisfied (according to RFC1990) - Fix reassembling fragmented packets and handling lost fragments (according to RFC 1990) - FragmentatConnection to l2tpns.cvs.sourceforge.net closed by remote host.n across N session rather than two) - Sequence numbers extraction mask has been corrected (bug in extracting sequence numbers) - some clustering support fixes - Upload/Download statistics has been corrected - add "kill_timedout_sessions" config option
This commit is contained in:
parent
46e0772dfa
commit
845bb1f376
9 changed files with 592 additions and 382 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// L2TPNS Clustering Stuff
|
||||
|
||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.54 2006-12-04 20:50:02 bodea Exp $";
|
||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.55 2009-12-08 14:49:28 bodea Exp $";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
|
@ -402,7 +402,7 @@ void cluster_send_ping(time_t basetime)
|
|||
|
||||
x.ver = 1;
|
||||
x.addr = config->bind_address;
|
||||
x.undef = config->cluster_undefined_sessions + config->cluster_undefined_tunnels;
|
||||
x.undef = config->cluster_undefined_sessions + config->cluster_undefined_tunnels + config->cluster_undefined_bundles;
|
||||
x.basetime = basetime;
|
||||
|
||||
add_type(&p, C_PING, basetime, (uint8_t *) &x, sizeof(x));
|
||||
|
|
@ -940,9 +940,8 @@ void cluster_heartbeat()
|
|||
if (bcount >= config->cluster_highest_bundleid)
|
||||
break;
|
||||
|
||||
hb_add_type(&p, C_CTUNNEL, walk_bundle_number);
|
||||
walk_tunnel_number = (1+walk_bundle_number)%(config->cluster_highest_bundleid+1); // +1 avoids divide by zero.
|
||||
|
||||
hb_add_type(&p, C_CBUNDLE, walk_bundle_number);
|
||||
walk_bundle_number = (1+walk_bundle_number)%(config->cluster_highest_bundleid+1); // +1 avoids divide by zero.
|
||||
++bcount;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue