projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix whitespace errors in ppp.c and radius.c
[l2tpns.git]
/
cluster.c
diff --git
a/cluster.c
b/cluster.c
index
abe2a63
..
f5e6de8
100644
(file)
--- a/
cluster.c
+++ b/
cluster.c
@@
-1,6
+1,6
@@
// L2TPNS Clustering Stuff
// L2TPNS Clustering Stuff
-char const *cvs_id_cluster = "$Id: cluster.c,v 1.5
1 2006/04/27 09:53:49
bodea Exp $";
+char const *cvs_id_cluster = "$Id: cluster.c,v 1.5
5 2009/12/08 14:49:28
bodea Exp $";
#include <stdio.h>
#include <stdlib.h>
#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.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));
x.basetime = basetime;
add_type(&p, C_PING, basetime, (uint8_t *) &x, sizeof(x));
@@
-522,7
+522,7
@@
void cluster_check_slaves(void)
//
void cluster_check_master(void)
{
//
void cluster_check_master(void)
{
- int i, count,
tcount, bcount,
high_unique_id = 0;
+ int i, count, high_unique_id = 0;
int last_free = 0;
clockt t = TIME;
static int probed = 0;
int last_free = 0;
clockt t = TIME;
static int probed = 0;
@@
-608,7
+608,7
@@
void cluster_check_master(void)
// Count the highest used tunnel number as well.
//
config->cluster_highest_tunnelid = 0;
// Count the highest used tunnel number as well.
//
config->cluster_highest_tunnelid = 0;
- for (i = 0
, tcount = 0
; i < MAXTUNNEL; ++i) {
+ for (i = 0; i < MAXTUNNEL; ++i) {
if (tunnel[i].state == TUNNELUNDEF)
tunnel[i].state = TUNNELFREE;
if (tunnel[i].state == TUNNELUNDEF)
tunnel[i].state = TUNNELFREE;
@@
-621,7
+621,7
@@
void cluster_check_master(void)
// Count the highest used bundle number as well.
//
config->cluster_highest_bundleid = 0;
// Count the highest used bundle number as well.
//
config->cluster_highest_bundleid = 0;
- for (i = 0
, bcount = 0
; i < MAXBUNDLE; ++i) {
+ for (i = 0; i < MAXBUNDLE; ++i) {
if (bundle[i].state == BUNDLEUNDEF)
bundle[i].state = BUNDLEFREE;
if (bundle[i].state == BUNDLEUNDEF)
bundle[i].state = BUNDLEFREE;
@@
-654,7
+654,7
@@
void cluster_check_master(void)
}
// Reset idle timeouts..
}
// Reset idle timeouts..
- session[i].last_packet = time_now;
+ session[i].last_packet =
session[i].last_data =
time_now;
// Reset die relative to our uptime rather than the old master's
if (session[i].die) session[i].die = TIME;
// Reset die relative to our uptime rather than the old master's
if (session[i].die) session[i].die = TIME;
@@
-940,9
+940,8
@@
void cluster_heartbeat()
if (bcount >= config->cluster_highest_bundleid)
break;
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;
}
++bcount;
}
@@
-1214,7
+1213,9
@@
static int cluster_handle_bytes(uint8_t *data, int size)
session[b->sid].cout_delta += b->cout;
if (b->cin)
session[b->sid].cout_delta += b->cout;
if (b->cin)
- session[b->sid].last_packet = time_now; // Reset idle timer!
+ session[b->sid].last_packet = session[b->sid].last_data = time_now;
+ else if (b->cout)
+ session[b->sid].last_data = time_now;
size -= sizeof(*b);
++b;
size -= sizeof(*b);
++b;
@@
-1451,7
+1452,11
@@
static int cluster_process_heartbeat(uint8_t *data, int size, int more, uint8_t
return -1; // Ignore it??
}
return -1; // Ignore it??
}
- // Ok. It's a heartbeat packet from a cluster master!
+ if (size > sizeof(past_hearts[0].data)) {
+ LOG(0, 0, 0, "Received an oversize heartbeat from %s (%d)!\n", fmtaddr(addr, 0), size);
+ return -1;
+ }
+
if (s < sizeof(*h))
goto shortpacket;
if (s < sizeof(*h))
goto shortpacket;
@@
-1768,7
+1773,7
@@
int processcluster(uint8_t *data, int size, in_addr_t addr)
case C_FORWARD_DAE: // Forwarded DAE packet. pass off to processdae.
if (!config->cluster_iam_master)
{
case C_FORWARD_DAE: // Forwarded DAE packet. pass off to processdae.
if (!config->cluster_iam_master)
{
- LOG(0, 0, 0, "I'm not the master, but I got a C_FORWARD
_
%s from %s?\n",
+ LOG(0, 0, 0, "I'm not the master, but I got a C_FORWARD%s from %s?\n",
type == C_FORWARD_DAE ? "_DAE" : "", fmtaddr(addr, 0));
return -1;
type == C_FORWARD_DAE ? "_DAE" : "", fmtaddr(addr, 0));
return -1;