]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
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)
committerKarolin Seeger <kseeger@samba.org>
Wed, 28 Aug 2019 07:36:30 +0000 (07:36 +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>
(cherry picked from commit 010c1d77cd7e192b1fff39b7b91fccbdbbf4a786)

ctdb/include/ctdb_private.h
ctdb/server/ctdb_daemon.c
ctdb/server/ctdb_server.c
ctdb/tcp/tcp_connect.c

index ea00bb1212807fe05a39c7fd5e91f973f95476e4..b6d0d0c678a4a8d0de8ee6b5766409da17e08bb3 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 ca98be6a100d8eca164f621f8930e0e9a8444e9e..d79634c3b54264b14a4dfb99146c7a5e1ebb4d55 100644 (file)
@@ -1251,21 +1251,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 c991b85d99b2ff68293fefb47f627f64c9a3e9b4..6973a0b6056e3e19eccbf5894a9ce8e434e4e4bb 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 385547e0e78936c7de06aa6380292b51d9bec6b9..ccd7c044fb27373841d342ca61c31bf37c6c62ee 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;
        }