summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorjm21264 <none@none>2008-06-06 14:51:45 -0700
committerjm21264 <none@none>2008-06-06 14:51:45 -0700
commita4685c4b5b26af6d9ed801ef63ebfa654b513b7e (patch)
tree92754000ce80bc4cdec43496873e3b7b90f3407e /usr/src
parentdc03a6381d035262755e261eb83678f3b65e0882 (diff)
downloadillumos-joyent-a4685c4b5b26af6d9ed801ef63ebfa654b513b7e.tar.gz
6669557 sendtarget discovery method fails if IPv6 routing is enabled
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/iscsi/iscsitgtd/util.c10
-rw-r--r--usr/src/cmd/iscsi/iscsitgtd/util_ifname.c30
2 files changed, 16 insertions, 24 deletions
diff --git a/usr/src/cmd/iscsi/iscsitgtd/util.c b/usr/src/cmd/iscsi/iscsitgtd/util.c
index 1bc5ceac7d..bf90beca8e 100644
--- a/usr/src/cmd/iscsi/iscsitgtd/util.c
+++ b/usr/src/cmd/iscsi/iscsitgtd/util.c
@@ -271,17 +271,17 @@ add_target_address(iscsi_conn_t *c, char **text, int *text_length,
if (convert_local_tpgt(text, text_length, tpgt->x_value) ==
False) {
if (c->c_target_sockaddr.ss_family == AF_INET) {
- /*CSTYLED*/
- sp4 = (struct sockaddr_in *)&c->c_target_sockaddr;
+ sp4 = (struct sockaddr_in *)
+ &c->c_target_sockaddr;
(void) snprintf(buf, sizeof (buf), "%s,%s",
inet_ntop(sp4->sin_family,
(void *)&sp4->sin_addr,
net_buf, sizeof (net_buf)),
tpgt->x_value);
} else {
- /*CSTYLED*/
- sp6 = (struct sockaddr_in6 *)&c->c_target_sockaddr;
- (void) snprintf(buf, sizeof (buf), "%s,%s",
+ sp6 = (struct sockaddr_in6 *)
+ &c->c_target_sockaddr;
+ (void) snprintf(buf, sizeof (buf), "[%s],%s",
inet_ntop(sp6->sin6_family,
(void *)&sp6->sin6_addr,
net_buf, sizeof (net_buf)),
diff --git a/usr/src/cmd/iscsi/iscsitgtd/util_ifname.c b/usr/src/cmd/iscsi/iscsitgtd/util_ifname.c
index d1c3b15d19..0bad534a16 100644
--- a/usr/src/cmd/iscsi/iscsitgtd/util_ifname.c
+++ b/usr/src/cmd/iscsi/iscsitgtd/util_ifname.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -128,17 +128,11 @@ if_find_mac(target_queue_t *mgmt)
void
if_target_address(char **text, int *text_length, struct sockaddr *sp)
{
- struct lifreq *lp,
- *first;
- int n,
- i,
- s;
- struct sockaddr_in *sin4_cur,
- *sin4_pos;
- struct sockaddr_in6 *sin6_cur,
- *sin6_pos;
- char ta[80],
- ip_buf[INET6_ADDRSTRLEN];
+ struct lifreq *lp, *first;
+ int n, i, s;
+ struct sockaddr_in *sin4_cur, *sin4_pos;
+ struct sockaddr_in6 *sin6_cur, *sin6_pos;
+ char ta[80], ip_buf[INET6_ADDRSTRLEN];
int fromlen;
if (sp->sa_family == AF_INET) {
@@ -171,9 +165,6 @@ if_target_address(char **text, int *text_length, struct sockaddr *sp)
first = if_setup(&n);
for (lp = first, i = 0; i < n; i++, lp++) {
- if (ioctl(s, SIOCGLIFADDR, lp) < 0)
- continue;
-
if (sp->sa_family != lp->lifr_addr.ss_family)
continue;
@@ -233,13 +224,14 @@ if_target_address(char **text, int *text_length, struct sockaddr *sp)
continue;
if (bcmp(sp, &lp->lifr_addr, fromlen) != 0) {
- dump_addr_to_ascii((struct sockaddr *)&lp->lifr_addr,
- ip_buf, sizeof (ip_buf));
+ struct sockaddr *sp2;
+ sp2 = (struct sockaddr *)&lp->lifr_addr;
+ dump_addr_to_ascii(sp2, ip_buf, sizeof (ip_buf));
- if (sp->sa_family == AF_INET) {
+ if (sp2->sa_family == AF_INET) {
(void) snprintf(ta, sizeof (ta), "%s,1",
ip_buf);
- } else if (sp->sa_family == AF_INET6) {
+ } else if (sp2->sa_family == AF_INET6) {
(void) snprintf(ta, sizeof (ta), "[%s],1",
ip_buf);
} else