ctdb-daemon: Replace function ctdb_ip_to_nodeid() with ctdb_ip_to_pnn()
authorMartin Schwenke <martin@meltin.net>
Fri, 21 Jun 2019 19:53:15 +0000 (05:53 +1000)
committerAmitay Isaacs <amitay@samba.org>
Fri, 5 Jul 2019 05:03:23 +0000 (05:03 +0000)
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>
ctdb/include/ctdb_private.h
ctdb/server/ctdb_daemon.c
ctdb/server/ctdb_server.c
ctdb/tcp/tcp_connect.c

index 9eec244c4f265aee6235650cc9cb496924ddd12a..7ea7691a36b97aabb4546e95a48549d62491fd38 100644 (file)
@@ -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);
 
index 6a4e42d8010eb05fbdd3c6922ee5f86af98cc8c1..e9fbc29cb98bacaae98fe8a1b2abb895a677a26e 100644 (file)
@@ -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);
 }
 
 /*
index eb11eb1f95c05861fdb26e9e620e1d3b0003b3f2..dcd761a29614829b56bd86fea9bdcdafc4a3907b 100644 (file)
@@ -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 */
index a8fca530470775a526d717952c0350cc0d7fce71..d757abdf26c85ce31e80de4f4471f14386e8114e 100644 (file)
@@ -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;
        }