uint32_t seq, uint32_t ack, int rst);
int ctdb_set_public_addresses(struct ctdb_context *ctdb, const char *alist);
+int ctdb_set_single_public_ip(struct ctdb_context *ctdb,
+ const char *iface,
+ const char *ip);
int ctdb_set_event_script(struct ctdb_context *ctdb, const char *script);
int ctdb_set_event_script_dir(struct ctdb_context *ctdb, const char *script_dir);
int ctdb_set_notification_script(struct ctdb_context *ctdb, const char *script);
return 0;
}
+int ctdb_set_single_public_ip(struct ctdb_context *ctdb,
+ const char *iface,
+ const char *ip)
+{
+ struct ctdb_vnn *svnn;
+ bool ok;
+
+ svnn = talloc_zero(ctdb, struct ctdb_vnn);
+ CTDB_NO_MEMORY(ctdb, svnn);
+ svnn->iface = talloc_strdup(svnn, iface);
+ CTDB_NO_MEMORY(ctdb, svnn->iface);
+ ok = parse_ip(ip, iface, 0, &svnn->public_address);
+ if (!ok) {
+ talloc_free(svnn);
+ return -1;
+ }
+
+ ctdb->single_ip_vnn = svnn;
+ return 0;
+}
struct ctdb_public_ip_list {
struct ctdb_public_ip_list *next;
}
if (options.single_public_ip) {
- struct ctdb_vnn *svnn;
-
if (options.public_interface == NULL) {
DEBUG(DEBUG_ALERT,("--single_public_ip used but --public_interface is not specified. You must specify the public interface when using single public ip. Exiting\n"));
exit(10);
}
- svnn = talloc_zero(ctdb, struct ctdb_vnn);
- CTDB_NO_MEMORY(ctdb, svnn);
-
- ctdb->single_ip_vnn = svnn;
- svnn->iface = talloc_strdup(svnn, options.public_interface);
- CTDB_NO_MEMORY(ctdb, svnn->iface);
-
- if (parse_ip(options.single_public_ip,
- svnn->iface,
- 0,
- &svnn->public_address) == 0) {
+ ret = ctdb_set_single_public_ip(ctdb, options.public_interface,
+ options.single_public_ip);
+ if (ret != 0) {
DEBUG(DEBUG_ALERT,("Invalid --single-public-ip argument : %s . This is not a valid ip address. Exiting.\n", options.single_public_ip));
exit(10);
}