]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - net/ipv4/ipip.c
ipv4: Make output route lookup return rtable directly.
[mirror_ubuntu-jammy-kernel.git] / net / ipv4 / ipip.c
index cd300aaee78f542630f40ab9a34f9b10af8eec9e..e1e17576baa6f428435a5201b7f574dfa11315f6 100644 (file)
@@ -463,17 +463,14 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
        {
                struct flowi fl = {
                        .oif = tunnel->parms.link,
-                       .nl_u = {
-                               .ip4_u = {
-                                       .daddr = dst,
-                                       .saddr = tiph->saddr,
-                                       .tos = RT_TOS(tos)
-                               }
-                       },
+                       .fl4_dst = dst,
+                       .fl4_src= tiph->saddr,
+                       .fl4_tos = RT_TOS(tos),
                        .proto = IPPROTO_IPIP
                };
 
-               if (ip_route_output_key(dev_net(dev), &rt, &fl)) {
+               rt = ip_route_output_key(dev_net(dev), &fl);
+               if (IS_ERR(rt)) {
                        dev->stats.tx_carrier_errors++;
                        goto tx_error_icmp;
                }
@@ -589,18 +586,14 @@ static void ipip_tunnel_bind_dev(struct net_device *dev)
        if (iph->daddr) {
                struct flowi fl = {
                        .oif = tunnel->parms.link,
-                       .nl_u = {
-                               .ip4_u = {
-                                       .daddr = iph->daddr,
-                                       .saddr = iph->saddr,
-                                       .tos = RT_TOS(iph->tos)
-                               }
-                       },
+                       .fl4_dst = iph->daddr,
+                       .fl4_src = iph->saddr,
+                       .fl4_tos = RT_TOS(iph->tos),
                        .proto = IPPROTO_IPIP
                };
-               struct rtable *rt;
+               struct rtable *rt = ip_route_output_key(dev_net(dev), &fl);
 
-               if (!ip_route_output_key(dev_net(dev), &rt, &fl)) {
+               if (!IS_ERR(rt)) {
                        tdev = rt->dst.dev;
                        ip_rt_put(rt);
                }
@@ -921,3 +914,4 @@ static void __exit ipip_fini(void)
 module_init(ipip_init);
 module_exit(ipip_fini);
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("tunl0");