1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-05 20:58:40 +03:00

ctdb-daemon: Add function ctdb_ip_to_node()

This is the core logic from ctdb_ip_to_pnn(), so re-implement that
that function using ctdb_ip_to_node().

Something similar (ctdb_ip_to_nodeid()) was recently removed in commit
010c1d77cd7e192b1fff39b7b91fccbdbbf4a786 because it wasn't required.
Now there is a use case.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14084

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit 3acb8e9d1c854b577d6be282257269df83055d31)
This commit is contained in:
Martin Schwenke 2019-08-08 16:20:44 +10:00 committed by Karolin Seeger
parent a309b862e8
commit a8dd1a0577
2 changed files with 21 additions and 5 deletions

View File

@ -841,6 +841,8 @@ void ctdb_stop_recoverd(struct ctdb_context *ctdb);
int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport);
struct ctdb_node *ctdb_ip_to_node(struct ctdb_context *ctdb,
const ctdb_sock_addr *nodeip);
uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb,
const ctdb_sock_addr *nodeip);

View File

@ -45,9 +45,9 @@ int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport)
return 0;
}
/* Return the PNN for nodeip, CTDB_UNKNOWN_PNN if nodeip is invalid */
uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb,
const ctdb_sock_addr *nodeip)
/* Return the node structure for nodeip, NULL if nodeip is invalid */
struct ctdb_node *ctdb_ip_to_node(struct ctdb_context *ctdb,
const ctdb_sock_addr *nodeip)
{
unsigned int nodeid;
@ -56,11 +56,25 @@ uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb,
continue;
}
if (ctdb_same_ip(&ctdb->nodes[nodeid]->address, nodeip)) {
return ctdb->nodes[nodeid]->pnn;
return ctdb->nodes[nodeid];
}
}
return CTDB_UNKNOWN_PNN;
return NULL;
}
/* Return the PNN for nodeip, CTDB_UNKNOWN_PNN if nodeip is invalid */
uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb,
const ctdb_sock_addr *nodeip)
{
struct ctdb_node *node;
node = ctdb_ip_to_node(ctdb, nodeip);
if (node == NULL) {
return CTDB_UNKNOWN_PNN;
}
return node->pnn;
}
/* Load a nodes list file into a nodes array */