]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/ipv4/icmp.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / ipv4 / icmp.c
index e5d1a44bcbdf04b851d441ea5ebd8fbe44514704..4aa1b7f01ea0c18a5718061fe31eee71f4de883f 100644 (file)
@@ -386,10 +386,9 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
                        daddr = icmp_param->replyopts.faddr;
        }
        {
-               struct flowi fl = { .nl_u = { .ip4_u =
-                                             { .daddr = daddr,
-                                               .saddr = rt->rt_spec_dst,
-                                               .tos = RT_TOS(ip_hdr(skb)->tos) } },
+               struct flowi fl = { .fl4_dst= daddr,
+                                   .fl4_src = rt->rt_spec_dst,
+                                   .fl4_tos = RT_TOS(ip_hdr(skb)->tos),
                                    .proto = IPPROTO_ICMP };
                security_skb_classify_flow(skb, &fl);
                if (ip_route_output_key(net, &rt, &fl))
@@ -506,8 +505,8 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
                struct net_device *dev = NULL;
 
                rcu_read_lock();
-               if (rt->fl.iif &&
-                       net->ipv4.sysctl_icmp_errors_use_inbound_ifaddr)
+               if (rt_is_input_route(rt) &&
+                   net->ipv4.sysctl_icmp_errors_use_inbound_ifaddr)
                        dev = dev_get_by_index_rcu(net, rt->fl.iif);
 
                if (dev)
@@ -542,22 +541,13 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
 
        {
                struct flowi fl = {
-                       .nl_u = {
-                               .ip4_u = {
-                                       .daddr = icmp_param.replyopts.srr ?
-                                               icmp_param.replyopts.faddr :
-                                               iph->saddr,
-                                       .saddr = saddr,
-                                       .tos = RT_TOS(tos)
-                               }
-                       },
+                       .fl4_dst = icmp_param.replyopts.srr ?
+                                  icmp_param.replyopts.faddr : iph->saddr,
+                       .fl4_src = saddr,
+                       .fl4_tos = RT_TOS(tos),
                        .proto = IPPROTO_ICMP,
-                       .uli_u = {
-                               .icmpt = {
-                                       .type = type,
-                                       .code = code
-                               }
-                       }
+                       .fl_icmp_type = type,
+                       .fl_icmp_code = code,
                };
                int err;
                struct rtable *rt2;