projects
/
l2tpns.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
e5b9fab
)
handle routing properly in lone-master case
author
bodea
<bodea>
Tue, 9 Nov 2004 03:09:12 +0000
(
03:09
+0000)
committer
bodea
<bodea>
Tue, 9 Nov 2004 03:09:12 +0000
(
03:09
+0000)
Changes
patch
|
blob
|
history
cluster.c
patch
|
blob
|
history
diff --git
a/Changes
b/Changes
index
f970ae3
..
1813202
100644
(file)
--- a/
Changes
+++ b/
Changes
@@
-1,3
+1,6
@@
+? Brendan O'Dea <bod@optusnet.com.au> 2.0.5
+- Handle routing properly in lone-master case
+
* Mon Nov 8 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.4
- Added setrxspeed plugin
- Added peer_address config option
* Mon Nov 8 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.4
- Added setrxspeed plugin
- Added peer_address config option
diff --git
a/cluster.c
b/cluster.c
index
c5b7c8b
..
afb365e
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.1
6 2004/11/05 04:55:26
bodea Exp $";
+char const *cvs_id_cluster = "$Id: cluster.c,v 1.1
7 2004/11/09 03:09:12
bodea Exp $";
#include <stdio.h>
#include <sys/file.h>
#include <stdio.h>
#include <sys/file.h>
@@
-188,6
+188,18
@@
static void add_type(char ** p, int type, int more, char * data, int size)
}
}
}
}
+// advertise our presence via BGP or gratuitous ARP
+static void advertise(void)
+{
+#ifdef BGP
+ if (bgp_configured)
+ bgp_enable_routing(1);
+ else
+#endif /* BGP */
+ if (config->send_garp)
+ send_garp(config->bind_address); // Start taking traffic.
+}
+
void cluster_uptodate(void)
{
if (config->cluster_iam_uptodate)
void cluster_uptodate(void)
{
if (config->cluster_iam_uptodate)
@@
-199,14
+211,7
@@
void cluster_uptodate(void)
config->cluster_iam_uptodate = 1;
LOG(0,0,0,0, "Now uptodate with master.\n");
config->cluster_iam_uptodate = 1;
LOG(0,0,0,0, "Now uptodate with master.\n");
-
-#ifdef BGP
- if (bgp_configured)
- bgp_enable_routing(1);
- else
-#endif /* BGP */
- if (config->send_garp)
- send_garp(config->bind_address); // Start taking traffic.
+ advertise();
}
//
}
//
@@
-456,11
+461,9
@@
void cluster_check_slaves(void)
}
#ifdef BGP
}
#ifdef BGP
- // master lost all slaves, need to handle traffic ourself
- if (bgp_configured && had_peers && !have_peers)
- bgp_enable_routing(1);
- else if (bgp_configured && !had_peers && have_peers)
- bgp_enable_routing(0);
+ // in a cluster, withdraw/add routes when we get a peer/lose all peers
+ if (bgp_configured && have_peers != had_peers)
+ bgp_enable_routing(!have_peers);
#endif /* BGP */
}
#endif /* BGP */
}
@@
-610,6
+613,9
@@
void cluster_check_master(void)
config->cluster_undefined_tunnels = 0;
config->cluster_iam_uptodate = 1; // assume all peers are up-to-date
config->cluster_undefined_tunnels = 0;
config->cluster_iam_uptodate = 1; // assume all peers are up-to-date
+ if (!num_peers) // lone master
+ advertise();
+
// FIXME. We need to fix up the tunnel control message
// queue here! There's a number of other variables we
// should also update.
// FIXME. We need to fix up the tunnel control message
// queue here! There's a number of other variables we
// should also update.