handle routing properly in lone-master case
This commit is contained in:
parent
e5b9fabb48
commit
e3afcf30c0
2 changed files with 23 additions and 14 deletions
3
Changes
3
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
|
* Mon Nov 8 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.4
|
||||||
- Added setrxspeed plugin
|
- Added setrxspeed plugin
|
||||||
- Added peer_address config option
|
- Added peer_address config option
|
||||||
|
|
|
||||||
34
cluster.c
34
cluster.c
|
|
@ -1,6 +1,6 @@
|
||||||
// L2TPNS Clustering Stuff
|
// L2TPNS Clustering Stuff
|
||||||
|
|
||||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.16 2004/11/05 04:55:26 bodea Exp $";
|
char const *cvs_id_cluster = "$Id: cluster.c,v 1.17 2004/11/09 03:09:12 bodea Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/file.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)
|
void cluster_uptodate(void)
|
||||||
{
|
{
|
||||||
if (config->cluster_iam_uptodate)
|
if (config->cluster_iam_uptodate)
|
||||||
|
|
@ -199,14 +211,7 @@ void cluster_uptodate(void)
|
||||||
config->cluster_iam_uptodate = 1;
|
config->cluster_iam_uptodate = 1;
|
||||||
|
|
||||||
LOG(0,0,0,0, "Now uptodate with master.\n");
|
LOG(0,0,0,0, "Now uptodate with master.\n");
|
||||||
|
advertise();
|
||||||
#ifdef BGP
|
|
||||||
if (bgp_configured)
|
|
||||||
bgp_enable_routing(1);
|
|
||||||
else
|
|
||||||
#endif /* BGP */
|
|
||||||
if (config->send_garp)
|
|
||||||
send_garp(config->bind_address); // Start taking traffic.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -456,11 +461,9 @@ void cluster_check_slaves(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BGP
|
#ifdef BGP
|
||||||
// master lost all slaves, need to handle traffic ourself
|
// in a cluster, withdraw/add routes when we get a peer/lose all peers
|
||||||
if (bgp_configured && had_peers && !have_peers)
|
if (bgp_configured && have_peers != had_peers)
|
||||||
bgp_enable_routing(1);
|
bgp_enable_routing(!have_peers);
|
||||||
else if (bgp_configured && !had_peers && have_peers)
|
|
||||||
bgp_enable_routing(0);
|
|
||||||
#endif /* BGP */
|
#endif /* BGP */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -610,6 +613,9 @@ void cluster_check_master(void)
|
||||||
config->cluster_undefined_tunnels = 0;
|
config->cluster_undefined_tunnels = 0;
|
||||||
config->cluster_iam_uptodate = 1; // assume all peers are up-to-date
|
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
|
// FIXME. We need to fix up the tunnel control message
|
||||||
// queue here! There's a number of other variables we
|
// queue here! There's a number of other variables we
|
||||||
// should also update.
|
// should also update.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue