|
@@ -1217,18 +1217,15 @@ void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt)
|
|
|
src = ip_hdr(skb)->saddr;
|
|
|
else {
|
|
|
struct fib_result res;
|
|
|
- struct flowi4 fl4;
|
|
|
- struct iphdr *iph;
|
|
|
-
|
|
|
- iph = ip_hdr(skb);
|
|
|
-
|
|
|
- memset(&fl4, 0, sizeof(fl4));
|
|
|
- fl4.daddr = iph->daddr;
|
|
|
- fl4.saddr = iph->saddr;
|
|
|
- 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;
|
|
|
+ struct iphdr *iph = ip_hdr(skb);
|
|
|
+ struct flowi4 fl4 = {
|
|
|
+ .daddr = iph->daddr,
|
|
|
+ .saddr = iph->saddr,
|
|
|
+ .flowi4_tos = RT_TOS(iph->tos),
|
|
|
+ .flowi4_oif = rt->dst.dev->ifindex,
|
|
|
+ .flowi4_iif = skb->dev->ifindex,
|
|
|
+ .flowi4_mark = skb->mark,
|
|
|
+ };
|
|
|
|
|
|
rcu_read_lock();
|
|
|
if (fib_lookup(dev_net(rt->dst.dev), &fl4, &res, 0) == 0)
|