diff options
author | jm21264 <none@none> | 2008-06-06 14:51:45 -0700 |
---|---|---|
committer | jm21264 <none@none> | 2008-06-06 14:51:45 -0700 |
commit | a4685c4b5b26af6d9ed801ef63ebfa654b513b7e (patch) | |
tree | 92754000ce80bc4cdec43496873e3b7b90f3407e /usr/src | |
parent | dc03a6381d035262755e261eb83678f3b65e0882 (diff) | |
download | illumos-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.c | 10 | ||||
-rw-r--r-- | usr/src/cmd/iscsi/iscsitgtd/util_ifname.c | 30 |
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 |