|
@@ -1007,16 +1007,24 @@ int iscsit_accept_np(struct iscsi_np *np, struct iscsi_conn *conn)
|
|
|
rc = conn->sock->ops->getname(conn->sock,
|
|
|
(struct sockaddr *)&sock_in6, &err, 1);
|
|
|
if (!rc) {
|
|
|
- snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
|
|
|
- &sock_in6.sin6_addr.in6_u);
|
|
|
+ if (!ipv6_addr_v4mapped(&sock_in6.sin6_addr))
|
|
|
+ snprintf(conn->login_ip, sizeof(conn->login_ip), "[%pI6c]",
|
|
|
+ &sock_in6.sin6_addr.in6_u);
|
|
|
+ else
|
|
|
+ snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI4",
|
|
|
+ &sock_in6.sin6_addr.s6_addr32[3]);
|
|
|
conn->login_port = ntohs(sock_in6.sin6_port);
|
|
|
}
|
|
|
|
|
|
rc = conn->sock->ops->getname(conn->sock,
|
|
|
(struct sockaddr *)&sock_in6, &err, 0);
|
|
|
if (!rc) {
|
|
|
- snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI6c",
|
|
|
- &sock_in6.sin6_addr.in6_u);
|
|
|
+ if (!ipv6_addr_v4mapped(&sock_in6.sin6_addr))
|
|
|
+ snprintf(conn->local_ip, sizeof(conn->local_ip), "[%pI6c]",
|
|
|
+ &sock_in6.sin6_addr.in6_u);
|
|
|
+ else
|
|
|
+ snprintf(conn->local_ip, sizeof(conn->local_ip), "%pI4",
|
|
|
+ &sock_in6.sin6_addr.s6_addr32[3]);
|
|
|
conn->local_port = ntohs(sock_in6.sin6_port);
|
|
|
}
|
|
|
} else {
|