Commit 5489f333 authored by Eric Dumazet's avatar Eric Dumazet Committed by Paolo Abeni
Browse files

ipv6: make ipv6_pinfo.daddr_cache a boolean



ipv6_pinfo.daddr_cache is either NULL or &sk->sk_v6_daddr

We do not need 8 bytes, a boolean is enough.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250916160951.541279-3-edumazet@google.com


Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 3fbb2a6f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ struct ipv6_pinfo {
#ifdef CONFIG_IPV6_SUBTREES
	bool			saddr_cache;
#endif
	const struct in6_addr		*daddr_cache;
	bool			daddr_cache;

	__be32			flow_label;
	__u32			frag_size;
+2 −2
Original line number Diff line number Diff line
@@ -229,14 +229,14 @@ static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb)
 *	Store a destination cache entry in a socket
 */
static inline void ip6_dst_store(struct sock *sk, struct dst_entry *dst,
				 const struct in6_addr *daddr,
				 bool daddr_set,
				 bool saddr_set)
{
	struct ipv6_pinfo *np = inet6_sk(sk);

	np->dst_cookie = rt6_get_cookie(dst_rt6_info(dst));
	sk_setup_caps(sk, dst);
	np->daddr_cache = daddr;
	np->daddr_cache = daddr_set;
#ifdef CONFIG_IPV6_SUBTREES
	np->saddr_cache = saddr_set;
#endif
+1 −1
Original line number Diff line number Diff line
@@ -857,7 +857,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
			return PTR_ERR(dst);
		}

		ip6_dst_store(sk, dst, NULL, false);
		ip6_dst_store(sk, dst, false, false);
	}

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ static struct dst_entry *inet6_csk_route_socket(struct sock *sk,
		dst = ip6_dst_lookup_flow(sock_net(sk), sk, fl6, final_p);

		if (!IS_ERR(dst))
			ip6_dst_store(sk, dst, NULL, false);
			ip6_dst_store(sk, dst, false, false);
	}
	return dst;
}
+2 −1
Original line number Diff line number Diff line
@@ -1100,7 +1100,8 @@ static struct dst_entry *ip6_sk_dst_check(struct sock *sk,
	 *    sockets.
	 * 2. oif also should be the same.
	 */
	if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr, np->daddr_cache) ||
	if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr,
			 np->daddr_cache ? &sk->sk_v6_daddr : NULL) ||
#ifdef CONFIG_IPV6_SUBTREES
	    ip6_rt_check(&rt->rt6i_src, &fl6->saddr,
			 np->saddr_cache ? &np->saddr : NULL) ||
Loading