public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* cluster: STABLE2 - fence: Allow IP addresses as node names
@ 2009-06-04 16:07 Christine Caulfield
  0 siblings, 0 replies; only message in thread
From: Christine Caulfield @ 2009-06-04 16:07 UTC (permalink / raw)
  To: cluster-cvs-relay

Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=245519e8cac03d10ccc3f09eff6fb7077c24a09f
Commit:        245519e8cac03d10ccc3f09eff6fb7077c24a09f
Parent:        88a4dbb59e5643e5dedcb223511cd2f91aeccce2
Author:        Christine Caulfield <ccaulfie@redhat.com>
AuthorDate:    Thu Jun 4 16:55:39 2009 +0100
Committer:     Christine Caulfield <ccaulfie@redhat.com>
CommitterDate: Thu Jun 4 17:06:21 2009 +0100

fence: Allow IP addresses as node names

When checking if a node is a member of the cluster, fenced does a full-string
check of the name. If that doesn't match it then assumes that one of the
names is a FQDN and one is truncated so it starts checking the bit before the
first dot.

If the node names are IP addresses then this will match all of the time for
most clusters. eg: 192.168.2.1 will match 192.168.2.2 because it just
matches the 192. This makes fenced think that the node has rejoined the cluster
because it sees the name in the list of active nodes, and won't fence it.

This patch abandons the match check afer the full-string one if the node
name is found to be an IP address.

bz#504158

Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
---
 fence/fenced/member_cman.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/fence/fenced/member_cman.c b/fence/fenced/member_cman.c
index 37e3e8a..1231925 100644
--- a/fence/fenced/member_cman.c
+++ b/fence/fenced/member_cman.c
@@ -1,4 +1,5 @@
 #include <libcman.h>
+#include <arpa/inet.h>
 #include "fd.h"
 
 #define BUFLEN		128
@@ -18,6 +19,7 @@ int			our_nodeid;
 static int name_equal(char *name1, char *name2)
 {
 	char name3[BUFLEN], name4[BUFLEN];
+	char addr1[INET6_ADDRSTRLEN];
 	int i, len1, len2;
 
 	len1 = strlen(name1);
@@ -26,6 +28,16 @@ static int name_equal(char *name1, char *name2)
 	if (len1 == len2 && !strncmp(name1, name2, len1))
 		return TRUE;
 
+	/*
+	 * If the names are IP addresses then don't compare
+	 * what is in front of the dots.
+	 */
+	if (inet_pton(AF_INET, name1, addr1) == 0)
+		return FALSE;
+
+	if (inet_pton(AF_INET6, name1, addr1) == 0)
+		return FALSE;
+
 	memset(name3, 0, BUFLEN);
 	memset(name4, 0, BUFLEN);
 


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-06-04 16:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-04 16:07 cluster: STABLE2 - fence: Allow IP addresses as node names Christine Caulfield

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).