Blame SOURCES/libiscsi-fix-connection-to-LUN-with-IPv6-address.patch

e91cda
From 68f9e40e4daf0a758132c520ab81fe12c13f40a7 Mon Sep 17 00:00:00 2001
e91cda
From: Paolo Bonzini <pbonzini@redhat.com>
e91cda
Date: Tue, 4 Dec 2018 17:38:39 +0000
e91cda
Subject: [PATCH] fix connection to LUN with IPv6 address
e91cda
MIME-Version: 1.0
e91cda
Content-Type: text/plain; charset=UTF-8
e91cda
Content-Transfer-Encoding: 8bit
e91cda
e91cda
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
e91cda
Message-id: <20181204173839.18385-1-pbonzini@redhat.com>
e91cda
Patchwork-id: 83252
e91cda
O-Subject: [RHEL-8.0 libiscsi PATCH] fix connection to LUN with IPv6 address
e91cda
Bugzilla: 1597942
e91cda
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
e91cda
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
e91cda
RH-Acked-by: Daniel P. Berrange <berrange@redhat.com>
e91cda
e91cda
From: Ronnie Sahlberg <ronniesahlberg@gmail.com>
e91cda
e91cda
Bugzilla: 1597942
e91cda
e91cda
Brew build: 19370266
e91cda
e91cda
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
e91cda
(cherry picked from commit 179f6b33d43f26cbca133ff03fa1bacc7e8a6120)
e91cda
e91cda
The patch has no commit message upstream, but it is pretty simple.
e91cda
e91cda
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
e91cda
---
e91cda
 lib/socket.c | 18 ++++++++++++++++--
e91cda
 1 file changed, 16 insertions(+), 2 deletions(-)
e91cda
e91cda
diff --git a/lib/socket.c b/lib/socket.c
e91cda
index 036b4f4..a335f33 100644
e91cda
--- a/lib/socket.c
e91cda
+++ b/lib/socket.c
e91cda
@@ -188,6 +188,20 @@ static int iscsi_tcp_connect(struct iscsi_context *iscsi, union socket_address *
e91cda
 
e91cda
 	int socksize;
e91cda
 
e91cda
+	switch (ai_family) {
e91cda
+	case AF_INET:
e91cda
+                socksize = sizeof(struct sockaddr_in);
e91cda
+                break;
e91cda
+	case AF_INET6:
e91cda
+                socksize = sizeof(struct sockaddr_in6);
e91cda
+                break;
e91cda
+        default:
e91cda
+		iscsi_set_error(iscsi, "Unknown address family :%d. "
e91cda
+				"Only IPv4/IPv6 supported so far.",
e91cda
+				ai_family);
e91cda
+                return -1;
e91cda
+        }
e91cda
+
e91cda
 	iscsi->fd = socket(ai_family, SOCK_STREAM, 0);
e91cda
 	if (iscsi->fd == -1) {
e91cda
 		iscsi_set_error(iscsi, "Failed to open iscsi socket. "
e91cda
@@ -246,8 +260,6 @@ static int iscsi_tcp_connect(struct iscsi_context *iscsi, union socket_address *
e91cda
 		ISCSI_LOG(iscsi,3,"TCP_NODELAY set to 1");
e91cda
 	}
e91cda
 
e91cda
-	socksize = sizeof(struct sockaddr_in);  // Work-around for now, need to fix it
e91cda
-
e91cda
 	if (connect(iscsi->fd, &sa->sa, socksize) != 0
e91cda
 		&& errno != EINPROGRESS) {
e91cda
 		iscsi_set_error(iscsi, "Connect failed with errno : "
e91cda
@@ -332,6 +344,7 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal,
e91cda
 	case AF_INET:
e91cda
 		socksize = sizeof(struct sockaddr_in);
e91cda
 		memcpy(&sa.sin, ai->ai_addr, socksize);
e91cda
+                sa.sin.sin_family = AF_INET;
e91cda
 		sa.sin.sin_port = htons(port);
e91cda
 #ifdef HAVE_SOCK_SIN_LEN
e91cda
 		sa.sin.sin_len = socksize;
e91cda
@@ -341,6 +354,7 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal,
e91cda
 	case AF_INET6:
e91cda
 		socksize = sizeof(struct sockaddr_in6);
e91cda
 		memcpy(&sa.sin6, ai->ai_addr, socksize);
e91cda
+                sa.sin6.sin6_family = AF_INET6;
e91cda
 		sa.sin6.sin6_port = htons(port);
e91cda
 #ifdef HAVE_SOCK_SIN_LEN
e91cda
 		sa.sin6.sin6_len = socksize;
e91cda
-- 
e91cda
1.8.3.1
e91cda