diff options
author | Martin Schwenke <martin@meltin.net> | 2019-06-22 05:53:15 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2019-07-05 05:03:23 +0000 |
commit | 010c1d77cd7e192b1fff39b7b91fccbdbbf4a786 (patch) | |
tree | b254307ce73b7f7eb5cc44defe5d851496745a61 /ctdb | |
parent | 888ecc74ed1a6617b8a0a4450b671cf5f6d88f8b (diff) | |
download | samba-010c1d77cd7e192b1fff39b7b91fccbdbbf4a786.tar.gz |
ctdb-daemon: Replace function ctdb_ip_to_nodeid() with ctdb_ip_to_pnn()
Node ID is a poorly defined concept, indicating the slot in the node
map where the IP address was found. This signed value also ends up
compared to num_nodes, which is unsigned, producing unwanted warnings.
Just return the PNN because this what both callers really want.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/include/ctdb_private.h | 3 | ||||
-rw-r--r-- | ctdb/server/ctdb_daemon.c | 11 | ||||
-rw-r--r-- | ctdb/server/ctdb_server.c | 14 | ||||
-rw-r--r-- | ctdb/tcp/tcp_connect.c | 10 |
4 files changed, 18 insertions, 20 deletions
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index 9eec244c4f2..7ea7691a36b 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -841,7 +841,8 @@ void ctdb_stop_recoverd(struct ctdb_context *ctdb); int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport); -int ctdb_ip_to_nodeid(struct ctdb_context *ctdb, const ctdb_sock_addr *nodeip); +uint32_t ctdb_ip_to_pnn(struct ctdb_context *ctdb, + const ctdb_sock_addr *nodeip); void ctdb_load_nodes_file(struct ctdb_context *ctdb); diff --git a/ctdb/server/ctdb_daemon.c b/ctdb/server/ctdb_daemon.c index 6a4e42d8010..e9fbc29cb98 100644 --- a/ctdb/server/ctdb_daemon.c +++ b/ctdb/server/ctdb_daemon.c @@ -1374,21 +1374,18 @@ static void ctdb_initialise_vnn_map(struct ctdb_context *ctdb) static void ctdb_set_my_pnn(struct ctdb_context *ctdb) { - int nodeid; - if (ctdb->address == NULL) { ctdb_fatal(ctdb, "Can not determine PNN - node address is not set\n"); } - nodeid = ctdb_ip_to_nodeid(ctdb, ctdb->address); - if (nodeid == -1) { + ctdb->pnn = ctdb_ip_to_pnn(ctdb, ctdb->address); + if (ctdb->pnn == CTDB_UNKNOWN_PNN) { ctdb_fatal(ctdb, - "Can not determine PNN - node address not found in node list\n"); + "Can not determine PNN - unknown node address\n"); } - ctdb->pnn = ctdb->nodes[nodeid]->pnn; - DEBUG(DEBUG_NOTICE, ("PNN is %u\n", ctdb->pnn)); + D_NOTICE("PNN is %u\n", ctdb->pnn); } /* diff --git a/ctdb/server/ctdb_server.c b/ctdb/server/ctdb_server.c index eb11eb1f95c..dcd761a2961 100644 --- a/ctdb/server/ctdb_server.c +++ b/ctdb/server/ctdb_server.c @@ -45,24 +45,22 @@ int ctdb_set_transport(struct ctdb_context *ctdb, const char *transport) return 0; } -/* - Check whether an ip is a valid node ip - Returns the node id for this ip address or -1 -*/ -int ctdb_ip_to_nodeid(struct ctdb_context *ctdb, const ctdb_sock_addr *nodeip) +/* 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) { - int nodeid; + unsigned int nodeid; for (nodeid=0;nodeid<ctdb->num_nodes;nodeid++) { if (ctdb->nodes[nodeid]->flags & NODE_FLAGS_DELETED) { continue; } if (ctdb_same_ip(&ctdb->nodes[nodeid]->address, nodeip)) { - return nodeid; + return ctdb->nodes[nodeid]->pnn; } } - return -1; + return CTDB_UNKNOWN_PNN; } /* Load a nodes list file into a nodes array */ diff --git a/ctdb/tcp/tcp_connect.c b/ctdb/tcp/tcp_connect.c index a8fca530470..d757abdf26c 100644 --- a/ctdb/tcp/tcp_connect.c +++ b/ctdb/tcp/tcp_connect.c @@ -244,7 +244,8 @@ static void ctdb_listen_event(struct tevent_context *ev, struct tevent_fd *fde, struct ctdb_tcp *ctcp = talloc_get_type(ctdb->private_data, struct ctdb_tcp); ctdb_sock_addr addr; socklen_t len; - int fd, nodeid; + int fd; + uint32_t pnn; struct ctdb_incoming *in; int one = 1; int ret; @@ -255,10 +256,11 @@ static void ctdb_listen_event(struct tevent_context *ev, struct tevent_fd *fde, if (fd == -1) return; smb_set_close_on_exec(fd); - nodeid = ctdb_ip_to_nodeid(ctdb, &addr); + pnn = ctdb_ip_to_pnn(ctdb, &addr); - if (nodeid == -1) { - DEBUG(DEBUG_ERR, ("Refused connection from unknown node %s\n", ctdb_addr_to_str(&addr))); + if (pnn == CTDB_UNKNOWN_PNN) { + D_ERR("Refused connection from unknown node %s\n", + ctdb_addr_to_str(&addr)); close(fd); return; } |