const char *envvar,
const char *dir, const char *file);
-int ctdb_parse_address(TALLOC_CTX *mem_ctx, const char *str,
- ctdb_sock_addr *address);
-
bool ctdb_same_address(ctdb_sock_addr *a1, ctdb_sock_addr *a2);
uint32_t ctdb_hash(const TDB_DATA *key);
return true;
}
-/*
- parse a IP:port pair
-*/
-int ctdb_parse_address(TALLOC_CTX *mem_ctx, const char *str,
- ctdb_sock_addr *address)
-{
- struct servent *se;
- int port;
- int ret;
-
- setservent(0);
- se = getservbyname("ctdb", "tcp");
- endservent();
-
- if (se == NULL) {
- port = CTDB_PORT;
- } else {
- port = ntohs(se->s_port);
- }
-
- ret = ctdb_sock_addr_from_string(str, address, false);
- if (ret != 0) {
- return -1;
- }
- ctdb_sock_addr_set_port(address, port);
-
- return 0;
-}
-
-
/*
check if two addresses are the same
*/
*/
int ctdb_set_address(struct ctdb_context *ctdb, const char *address)
{
+ bool ok;
+
ctdb->address = talloc(ctdb, ctdb_sock_addr);
CTDB_NO_MEMORY(ctdb, ctdb->address);
- if (ctdb_parse_address(ctdb, address, ctdb->address) != 0) {
+ ok = ctdb_parse_node_address(address, ctdb->address);
+ if (!ok) {
+ TALLOC_FREE(ctdb->address);
return -1;
}