projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi...
[firefly-linux-kernel-4.4.55.git]
/
net
/
ipv6
/
raw.c
diff --git
a/net/ipv6/raw.c
b/net/ipv6/raw.c
index 330b5e7b7df6f705f1bcf2c66880b1e3de374df3..eedff8ccded507cc977bd073dbbf334b2624033b 100644
(file)
--- a/
net/ipv6/raw.c
+++ b/
net/ipv6/raw.c
@@
-263,7
+263,7
@@
static int rawv6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
if (addr_type != IPV6_ADDR_ANY) {
struct net_device *dev = NULL;
if (addr_type != IPV6_ADDR_ANY) {
struct net_device *dev = NULL;
- 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
if (addr_len >= sizeof(struct sockaddr_in6) &&
addr->sin6_scope_id) {
/* Override any existing binding, if another
@@
-498,9
+498,8
@@
static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
sin6->sin6_port = 0;
sin6->sin6_addr = ipv6_hdr(skb)->saddr;
sin6->sin6_flowinfo = 0;
sin6->sin6_port = 0;
sin6->sin6_addr = ipv6_hdr(skb)->saddr;
sin6->sin6_flowinfo = 0;
- sin6->sin6_scope_id = 0;
- if (ipv6_addr_type(&sin6->sin6_addr) & IPV6_ADDR_LINKLOCAL)
- sin6->sin6_scope_id = IP6CB(skb)->iif;
+ sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
+ IP6CB(skb)->iif);
}
sock_recv_ts_and_drops(msg, sk, skb);
}
sock_recv_ts_and_drops(msg, sk, skb);
@@
-802,7
+801,7
@@
static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
if (addr_len >= sizeof(struct sockaddr_in6) &&
sin6->sin6_scope_id &&
if (addr_len >= sizeof(struct sockaddr_in6) &&
sin6->sin6_scope_id &&
-
ipv6_addr_type(daddr)&IPV6_ADDR_LINKLOCAL
)
+
__ipv6_addr_needs_scope_id(__ipv6_addr_type(daddr))
)
fl6.flowi6_oif = sin6->sin6_scope_id;
} else {
if (sk->sk_state != TCP_ESTABLISHED)
fl6.flowi6_oif = sin6->sin6_scope_id;
} else {
if (sk->sk_state != TCP_ESTABLISHED)