diff options
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r-- | net/ipv6/af_inet6.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 6b793bfc0e10..f56277f15903 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -323,7 +323,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
323 | struct net_device *dev = NULL; | 323 | struct net_device *dev = NULL; |
324 | 324 | ||
325 | rcu_read_lock(); | 325 | rcu_read_lock(); |
326 | if (addr_type & IPV6_ADDR_LINKLOCAL) { | 326 | if (__ipv6_addr_needs_scope_id(addr_type)) { |
327 | if (addr_len >= sizeof(struct sockaddr_in6) && | 327 | if (addr_len >= sizeof(struct sockaddr_in6) && |
328 | addr->sin6_scope_id) { | 328 | addr->sin6_scope_id) { |
329 | /* Override any existing binding, if another one | 329 | /* Override any existing binding, if another one |
@@ -471,8 +471,8 @@ int inet6_getname(struct socket *sock, struct sockaddr *uaddr, | |||
471 | 471 | ||
472 | sin->sin6_port = inet->inet_sport; | 472 | sin->sin6_port = inet->inet_sport; |
473 | } | 473 | } |
474 | if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL) | 474 | sin->sin6_scope_id = ipv6_iface_scope_id(&sin->sin6_addr, |
475 | sin->sin6_scope_id = sk->sk_bound_dev_if; | 475 | sk->sk_bound_dev_if); |
476 | *uaddr_len = sizeof(*sin); | 476 | *uaddr_len = sizeof(*sin); |
477 | return 0; | 477 | return 0; |
478 | } | 478 | } |