On 4/23/18 11:57 PM, Sukumar Gopalakrishnan wrote:
> Get master device address from (skb->dev) and  pass master  to socket
> lookup up function for Ipv6 Linklocal/Multicast address.
> 
> ipv6_raw_deliver()
> {
> int mdif;
> ..
> ..
>         mdif = (((nexthdr == IPPROTO_PIM || nexthdr == 89 /* IPPROTO_OSPF */ 
> ||
>                 nexthdr == IPPROTO_ICMPV6 || nexthdr == 112 /*IPPROTO_VRRP*/) 
> &&
>                 (ipv6_addr_type(daddr) &
>                 (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL))) ?
>                 l3mdev_master_ifindex_rcu(skb->dev) : inet6_iif(skb));
> 
> 
>         sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, mdif,
> inet6_sdif(skb));
> 

Packets destined to a linklocal and mcast address stay bound to the
actual ingress device as that is their scope.

Reply via email to