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)