diff options
| -rw-r--r-- | libglusterfs/src/common-utils.c | 232 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.h | 2 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 6 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handshake.c | 2 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 4 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 24 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 236 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 3 | 
8 files changed, 254 insertions, 255 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index ab3674ead..034e3da25 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -45,6 +45,7 @@  #include "globals.h"  #include "lkowner.h"  #include "syscall.h" +#include <ifaddrs.h>  #ifndef AI_ADDRCONFIG  #define AI_ADDRCONFIG 0 @@ -2565,3 +2566,234 @@ gf_get_hostname_from_ip (char *client_ip, char **hostname)          return ret;  } + +gf_boolean_t +gf_interface_search (char *ip) +{ +        int32_t         ret = -1; +        gf_boolean_t    found = _gf_false; +        struct          ifaddrs *ifaddr, *ifa; +        int             family; +        char            host[NI_MAXHOST]; +        xlator_t        *this = NULL; +        char            *pct = NULL; + +        this = THIS; + +        ret = getifaddrs (&ifaddr); + +        if (ret != 0) { +                gf_log (this->name, GF_LOG_ERROR, "getifaddrs() failed: %s\n", +                        gai_strerror(ret)); +                goto out; +        } + +        for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { +                if (!ifa->ifa_addr) { +                        /* +                         * This seemingly happens if an interface hasn't +                         * been bound to a particular protocol (seen with +                         * TUN devices). +                         */ +                        continue; +                } +                family = ifa->ifa_addr->sa_family; + +                if (family != AF_INET && family != AF_INET6) +                        continue; + +                ret = getnameinfo (ifa->ifa_addr, +                        (family == AF_INET) ? sizeof(struct sockaddr_in) : +                                              sizeof(struct sockaddr_in6), +                        host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); + +                if (ret != 0) { +                        gf_log (this->name, GF_LOG_ERROR, +                                "getnameinfo() failed: %s\n", +                                gai_strerror(ret)); +                        goto out; +                } + +                /* +                 * Sometimes the address comes back as addr%eth0 or +                 * similar.  Since % is an invalid character, we can +                 * strip it out with confidence that doing so won't +                 * harm anything. +                 */ +                pct = index(host,'%'); +                if (pct) { +                        *pct = '\0'; +                } + +                if (strncmp (ip, host, NI_MAXHOST) == 0) { +                        gf_log (this->name, GF_LOG_DEBUG, +                                "%s is local address at interface %s", +                                ip, ifa->ifa_name); +                        found = _gf_true; +                        goto out; +                } +        } +out: +        if(ifaddr) +                freeifaddrs (ifaddr); +        return found; +} + +char * +get_ip_from_addrinfo (struct addrinfo *addr, char **ip) +{ +        char buf[64]; +        void *in_addr = NULL; +        struct sockaddr_in *s4 = NULL; +        struct sockaddr_in6 *s6 = NULL; + +        switch (addr->ai_family) +        { +                case AF_INET: +                        s4 = (struct sockaddr_in *)addr->ai_addr; +                        in_addr = &s4->sin_addr; +                        break; + +                case AF_INET6: +                        s6 = (struct sockaddr_in6 *)addr->ai_addr; +                        in_addr = &s6->sin6_addr; +                        break; + +                default: +                        gf_log ("glusterd", GF_LOG_ERROR, "Invalid family"); +                        return NULL; +        } + +        if (!inet_ntop(addr->ai_family, in_addr, buf, sizeof(buf))) { +                gf_log ("glusterd", GF_LOG_ERROR, "String conversion failed"); +                return NULL; +        } + +        *ip = strdup (buf); +        return *ip; +} + +gf_boolean_t +gf_is_loopback_localhost (const struct sockaddr *sa, char *hostname) +{ +        GF_ASSERT (sa); + +        gf_boolean_t is_local = _gf_false; +        const struct in_addr *addr4 = NULL; +        const struct in6_addr *addr6 = NULL; +        uint8_t      *ap   = NULL; +        struct in6_addr loopbackaddr6 = IN6ADDR_LOOPBACK_INIT; + +        switch (sa->sa_family) { +                case AF_INET: +                        addr4 = &(((struct sockaddr_in *)sa)->sin_addr); +                        ap = (uint8_t*)&addr4->s_addr; +                        if (ap[0] == 127) +                                is_local = _gf_true; +                        break; + +                case AF_INET6: +                        addr6 = &(((struct sockaddr_in6 *)sa)->sin6_addr); +                        if (memcmp (addr6, &loopbackaddr6, +                                    sizeof (loopbackaddr6)) == 0) +                                is_local = _gf_true; +                        break; + +                default: +                        if (hostname) +                                gf_log ("glusterd", GF_LOG_ERROR, +                                        "unknown address family %d for %s", +                                        sa->sa_family, hostname); +                        break; +        } + +        return is_local; +} + +gf_boolean_t +gf_is_local_addr (char *hostname) +{ +        int32_t         ret = -1; +        struct          addrinfo *result = NULL; +        struct          addrinfo *res = NULL; +        gf_boolean_t    found = _gf_false; +        char            *ip = NULL; +        xlator_t        *this = NULL; + +        this = THIS; +        ret = getaddrinfo (hostname, NULL, NULL, &result); + +        if (ret != 0) { +                gf_log (this->name, GF_LOG_ERROR, "error in getaddrinfo: %s\n", +                        gai_strerror(ret)); +                goto out; +        } + +        for (res = result; res != NULL; res = res->ai_next) { +                gf_log (this->name, GF_LOG_DEBUG, "%s ", +                        get_ip_from_addrinfo (res, &ip)); + +                found = gf_is_loopback_localhost (res->ai_addr, hostname) +                        || gf_interface_search (ip); +                if (found) +                        goto out; +        } + +out: +        if (result) +                freeaddrinfo (result); + +        if (!found) +                gf_log (this->name, GF_LOG_DEBUG, "%s is not local", hostname); + +        return found; +} + +gf_boolean_t +gf_is_same_address (char *name1, char *name2) +{ +        struct addrinfo         *addr1 = NULL; +        struct addrinfo         *addr2 = NULL; +        struct addrinfo         *p = NULL; +        struct addrinfo         *q = NULL; +        gf_boolean_t            ret = _gf_false; +        int                     gai_err = 0; + +        gai_err = getaddrinfo(name1,NULL,NULL,&addr1); +        if (gai_err != 0) { +                gf_log (name1, GF_LOG_WARNING, +                        "error in getaddrinfo: %s\n", gai_strerror(gai_err)); +                goto out; +        } + +        gai_err = getaddrinfo(name2,NULL,NULL,&addr2); +        if (gai_err != 0) { +                gf_log (name2, GF_LOG_WARNING, +                        "error in getaddrinfo: %s\n", gai_strerror(gai_err)); +                goto out; +        } + +        for (p = addr1; p; p = p->ai_next) { +                for (q = addr2; q; q = q->ai_next) { +                        if (p->ai_addrlen != q->ai_addrlen) { +                                continue; +                        } +                        if (memcmp(p->ai_addr,q->ai_addr,p->ai_addrlen)) { +                                continue; +                        } +                        ret = _gf_true; +                        goto out; +                } +        } + +out: +        if (addr1) { +                freeaddrinfo(addr1); +        } +        if (addr2) { +                freeaddrinfo(addr2); +        } +        return ret; + +} + diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index 1fb36d658..b0d9c18b3 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -582,5 +582,7 @@ char *gf_get_reserved_ports();  int gf_process_reserved_ports (gf_boolean_t ports[]);  gf_boolean_t gf_ports_reserved (char *blocked_port, gf_boolean_t *ports);  int gf_get_hostname_from_ip (char *client_ip, char **hostname); +gf_boolean_t gf_is_local_addr (char *hostname); +gf_boolean_t gf_is_same_address (char *host1, char *host2);  #endif /* _COMMON_UTILS_H */ diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 7ae8b28be..480ee01b0 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -809,10 +809,10 @@ __glusterd_handle_cli_probe (rpcsvc_request_t *req)                           &bind_name) == 0) {                  gf_log ("glusterd", GF_LOG_DEBUG,                          "only checking probe address vs. bind address"); -                ret = glusterd_is_same_address (bind_name, hostname); +                ret = gf_is_same_address (bind_name, hostname);          }          else { -                ret = glusterd_is_local_addr (hostname); +                ret = gf_is_local_addr (hostname);          }          if (ret) {                  glusterd_xfer_cli_probe_resp (req, 0, GF_PROBE_LOCALHOST, @@ -1695,7 +1695,7 @@ __glusterd_handle_sync_volume (rpcsvc_request_t *req)          gf_log (this->name, GF_LOG_INFO, "Received volume sync req "                  "for volume %s", (flags & GF_CLI_SYNC_ALL) ? "all" : volname); -        if (glusterd_is_local_addr (hostname)) { +        if (gf_is_local_addr (hostname)) {                  ret = -1;                  snprintf (msg, sizeof (msg), "sync from localhost"                            " not allowed"); diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c index c5a018ec4..ab172f69a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handshake.c +++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c @@ -253,7 +253,7 @@ __server_getspec (rpcsvc_request_t *req)          *tmp = '\0';          /* we trust the local admin */ -        if (glusterd_is_local_addr (addrstr)) { +        if (gf_is_local_addr (addrstr)) {                  ret = build_volfile_path (volume, filename,                                            sizeof (filename), diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 7f19be072..fb8d1f17e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -828,7 +828,7 @@ glusterd_op_stage_sync_volume (dict_t *dict, char **op_errstr)                  goto out;          } -        if (glusterd_is_local_addr (hostname)) { +        if (gf_is_local_addr (hostname)) {                  //volname is not present in case of sync all                  ret = dict_get_str (dict, "volname", &volname);                  if (!ret) { @@ -1731,7 +1731,7 @@ glusterd_op_sync_volume (dict_t *dict, char **op_errstr,                  goto out;          } -        if (!glusterd_is_local_addr (hostname)) { +        if (!gf_is_local_addr (hostname)) {                  ret = 0;                  goto out;          } diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index c1506033b..5c879b64c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -441,7 +441,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,                  }          } -        if (glusterd_is_local_addr (src_brickinfo->hostname)) { +        if (gf_is_local_addr (src_brickinfo->hostname)) {                  gf_log (this->name, GF_LOG_DEBUG,                          "I AM THE SOURCE HOST");                  if (src_brickinfo->port && rsp_dict) { @@ -518,7 +518,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,         }          if (!glusterd_is_rb_ongoing (volinfo) && -            glusterd_is_local_addr (host)) { +            gf_is_local_addr (host)) {                  ret = glusterd_validate_and_create_brickpath (dst_brickinfo,                                                    volinfo->volume_id,                                                    op_errstr, is_force); @@ -526,7 +526,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,                          goto out;          } -        if (!glusterd_is_local_addr (host)) { +        if (!gf_is_local_addr (host)) {                  ret = glusterd_friend_find (NULL, host, &peerinfo);                  if (ret) {                          snprintf (msg, sizeof (msg), "%s, is not a friend", @@ -553,7 +553,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,          }          if (replace_op == GF_REPLACE_OP_START && -            glusterd_is_local_addr (volinfo->rep_brick.dst_brick->hostname)) { +            gf_is_local_addr (volinfo->rep_brick.dst_brick->hostname)) {                  port = pmap_registry_alloc (THIS);                  if (!port) {                          gf_log (THIS->name, GF_LOG_CRITICAL, @@ -1414,7 +1414,7 @@ rb_update_srcbrick_port (glusterd_brickinfo_t *src_brickinfo, dict_t *rsp_dict,          if (src_port)                  src_brickinfo->port = src_port; -        if (glusterd_is_local_addr (src_brickinfo->hostname)) { +        if (gf_is_local_addr (src_brickinfo->hostname)) {                  gf_log ("", GF_LOG_INFO,                          "adding src-brick port no"); @@ -1468,7 +1468,7 @@ rb_update_dstbrick_port (glusterd_brickinfo_t *dst_brickinfo, dict_t *rsp_dict,                  dst_brickinfo->port = dst_port; -        if (glusterd_is_local_addr (dst_brickinfo->hostname)) { +        if (gf_is_local_addr (dst_brickinfo->hostname)) {                  gf_log ("", GF_LOG_INFO,                          "adding dst-brick port no"); @@ -1676,7 +1676,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)                          uuid_parse (task_id_str, volinfo->rep_brick.rb_id);                  } -                if (glusterd_is_local_addr (dst_brickinfo->hostname)) { +                if (gf_is_local_addr (dst_brickinfo->hostname)) {                          gf_log (this->name, GF_LOG_INFO,                                  "I AM THE DESTINATION HOST");                          if (!glusterd_is_rb_paused (volinfo)) { @@ -1696,7 +1696,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)  		} -		if (glusterd_is_local_addr (src_brickinfo->hostname)) { +		if (gf_is_local_addr (src_brickinfo->hostname)) {  		        ret = rb_src_brick_restart (volinfo, src_brickinfo,  				                    1);  		        if (ret) { @@ -1706,7 +1706,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)  			}  		} -		if (glusterd_is_local_addr (dst_brickinfo->hostname)) { +		if (gf_is_local_addr (dst_brickinfo->hostname)) {  			gf_log (this->name, GF_LOG_INFO,  				"adding dst-brick port no"); @@ -1737,7 +1737,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)                  /* fall through */          case GF_REPLACE_OP_COMMIT_FORCE:          { -                if (glusterd_is_local_addr (dst_brickinfo->hostname)) { +                if (gf_is_local_addr (dst_brickinfo->hostname)) {                          gf_log (this->name, GF_LOG_DEBUG,                                  "I AM THE DESTINATION HOST");                          ret = rb_kill_destination_brick (volinfo, @@ -1818,7 +1818,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)                          }                  } -                if (glusterd_is_local_addr (src_brickinfo->hostname)) { +                if (gf_is_local_addr (src_brickinfo->hostname)) {                          ret = rb_src_brick_restart (volinfo, src_brickinfo,                                                      0);                          if (ret) { @@ -1829,7 +1829,7 @@ glusterd_op_replace_brick (dict_t *dict, dict_t *rsp_dict)                          }                  } -                if (glusterd_is_local_addr (dst_brickinfo->hostname)) { +                if (gf_is_local_addr (dst_brickinfo->hostname)) {                          gf_log (this->name, GF_LOG_INFO,                                  "I AM THE DESTINATION HOST");                          ret = rb_kill_destination_brick (volinfo, dst_brickinfo); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index a772ad67a..cb91741e3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -49,7 +49,6 @@  #include <unistd.h>  #include <fnmatch.h>  #include <sys/statvfs.h> -#include <ifaddrs.h>  #ifdef GF_LINUX_HOST_OS  #include <mntent.h> @@ -137,189 +136,6 @@ glusterd_is_fuse_available ()                  return _gf_false;  } -gf_boolean_t -glusterd_is_loopback_localhost (const struct sockaddr *sa, char *hostname) -{ -        GF_ASSERT (sa); - -        gf_boolean_t is_local = _gf_false; -        const struct in_addr *addr4 = NULL; -        const struct in6_addr *addr6 = NULL; -        uint8_t      *ap   = NULL; -        struct in6_addr loopbackaddr6 = IN6ADDR_LOOPBACK_INIT; - -        switch (sa->sa_family) { -                case AF_INET: -                        addr4 = &(((struct sockaddr_in *)sa)->sin_addr); -                        ap = (uint8_t*)&addr4->s_addr; -                        if (ap[0] == 127) -                                is_local = _gf_true; -                        break; - -                case AF_INET6: -                        addr6 = &(((struct sockaddr_in6 *)sa)->sin6_addr); -                        if (memcmp (addr6, &loopbackaddr6, -                                    sizeof (loopbackaddr6)) == 0) -                                is_local = _gf_true; -                        break; - -                default: -                        if (hostname) -                                gf_log ("glusterd", GF_LOG_ERROR, -                                        "unknown address family %d for %s", -                                        sa->sa_family, hostname); -                        break; -        } - -        return is_local; -} - -char * -get_ip_from_addrinfo (struct addrinfo *addr, char **ip) -{ -        char buf[64]; -        void *in_addr = NULL; -        struct sockaddr_in *s4 = NULL; -        struct sockaddr_in6 *s6 = NULL; - -        switch (addr->ai_family) -        { -                case AF_INET: -                        s4 = (struct sockaddr_in *)addr->ai_addr; -                        in_addr = &s4->sin_addr; -                        break; - -                case AF_INET6: -                        s6 = (struct sockaddr_in6 *)addr->ai_addr; -                        in_addr = &s6->sin6_addr; -                        break; - -                default: -                        gf_log ("glusterd", GF_LOG_ERROR, "Invalid family"); -                        return NULL; -        } - -        if (!inet_ntop(addr->ai_family, in_addr, buf, sizeof(buf))) { -                gf_log ("glusterd", GF_LOG_ERROR, "String conversion failed"); -                return NULL; -        } - -        *ip = strdup (buf); -        return *ip; -} - -gf_boolean_t -glusterd_interface_search (char *ip) -{ -        int32_t         ret = -1; -        gf_boolean_t    found = _gf_false; -        struct          ifaddrs *ifaddr, *ifa; -        int             family; -        char            host[NI_MAXHOST]; -        xlator_t        *this = NULL; -        char            *pct = NULL; - -        this = THIS; - -        ret = getifaddrs (&ifaddr); - -        if (ret != 0) { -                gf_log (this->name, GF_LOG_ERROR, "getifaddrs() failed: %s\n", -                        gai_strerror(ret)); -                goto out; -        } - -        for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { -                if (!ifa->ifa_addr) { -                        /* -                         * This seemingly happens if an interface hasn't -                         * been bound to a particular protocol (seen with -                         * TUN devices). -                         */ -                        continue; -                } -                family = ifa->ifa_addr->sa_family; - -                if (family != AF_INET && family != AF_INET6) -                        continue; - -                ret = getnameinfo (ifa->ifa_addr, -                        (family == AF_INET) ? sizeof(struct sockaddr_in) : -                                              sizeof(struct sockaddr_in6), -                        host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); - -                if (ret != 0) { -                        gf_log (this->name, GF_LOG_ERROR, -                                "getnameinfo() failed: %s\n", -                                gai_strerror(ret)); -                        goto out; -                } - -                /* -                 * Sometimes the address comes back as addr%eth0 or -                 * similar.  Since % is an invalid character, we can -                 * strip it out with confidence that doing so won't -                 * harm anything. -                 */ -                pct = index(host,'%'); -                if (pct) { -                        *pct = '\0'; -                } - -                if (strncmp (ip, host, NI_MAXHOST) == 0) { -                        gf_log (this->name, GF_LOG_DEBUG, -                                "%s is local address at interface %s", -                                ip, ifa->ifa_name); -                        found = _gf_true; -                        goto out; -                } -        } -out: -        if(ifaddr) -                freeifaddrs (ifaddr); -        return found; -} - - -gf_boolean_t -glusterd_is_local_addr (char *hostname) -{ -        int32_t         ret = -1; -        struct          addrinfo *result = NULL; -        struct          addrinfo *res = NULL; -        gf_boolean_t    found = _gf_false; -        char            *ip = NULL; -        xlator_t        *this = NULL; - -        this = THIS; -        ret = getaddrinfo (hostname, NULL, NULL, &result); - -        if (ret != 0) { -                gf_log (this->name, GF_LOG_ERROR, "error in getaddrinfo: %s\n", -                        gai_strerror(ret)); -                goto out; -        } - -        for (res = result; res != NULL; res = res->ai_next) { -                gf_log (this->name, GF_LOG_DEBUG, "%s ", -                        get_ip_from_addrinfo (res, &ip)); - -                found = glusterd_is_loopback_localhost (res->ai_addr, hostname) -                        || glusterd_interface_search (ip); -                if (found) -                        goto out; -        } - -out: -        if (result) -                freeaddrinfo (result); - -        if (!found) -                gf_log (this->name, GF_LOG_DEBUG, "%s is not local", hostname); - -        return found; -} -  int32_t  glusterd_lock (uuid_t   uuid)  { @@ -4226,7 +4042,7 @@ glusterd_get_brickinfo (xlator_t *this, const char *brickname, int port,          list_for_each_entry (volinfo, &priv->volumes, vol_list) {                  list_for_each_entry (tmpbrkinfo, &volinfo->bricks,                                       brick_list) { -                        if (localhost && !glusterd_is_local_addr (tmpbrkinfo->hostname)) +                        if (localhost && !gf_is_local_addr (tmpbrkinfo->hostname))                                  continue;                          if (!strcmp(tmpbrkinfo->path, brickname) &&                              (tmpbrkinfo->port == port)) { @@ -4893,7 +4709,7 @@ glusterd_hostname_to_uuid (char *hostname, uuid_t uuid)          ret = glusterd_friend_find_by_hostname (hostname, &peerinfo);          if (ret) { -                if (glusterd_is_local_addr (hostname)) { +                if (gf_is_local_addr (hostname)) {                          uuid_copy (uuid, MY_UUID);                          ret = 0;                  } else { @@ -7510,54 +7326,6 @@ glusterd_copy_uuid_to_dict (uuid_t uuid, dict_t *dict, char *key)          return 0;  } -gf_boolean_t -glusterd_is_same_address (char *name1, char *name2) -{ -        struct addrinfo         *addr1 = NULL; -        struct addrinfo         *addr2 = NULL; -        struct addrinfo         *p = NULL; -        struct addrinfo         *q = NULL; -        gf_boolean_t            ret = _gf_false; -        int                     gai_err = 0; - -        gai_err = getaddrinfo(name1,NULL,NULL,&addr1); -        if (gai_err != 0) { -                gf_log (name1, GF_LOG_WARNING, -                        "error in getaddrinfo: %s\n", gai_strerror(gai_err)); -                goto out; -        } - -        gai_err = getaddrinfo(name2,NULL,NULL,&addr2); -        if (gai_err != 0) { -                gf_log (name2, GF_LOG_WARNING, -                        "error in getaddrinfo: %s\n", gai_strerror(gai_err)); -                goto out; -        } - -        for (p = addr1; p; p = p->ai_next) { -                for (q = addr2; q; q = q->ai_next) { -                        if (p->ai_addrlen != q->ai_addrlen) { -                                continue; -                        } -                        if (memcmp(p->ai_addr,q->ai_addr,p->ai_addrlen)) { -                                continue; -                        } -                        ret = _gf_true; -                        goto out; -                } -        } - -out: -        if (addr1) { -                freeaddrinfo(addr1); -        } -        if (addr2) { -                freeaddrinfo(addr2); -        } -        return ret; - -} -  int  _update_volume_op_versions (dict_t *this, char *key, data_t *value, void *data)  { diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index a63ea6a66..912b394b4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -151,9 +151,6 @@ glusterd_volume_brickinfo_get_by_brick (char *brick,                                          glusterd_volinfo_t *volinfo,                                          glusterd_brickinfo_t **brickinfo); -gf_boolean_t -glusterd_is_local_addr (char *hostname); -  int32_t  glusterd_build_volume_dict (dict_t **vols);  | 
