]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ipv4: Use inet_sk_init_flowi4() in inet_csk_rebuild_route().
authorGuillaume Nault <gnault@redhat.com>
Mon, 16 Dec 2024 17:21:48 +0000 (18:21 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 20 Dec 2024 21:50:09 +0000 (13:50 -0800)
Use inet_sk_init_flowi4() to automatically initialise the flowi4
structure in inet_csk_rebuild_route() instead of passing parameters
manually to ip_route_output_ports().

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Link: https://patch.msgid.link/b270931636effa1095508e0f0a3e8c3a0e6d357f.1734357769.git.gnault@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/inet_connection_sock.c

index 6872b5aff73e5483b7e7613f96eabab351f6c511..e4decfb270fa1f9c81da76566c056dd5ce5b0447 100644 (file)
@@ -1561,20 +1561,13 @@ EXPORT_SYMBOL_GPL(inet_csk_addr2sockaddr);
 static struct dst_entry *inet_csk_rebuild_route(struct sock *sk, struct flowi *fl)
 {
        const struct inet_sock *inet = inet_sk(sk);
-       const struct ip_options_rcu *inet_opt;
-       __be32 daddr = inet->inet_daddr;
        struct flowi4 *fl4;
        struct rtable *rt;
 
        rcu_read_lock();
-       inet_opt = rcu_dereference(inet->inet_opt);
-       if (inet_opt && inet_opt->opt.srr)
-               daddr = inet_opt->opt.faddr;
        fl4 = &fl->u.ip4;
-       rt = ip_route_output_ports(sock_net(sk), fl4, sk, daddr,
-                                  inet->inet_saddr, inet->inet_dport,
-                                  inet->inet_sport, sk->sk_protocol,
-                                  ip_sock_rt_tos(sk), sk->sk_bound_dev_if);
+       inet_sk_init_flowi4(inet, fl4);
+       rt = ip_route_output_flow(sock_net(sk), fl4, sk);
        if (IS_ERR(rt))
                rt = NULL;
        if (rt)