ipv6: report sin6_scope_id if sockopt RECVORIGDSTADDR is set
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Fri, 8 Mar 2013 02:07:26 +0000 (02:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Mar 2013 17:29:23 +0000 (12:29 -0500)
v4:
a) unchanged

Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/datagram.c

index b55e70add93ccee04419a6ad650ea33463e04cba..4b56cbbc789062d89c5a708386a03e5a8ded8bc6 100644 (file)
@@ -594,7 +594,9 @@ int ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg,
                        sin6.sin6_addr = ipv6_hdr(skb)->daddr;
                        sin6.sin6_port = ports[1];
                        sin6.sin6_flowinfo = 0;
-                       sin6.sin6_scope_id = 0;
+                       sin6.sin6_scope_id =
+                               ipv6_iface_scope_id(&ipv6_hdr(skb)->daddr,
+                                                   opt->iif);
 
                        put_cmsg(msg, SOL_IPV6, IPV6_ORIGDSTADDR, sizeof(sin6), &sin6);
                }