From: Martin Schwenke Date: Tue, 12 Dec 2023 23:22:04 +0000 (+1100) Subject: ctdb-daemon: Use ctdb_connection_to_buf() to simplify X-Git-Tag: samba-4.18.10~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff4ed4d760a61e59d2e23f1e3d956308585b846d;p=thirdparty%2Fsamba.git ctdb-daemon: Use ctdb_connection_to_buf() to simplify The one case that is no longer handled specially is when the destination address is IPv4 loopback. This may previously have been used to avoid flooding the logs when testing. However, that seems unnecessary - if testing with 127.0.0.1 then make it a public address. Modernise debug while touching the code. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15523 Signed-off-by: Martin Schwenke Reviewed-by: Stefan Metzmacher (cherry picked from commit 8fc3872557f715dc38f9898754a785fd073ace96) --- diff --git a/ctdb/server/ctdb_takeover.c b/ctdb/server/ctdb_takeover.c index bbef628e1bc..0148ea24de5 100644 --- a/ctdb/server/ctdb_takeover.c +++ b/ctdb/server/ctdb_takeover.c @@ -1271,8 +1271,8 @@ int32_t ctdb_control_tcp_client(struct ctdb_context *ctdb, uint32_t client_id, int ret; TDB_DATA data; struct ctdb_vnn *vnn; - ctdb_sock_addr src_addr; ctdb_sock_addr dst_addr; + char conn_str[132] = { 0, }; /* If we don't have public IPs, tickles are useless */ if (ctdb->vnn == NULL) { @@ -1282,43 +1282,23 @@ int32_t ctdb_control_tcp_client(struct ctdb_context *ctdb, uint32_t client_id, tcp_sock = (struct ctdb_connection *)indata.dptr; ctdb_canonicalize_ip_inplace(&tcp_sock->src); - src_addr = tcp_sock->src; - ctdb_canonicalize_ip_inplace(&tcp_sock->dst); dst_addr = tcp_sock->dst; + ret = ctdb_connection_to_buf(conn_str, + sizeof(conn_str), + tcp_sock, + false, + " -> "); + if (ret != 0) { + strlcpy(conn_str, "UNKNOWN", sizeof(conn_str)); + } + vnn = find_public_ip_vnn(ctdb, &dst_addr); if (vnn == NULL) { - char *src_addr_str = NULL; - char *dst_addr_str = NULL; - - switch (dst_addr.sa.sa_family) { - case AF_INET: - if (ntohl(dst_addr.ip.sin_addr.s_addr) == INADDR_LOOPBACK) { - /* ignore ... */ - return 0; - } - break; - case AF_INET6: - break; - default: - DEBUG(DEBUG_ERR,(__location__ " Unknown family type %d\n", - dst_addr.sa.sa_family)); - return 0; - } - - src_addr_str = ctdb_sock_addr_to_string(client, &src_addr, false); - dst_addr_str = ctdb_sock_addr_to_string(client, &dst_addr, false); - DEBUG(DEBUG_ERR,( - "Could not register TCP connection from " - "%s to %s (not a public address) (port %u) " - "(client_id %u pid %u).\n", - src_addr_str, - dst_addr_str, - ctdb_sock_addr_port(&dst_addr), - client_id, client->pid)); - TALLOC_FREE(src_addr_str); - TALLOC_FREE(dst_addr_str); + D_ERR("Could not register TCP connection %s - " + "not a public address (client_id %u pid %u)\n", + conn_str, client_id, client->pid); return 0; } @@ -1346,24 +1326,8 @@ int32_t ctdb_control_tcp_client(struct ctdb_context *ctdb, uint32_t client_id, data.dptr = (uint8_t *)&t; data.dsize = sizeof(t); - switch (dst_addr.sa.sa_family) { - case AF_INET: - DEBUG(DEBUG_INFO,("registered tcp client for %u->%s:%u (client_id %u pid %u)\n", - (unsigned)ntohs(tcp_sock->dst.ip.sin_port), - ctdb_addr_to_str(&tcp_sock->src), - (unsigned)ntohs(tcp_sock->src.ip.sin_port), client_id, client->pid)); - break; - case AF_INET6: - DEBUG(DEBUG_INFO,("registered tcp client for %u->%s:%u (client_id %u pid %u)\n", - (unsigned)ntohs(tcp_sock->dst.ip6.sin6_port), - ctdb_addr_to_str(&tcp_sock->src), - (unsigned)ntohs(tcp_sock->src.ip6.sin6_port), client_id, client->pid)); - break; - default: - DEBUG(DEBUG_ERR,(__location__ " Unknown family %d\n", - dst_addr.sa.sa_family)); - } - + D_INFO("Registered TCP connection %s (client_id %u pid %u)\n", + conn_str, client_id, client->pid); /* tell all nodes about this tcp connection */ ret = ctdb_daemon_send_control(ctdb, CTDB_BROADCAST_CONNECTED, 0,