|
@@ -280,7 +280,6 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
|
|
|
struct in_device *in_dev;
|
|
|
struct fib_result res;
|
|
|
struct rtable *rt;
|
|
|
- struct flowi4 fl4;
|
|
|
struct net *net;
|
|
|
int scope;
|
|
|
|
|
@@ -296,14 +295,13 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
|
|
|
|
|
|
scope = RT_SCOPE_UNIVERSE;
|
|
|
if (!ipv4_is_zeronet(ip_hdr(skb)->saddr)) {
|
|
|
- fl4.flowi4_oif = 0;
|
|
|
- fl4.flowi4_iif = LOOPBACK_IFINDEX;
|
|
|
- fl4.daddr = ip_hdr(skb)->saddr;
|
|
|
- fl4.saddr = 0;
|
|
|
- fl4.flowi4_tos = RT_TOS(ip_hdr(skb)->tos);
|
|
|
- fl4.flowi4_scope = scope;
|
|
|
- fl4.flowi4_mark = IN_DEV_SRC_VMARK(in_dev) ? skb->mark : 0;
|
|
|
- fl4.flowi4_tun_key.tun_id = 0;
|
|
|
+ struct flowi4 fl4 = {
|
|
|
+ .flowi4_iif = LOOPBACK_IFINDEX,
|
|
|
+ .daddr = ip_hdr(skb)->saddr,
|
|
|
+ .flowi4_tos = RT_TOS(ip_hdr(skb)->tos),
|
|
|
+ .flowi4_scope = scope,
|
|
|
+ .flowi4_mark = IN_DEV_SRC_VMARK(in_dev) ? skb->mark : 0,
|
|
|
+ };
|
|
|
if (!fib_lookup(net, &fl4, &res, 0))
|
|
|
return FIB_RES_PREFSRC(net, res);
|
|
|
} else {
|