1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-11 16:58:40 +03:00
add in any cluster addresses. We need to response to these,
but not listen on them. This allows us to run nmbd on every
node in the cluster, and have all of them register with a
WINS server correctly

metze
This commit is contained in:
Stefan Metzmacher 2007-07-24 10:24:27 +00:00 committed by Gerald (Jerry) Carter
parent 3e4f552dbd
commit 98c57562c4
2 changed files with 34 additions and 0 deletions

View File

@ -114,6 +114,7 @@ BOOL register_my_workgroup_and_names(void)
{
struct subnet_record *subrec;
int i;
const char **cluster_addresses = NULL;
for(subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec)) {
register_my_workgroup_one_subnet(subrec);
@ -144,6 +145,35 @@ BOOL register_my_workgroup_and_names(void)
}
}
/*
* add in any cluster addresses. We need to response to these,
* but not listen on them. This allows us to run nmbd on every
* node in the cluster, and have all of them register with a
* WINS server correctly
*/
if (lp_clustering()) {
cluster_addresses = lp_cluster_addresses();
}
if (cluster_addresses) {
int a, n;
unsigned name_types[] = {0x20, 0x3, 0x0};
for (i=0; my_netbios_names(i); i++) {
for(subrec = FIRST_SUBNET; subrec; subrec = subrec->next) {
for (n=0;n<ARRAY_SIZE(name_types);n++) {
struct name_record *namerec;
struct nmb_name nmbname;
make_nmb_name(&nmbname, my_netbios_names(i), name_types[n]);
namerec = find_name_on_subnet(unicast_subnet, &nmbname, FIND_SELF_NAME);
if (namerec == NULL) continue;
for (a=0;cluster_addresses[a];a++) {
add_ip_to_name_record(namerec, *interpret_addr2(cluster_addresses[a]));
}
}
}
}
}
/*
* Add the WORKGROUP<0> and WORKGROUP<1e> group names to the unicast subnet
* also for the same reasons.

View File

@ -252,6 +252,7 @@ typedef struct {
char *szCupsServer;
char *szIPrintServer;
char *ctdbdSocket;
char **szClusterAddresses;
BOOL clustering;
int ldap_passwd_sync;
int ldap_replication_sleep;
@ -1046,6 +1047,7 @@ static struct parm_struct parm_table[] = {
{"name cache timeout", P_INTEGER, P_GLOBAL, &Globals.name_cache_timeout, NULL, NULL, FLAG_ADVANCED},
{"ctdbd socket", P_STRING, P_GLOBAL, &Globals.ctdbdSocket, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
{"cluster addresses", P_LIST, P_GLOBAL, &Globals.szClusterAddresses, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
{"clustering", P_BOOL, P_GLOBAL, &Globals.clustering, NULL, NULL, FLAG_ADVANCED | FLAG_GLOBAL},
{N_("Printing Options"), P_SEP, P_SEPARATOR},
@ -1645,6 +1647,7 @@ static void init_globals(BOOL first_time_only)
string_set(&Globals.szIPrintServer, "");
string_set(&Globals.ctdbdSocket, "");
Globals.szClusterAddresses = NULL;
Globals.clustering = False;
Globals.winbind_cache_time = 300; /* 5 minutes */
@ -2061,6 +2064,7 @@ FN_LOCAL_STRING(lp_cups_options, szCupsOptions)
FN_GLOBAL_STRING(lp_cups_server, &Globals.szCupsServer)
FN_GLOBAL_STRING(lp_iprint_server, &Globals.szIPrintServer)
FN_GLOBAL_CONST_STRING(lp_ctdbd_socket, &Globals.ctdbdSocket)
FN_GLOBAL_LIST(lp_cluster_addresses, &Globals.szClusterAddresses)
FN_GLOBAL_BOOL(lp_clustering, &Globals.clustering);
FN_LOCAL_STRING(lp_printcommand, szPrintcommand)
FN_LOCAL_STRING(lp_lpqcommand, szLpqcommand)