Loading net/ipv4/route.c +9 −12 Original line number Original line Diff line number Diff line Loading @@ -1217,18 +1217,15 @@ void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt) src = ip_hdr(skb)->saddr; src = ip_hdr(skb)->saddr; else { else { struct fib_result res; struct fib_result res; struct flowi4 fl4; struct iphdr *iph = ip_hdr(skb); struct iphdr *iph; struct flowi4 fl4 = { .daddr = iph->daddr, iph = ip_hdr(skb); .saddr = iph->saddr, .flowi4_tos = RT_TOS(iph->tos), memset(&fl4, 0, sizeof(fl4)); .flowi4_oif = rt->dst.dev->ifindex, fl4.daddr = iph->daddr; .flowi4_iif = skb->dev->ifindex, fl4.saddr = iph->saddr; .flowi4_mark = skb->mark, fl4.flowi4_tos = RT_TOS(iph->tos); }; fl4.flowi4_oif = rt->dst.dev->ifindex; fl4.flowi4_iif = skb->dev->ifindex; fl4.flowi4_mark = skb->mark; rcu_read_lock(); rcu_read_lock(); if (fib_lookup(dev_net(rt->dst.dev), &fl4, &res, 0) == 0) if (fib_lookup(dev_net(rt->dst.dev), &fl4, &res, 0) == 0) Loading Loading
net/ipv4/route.c +9 −12 Original line number Original line Diff line number Diff line Loading @@ -1217,18 +1217,15 @@ void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt) src = ip_hdr(skb)->saddr; src = ip_hdr(skb)->saddr; else { else { struct fib_result res; struct fib_result res; struct flowi4 fl4; struct iphdr *iph = ip_hdr(skb); struct iphdr *iph; struct flowi4 fl4 = { .daddr = iph->daddr, iph = ip_hdr(skb); .saddr = iph->saddr, .flowi4_tos = RT_TOS(iph->tos), memset(&fl4, 0, sizeof(fl4)); .flowi4_oif = rt->dst.dev->ifindex, fl4.daddr = iph->daddr; .flowi4_iif = skb->dev->ifindex, fl4.saddr = iph->saddr; .flowi4_mark = skb->mark, fl4.flowi4_tos = RT_TOS(iph->tos); }; fl4.flowi4_oif = rt->dst.dev->ifindex; fl4.flowi4_iif = skb->dev->ifindex; fl4.flowi4_mark = skb->mark; rcu_read_lock(); rcu_read_lock(); if (fib_lookup(dev_net(rt->dst.dev), &fl4, &res, 0) == 0) if (fib_lookup(dev_net(rt->dst.dev), &fl4, &res, 0) == 0) Loading