summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-utils.c
diff options
context:
space:
mode:
authorVijay Bellur <vijay@gluster.com>2010-07-22 04:17:35 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-07-22 23:10:38 -0700
commitbe4dee16c18e262b168c74face54cf17ca13e2f4 (patch)
tree5301cf748e07815303d5ba16d5b765849a8165a0 /xlators/mgmt/glusterd/src/glusterd-utils.c
parent5601c137674b4dabd39b1cf26a36327bfbc707a6 (diff)
Changes for Dynamic Volume Management
Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Vijay Bellur <vijay@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1196 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1196
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c51
1 files changed, 47 insertions, 4 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index ad9c907faf6..e0612810757 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -70,6 +70,51 @@ glusterd_unset_lock_owner (uuid_t owner)
return 0;
}
+static int32_t
+glusterd_is_local_addr (char *hostname)
+{
+ int32_t ret = -1;
+ struct addrinfo *result = NULL;
+ struct addrinfo *res = NULL;
+ int32_t found = 0;
+
+ if ((!strcmp (hostname, "localhost")) ||
+ (!strcmp (hostname, "127.0.0.1"))) {
+ found = 0;
+ goto out;
+ }
+
+ ret = getaddrinfo (hostname, NULL, NULL, &result);
+
+ if (ret != 0) {
+ gf_log ("", GF_LOG_ERROR, "error in getaddrinfo: %s\n",
+ gai_strerror(ret));
+ goto out;
+ }
+
+ for (res = result; res != NULL; res = res->ai_next) {
+ char hname[1024] = "";
+
+ ret = getnameinfo (res->ai_addr, res->ai_addrlen, hname,
+ NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
+ if (ret)
+ goto out;
+
+ if (!strncasecmp (hname, "127", 3)) {
+ ret = 0;
+ gf_log ("", GF_LOG_NORMAL, "local addr found");
+ found = 1;
+ break;
+ }
+ }
+
+out:
+ //if (result)
+ // freeaddrinfo (result);
+
+ return !found;
+}
+
int32_t
glusterd_lock (uuid_t uuid)
{
@@ -478,11 +523,9 @@ glusterd_resolve_brick (glusterd_brickinfo_t *brickinfo)
}
if (ret) {
- if ((!strcmp (brickinfo->hostname, "localhost")) ||
- (!strcmp (brickinfo->hostname, "127.0.0.1"))) {
+ ret = glusterd_is_local_addr (brickinfo->hostname);
+ if (!ret)
uuid_copy (brickinfo->uuid, priv->uuid);
- ret = 0;
- }
}
gf_log ("", GF_LOG_DEBUG, "Returning %d", ret);