[Pkg-ofed-commits] [libfabric] 52/123: prov/sockets: Removed common code and added a function to get src_addr from hostname

Ana Beatriz Guerrero López ana at moszumanska.debian.org
Sat Oct 22 12:28:29 UTC 2016


This is an automated email from the git hooks/post-receive script.

ana pushed a commit to annotated tag v1.1.1
in repository libfabric.

commit 71d6b752a4079bf9945b773be8658b956b48afec
Author: shantonu <shantonu.hossain at intel.com>
Date:   Tue Aug 18 10:57:34 2015 -0700

    prov/sockets: Removed common code and added a function to get src_addr from hostname
    
    Signed-off-by: Shantonu Hossain <shantonu.hossain at intel.com>
---
 prov/sockets/src/sock.h        |  1 +
 prov/sockets/src/sock_conn.c   | 19 ++-----------------
 prov/sockets/src/sock_ep.c     | 41 +++++++++++++++++++++++------------------
 prov/sockets/src/sock_ep_msg.c | 21 +++------------------
 prov/sockets/src/sock_fabric.c | 22 ++--------------------
 5 files changed, 31 insertions(+), 73 deletions(-)

diff --git a/prov/sockets/src/sock.h b/prov/sockets/src/sock.h
index a45bbb2..324b4c7 100644
--- a/prov/sockets/src/sock.h
+++ b/prov/sockets/src/sock.h
@@ -896,6 +896,7 @@ int sock_msg_verify_ep_attr(struct fi_ep_attr *ep_attr, struct fi_tx_attr *tx_at
 			    struct fi_rx_attr *rx_attr);
 int sock_get_src_addr(struct sockaddr_in *dest_addr,
 		      struct sockaddr_in *src_addr);
+int sock_get_src_addr_from_hostname(struct sockaddr_in *src_addr, const char *service);
 
 struct fi_info *sock_fi_info(enum fi_ep_type ep_type, 
 			     struct fi_info *hints, void *src_addr, void *dest_addr);
diff --git a/prov/sockets/src/sock_conn.c b/prov/sockets/src/sock_conn.c
index 52c8502..2c8a8a2 100644
--- a/prov/sockets/src/sock_conn.c
+++ b/prov/sockets/src/sock_conn.c
@@ -431,8 +431,6 @@ int sock_conn_listen(struct sock_ep *ep)
 	struct sockaddr_in addr;
 	struct sock_conn_listener *listener = &ep->listener;
 	struct sock_domain *domain = ep->domain;	
-	struct addrinfo ai, *rai = NULL;
-	char hostname[HOST_NAME_MAX] = {0};
 	char service[NI_MAXSERV] = {0};
 
 	memset(&hints, 0, sizeof(hints));
@@ -490,23 +488,10 @@ int sock_conn_listen(struct sock_ep *ep)
 	}
 
 	if (ep->src_addr->sin_addr.s_addr == 0) {
-		memset(&ai, 0, sizeof(ai));
-		ai.ai_family = AF_INET;
-		ai.ai_socktype = SOCK_STREAM;
-
 		sprintf(service, "%s", listener->service);
-		if (gethostname(hostname, sizeof hostname) != 0) {
-			SOCK_LOG_DBG("gethostname failed!\n");
+		ret = sock_get_src_addr_from_hostname(ep->src_addr, service);
+		if (ret)
 			goto err;
-		}
-		ret = getaddrinfo(hostname, service, &ai, &rai);
-		if (ret) {
-			SOCK_LOG_DBG("getaddrinfo failed!\n");
-			goto err;
-		}
-		memcpy(ep->src_addr, (struct sockaddr_in *)rai->ai_addr,
-		       sizeof *ep->src_addr);
-		freeaddrinfo(rai);
 	}
 
 	if (listen(listen_fd, SOCK_CM_DEF_BACKLOG)) {
diff --git a/prov/sockets/src/sock_ep.c b/prov/sockets/src/sock_ep.c
index 549e9e4..89b2bad 100644
--- a/prov/sockets/src/sock_ep.c
+++ b/prov/sockets/src/sock_ep.c
@@ -1342,12 +1342,33 @@ struct fi_info *sock_fi_info(enum fi_ep_type ep_type, struct fi_info *hints,
 	return info;
 }
 
-static int sock_ep_assign_src_addr(struct sock_ep *sock_ep, struct fi_info *info)
+int sock_get_src_addr_from_hostname(struct sockaddr_in *src_addr, const char *service)
 {
 	int ret;
 	struct addrinfo ai, *rai = NULL;
 	char hostname[HOST_NAME_MAX];
 
+	memset(&ai, 0, sizeof(ai));
+	ai.ai_family = AF_INET;
+	ai.ai_socktype = SOCK_STREAM;
+	
+	if (gethostname(hostname, sizeof hostname) != 0) {
+		SOCK_LOG_DBG("gethostname failed!\n");
+		return -FI_EINVAL;
+	}
+	ret = getaddrinfo(hostname, service, &ai, &rai);
+	if (ret) {
+		SOCK_LOG_DBG("getaddrinfo failed!\n");
+		return -FI_EINVAL;
+	}
+	memcpy(src_addr, (struct sockaddr_in *)rai->ai_addr,
+		sizeof *src_addr);
+	freeaddrinfo(rai);
+	return 0;
+}
+
+static int sock_ep_assign_src_addr(struct sock_ep *sock_ep, struct fi_info *info)
+{
 	sock_ep->src_addr = calloc(1, sizeof(struct sockaddr_in));
 	if (!sock_ep->src_addr)
 		return -FI_ENOMEM;
@@ -1355,24 +1376,8 @@ static int sock_ep_assign_src_addr(struct sock_ep *sock_ep, struct fi_info *info
 	if (info && info->dest_addr) {
 		return sock_get_src_addr(info->dest_addr, sock_ep->src_addr);
 	} else {
-		memset(&ai, 0, sizeof(ai));
-		ai.ai_family = AF_INET;
-		ai.ai_socktype = SOCK_STREAM;
-		
-		if (gethostname(hostname, sizeof hostname) != 0) {
-			SOCK_LOG_DBG("gethostname failed!\n");
-			return -FI_EINVAL;
-		}
-		ret = getaddrinfo(hostname, NULL, &ai, &rai);
-		if (ret) {
-			SOCK_LOG_DBG("getaddrinfo failed!\n");
-			return -FI_EINVAL;
-		}
-		memcpy(sock_ep->src_addr, (struct sockaddr_in *)rai->ai_addr,
-			sizeof *sock_ep->src_addr);
-		freeaddrinfo(rai);
+		return sock_get_src_addr_from_hostname(sock_ep->src_addr, NULL);
 	}
-	return 0;
 }
 
 int sock_alloc_endpoint(struct fid_domain *domain, struct fi_info *info,
diff --git a/prov/sockets/src/sock_ep_msg.c b/prov/sockets/src/sock_ep_msg.c
index f96faa6..edb57c6 100644
--- a/prov/sockets/src/sock_ep_msg.c
+++ b/prov/sockets/src/sock_ep_msg.c
@@ -273,7 +273,6 @@ static int sock_pep_create_listener(struct sock_pep *pep)
 	struct addrinfo hints;
 	char sa_ip[INET_ADDRSTRLEN] = {0};
 	char sa_port[NI_MAXSERV] = {0};
-	char hostname[HOST_NAME_MAX] = {0};
 
 	pep->cm.do_listen = 1;
 
@@ -326,24 +325,10 @@ static int sock_pep_create_listener(struct sock_pep *pep)
 	}
 
 	if (pep->src_addr.sin_addr.s_addr == 0) {
-		memset(&hints, 0, sizeof(hints));
-		hints.ai_family = AF_INET;
-		hints.ai_socktype = SOCK_STREAM;
-
-		if (gethostname(hostname, sizeof hostname) != 0) {
-			SOCK_LOG_DBG("gethostname failed!\n");
-			return -FI_EINVAL;
-		}
-		ret = getaddrinfo(hostname, sa_port, &hints, &s_res);
-		if (ret) {
-			SOCK_LOG_DBG("getaddrinfo failed!\n");
-			return -FI_EINVAL;
-		}
-		memcpy(&pep->src_addr, (struct sockaddr_in *)s_res->ai_addr,
-		       sizeof pep->src_addr);
-		freeaddrinfo(s_res);
+		ret = sock_get_src_addr_from_hostname(&pep->src_addr, sa_port);
+		if (ret)
+			return -FI_EINVAL;		
 	}
-
 	
 	SOCK_LOG_DBG("Listener thread bound to %s:%d\n",
 		      sa_ip, ntohs(pep->src_addr.sin_port));
diff --git a/prov/sockets/src/sock_fabric.c b/prov/sockets/src/sock_fabric.c
index f3c594d..1ba9ced 100644
--- a/prov/sockets/src/sock_fabric.c
+++ b/prov/sockets/src/sock_fabric.c
@@ -393,8 +393,6 @@ int sock_get_src_addr(struct sockaddr_in *dest_addr,
 {
 	int sock, ret;
 	socklen_t len;
-	struct addrinfo ai, *rai = NULL;
-	char hostname[HOST_NAME_MAX];
 
 	sock = socket(AF_INET, SOCK_DGRAM, 0);
 	if (sock < 0)
@@ -404,24 +402,8 @@ int sock_get_src_addr(struct sockaddr_in *dest_addr,
 	ret = connect(sock, (struct sockaddr*)dest_addr, len);
 	if (ret) {
 		SOCK_LOG_DBG("Failed to connect udp socket\n");
-
-		if (gethostname(hostname, sizeof hostname) != 0) {
-			SOCK_LOG_DBG("gethostname failed!\n");
-			ret = -FI_EINVAL;
-			goto out;
-		}
-
-		ret = getaddrinfo(hostname, NULL, &ai, &rai);
-		if (ret) {
-			SOCK_LOG_DBG("getaddrinfo failed!\n");
-			ret = -FI_EINVAL;
-			goto out;
-		}
-
-		memcpy(src_addr, (struct sockaddr_in *)rai->ai_addr,
-		       sizeof *src_addr);
-		freeaddrinfo(rai);
-		ret = 0;
+		
+		ret = sock_get_src_addr_from_hostname(src_addr, NULL);
 		goto out;
 	}
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ofed/libfabric.git



More information about the Pkg-ofed-commits mailing list