]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/af_inet6.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[~andy/linux] / net / ipv6 / af_inet6.c
index 6b793bfc0e10b4fc42a5d7887e613d00e545ee70..ab5c7ad482cded367c1180a3a3761615bc2a4d54 100644 (file)
@@ -49,7 +49,6 @@
 #include <net/udp.h>
 #include <net/udplite.h>
 #include <net/tcp.h>
-#include <net/ipip.h>
 #include <net/protocol.h>
 #include <net/inet_common.h>
 #include <net/route.h>
@@ -323,7 +322,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
                        struct net_device *dev = NULL;
 
                        rcu_read_lock();
-                       if (addr_type & IPV6_ADDR_LINKLOCAL) {
+                       if (__ipv6_addr_needs_scope_id(addr_type)) {
                                if (addr_len >= sizeof(struct sockaddr_in6) &&
                                    addr->sin6_scope_id) {
                                        /* Override any existing binding, if another one
@@ -471,8 +470,8 @@ int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
 
                sin->sin6_port = inet->inet_sport;
        }
-       if (ipv6_addr_type(&sin->sin6_addr) & IPV6_ADDR_LINKLOCAL)
-               sin->sin6_scope_id = sk->sk_bound_dev_if;
+       sin->sin6_scope_id = ipv6_iface_scope_id(&sin->sin6_addr,
+                                                sk->sk_bound_dev_if);
        *uaddr_len = sizeof(*sin);
        return 0;
 }