</varlistentry>
<varlistentry>
- <term>--public_addresses=<parameter>FILENAME</parameter></term>
+ <term>--public-addresses=<parameter>FILENAME</parameter></term>
<listitem>
<para>
FILENAME specifying a file containing the public IP
nodes.
</para>
<para>
- This is usually the file
+ Default is
<filename>/usr/local/etc/ctdb/public_addresses</filename>
</para>
</listitem>
initialise_node_flags(ctdb);
- if (ctdb->public_addresses_file) {
- ret = ctdb_set_public_addresses(ctdb, true);
- if (ret == -1) {
- DEBUG(DEBUG_ALERT,("Unable to setup public address list\n"));
- exit(1);
- }
+ ret = ctdb_set_public_addresses(ctdb, true);
+ if (ret == -1) {
+ D_ERR("Unable to setup public IP addresses\n");
+ exit(1);
}
ctdb_initialise_vnn_map(ctdb);
*/
int ctdb_set_public_addresses(struct ctdb_context *ctdb, bool check_addresses)
{
+ bool ok;
char **lines;
int nlines;
int i;
+ /* If no public addresses file given then try the default */
+ if (ctdb->public_addresses_file == NULL) {
+ const char *b = getenv("CTDB_BASE");
+ if (b == NULL) {
+ DBG_ERR("CTDB_BASE not set\n");
+ return -1;
+ }
+ ctdb->public_addresses_file = talloc_asprintf(
+ ctdb, "%s/%s", b, "public_addresses");
+ if (ctdb->public_addresses_file == NULL) {
+ DBG_ERR("Out of memory\n");
+ return -1;
+ }
+ }
+
+ /* If the file doesn't exist then warn and do nothing */
+ ok = file_exist(ctdb->public_addresses_file);
+ if (!ok) {
+ D_WARNING("Not loading public addresses, no file %s\n",
+ ctdb->public_addresses_file);
+ return 0;
+ }
+
lines = file_lines_load(ctdb->public_addresses_file, &nlines, 0, ctdb);
if (lines == NULL) {
ctdb_set_error(ctdb, "Failed to load public address list '%s'\n", ctdb->public_addresses_file);
}
+ D_NOTICE("Loaded public addresses from %s\n",
+ ctdb->public_addresses_file);
+
talloc_free(lines);
return 0;
}