summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCody Peter Mello <cody.mello@joyent.com>2015-12-04 18:42:41 +0000
committerCody Peter Mello <cody.mello@joyent.com>2015-12-18 18:36:35 +0000
commita92bddf8b7b9c051ae078b115e9dbaa94b89a5dd (patch)
tree6c4299dd3a3d2adf578965e57fa01d0c92bfc066
parentbc334109e1dbbb71d75cfe8211fa07b35942971a (diff)
downloadillumos-joyent-a92bddf8b7b9c051ae078b115e9dbaa94b89a5dd.tar.gz
OS-5004 SIOCGLIFADDR doesn't set sin6_scope_id for link-local IPv6 addresses
Reviewed by: Dan McDonald <danmcd@omniti.com>
-rw-r--r--usr/src/uts/common/inet/ip/ip_if.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/usr/src/uts/common/inet/ip/ip_if.c b/usr/src/uts/common/inet/ip/ip_if.c
index 16a9b7e349..9a2da47620 100644
--- a/usr/src/uts/common/inet/ip/ip_if.c
+++ b/usr/src/uts/common/inet/ip/ip_if.c
@@ -9948,6 +9948,10 @@ ip_sioctl_get_addr(ipif_t *ipif, sin_t *sin, queue_t *q, mblk_t *mp,
*sin6 = sin6_null;
sin6->sin6_family = AF_INET6;
sin6->sin6_addr = ipif->ipif_v6lcl_addr;
+ if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
+ sin6->sin6_scope_id =
+ ipif->ipif_ill->ill_phyint->phyint_ifindex;
+ }
ASSERT(ipip->ipi_cmd_type == LIF_CMD);
lifr->lifr_addrlen =
ip_mask_to_plen_v6(&ipif->ipif_v6net_mask);