Commit 4671bb1a authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-add-export_ipv6_mod'

Eric Dumazet says:

====================
net: add EXPORT_IPV6_MOD()

In this series I am adding EXPORT_IPV6_MOD and EXPORT_IPV6_MOD_GPL()
so that we can replace some EXPORT_SYMBOL() when IPV6 is
not modular.

This is making all the selected symbols internal to core
linux networking.

v1: https://lore.kernel.org/20250210082805.465241-2-edumazet@google.com
====================

Link: https://patch.msgid.link/20250212132418.1524422-1-edumazet@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 7a7e0197 2f8f4f22
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -673,6 +673,14 @@ static inline void ip_ipgre_mc_map(__be32 naddr, const unsigned char *broadcast,
		memcpy(buf, &naddr, sizeof(naddr));
}

#if IS_MODULE(CONFIG_IPV6)
#define EXPORT_IPV6_MOD(X) EXPORT_SYMBOL(X)
#define EXPORT_IPV6_MOD_GPL(X) EXPORT_SYMBOL_GPL(X)
#else
#define EXPORT_IPV6_MOD(X)
#define EXPORT_IPV6_MOD_GPL(X)
#endif

#if IS_ENABLED(CONFIG_IPV6)
#include <linux/ipv6.h>
#endif
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ u32 secure_tcpv6_ts_off(const struct net *net,
	return siphash(&combined, offsetofend(typeof(combined), daddr),
		       &ts_secret);
}
EXPORT_SYMBOL(secure_tcpv6_ts_off);
EXPORT_IPV6_MOD(secure_tcpv6_ts_off);

u32 secure_tcpv6_seq(const __be32 *saddr, const __be32 *daddr,
		     __be16 sport, __be16 dport)
+4 −4
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ void inet_peer_base_init(struct inet_peer_base *bp)
	seqlock_init(&bp->lock);
	bp->total = 0;
}
EXPORT_SYMBOL_GPL(inet_peer_base_init);
EXPORT_IPV6_MOD_GPL(inet_peer_base_init);

#define PEER_MAX_GC 32

@@ -218,7 +218,7 @@ struct inet_peer *inet_getpeer(struct inet_peer_base *base,

	return p;
}
EXPORT_SYMBOL_GPL(inet_getpeer);
EXPORT_IPV6_MOD_GPL(inet_getpeer);

void inet_putpeer(struct inet_peer *p)
{
@@ -269,7 +269,7 @@ bool inet_peer_xrlim_allow(struct inet_peer *peer, int timeout)
		WRITE_ONCE(peer->rate_tokens, token);
	return rc;
}
EXPORT_SYMBOL(inet_peer_xrlim_allow);
EXPORT_IPV6_MOD(inet_peer_xrlim_allow);

void inetpeer_invalidate_tree(struct inet_peer_base *base)
{
@@ -286,4 +286,4 @@ void inetpeer_invalidate_tree(struct inet_peer_base *base)

	base->total = 0;
}
EXPORT_SYMBOL(inetpeer_invalidate_tree);
EXPORT_IPV6_MOD(inetpeer_invalidate_tree);
+4 −4
Original line number Diff line number Diff line
@@ -222,7 +222,7 @@ struct sock *tcp_get_cookie_sock(struct sock *sk, struct sk_buff *skb,

	return NULL;
}
EXPORT_SYMBOL(tcp_get_cookie_sock);
EXPORT_IPV6_MOD(tcp_get_cookie_sock);

/*
 * when syncookies are in effect and tcp timestamps are enabled we stored
@@ -259,7 +259,7 @@ bool cookie_timestamp_decode(const struct net *net,

	return READ_ONCE(net->ipv4.sysctl_tcp_window_scaling) != 0;
}
EXPORT_SYMBOL(cookie_timestamp_decode);
EXPORT_IPV6_MOD(cookie_timestamp_decode);

static int cookie_tcp_reqsk_init(struct sock *sk, struct sk_buff *skb,
				 struct request_sock *req)
@@ -310,7 +310,7 @@ struct request_sock *cookie_bpf_check(struct sock *sk, struct sk_buff *skb)

	return req;
}
EXPORT_SYMBOL_GPL(cookie_bpf_check);
EXPORT_IPV6_MOD_GPL(cookie_bpf_check);
#endif

struct request_sock *cookie_tcp_reqsk_alloc(const struct request_sock_ops *ops,
@@ -351,7 +351,7 @@ struct request_sock *cookie_tcp_reqsk_alloc(const struct request_sock_ops *ops,

	return req;
}
EXPORT_SYMBOL_GPL(cookie_tcp_reqsk_alloc);
EXPORT_IPV6_MOD_GPL(cookie_tcp_reqsk_alloc);

static struct request_sock *cookie_tcp_check(struct net *net, struct sock *sk,
					     struct sk_buff *skb)
+22 −22
Original line number Diff line number Diff line
@@ -300,10 +300,10 @@ DEFINE_PER_CPU(u32, tcp_tw_isn);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_tw_isn);

long sysctl_tcp_mem[3] __read_mostly;
EXPORT_SYMBOL(sysctl_tcp_mem);
EXPORT_IPV6_MOD(sysctl_tcp_mem);

atomic_long_t tcp_memory_allocated ____cacheline_aligned_in_smp;	/* Current allocated memory. */
EXPORT_SYMBOL(tcp_memory_allocated);
EXPORT_IPV6_MOD(tcp_memory_allocated);
DEFINE_PER_CPU(int, tcp_memory_per_cpu_fw_alloc);
EXPORT_PER_CPU_SYMBOL_GPL(tcp_memory_per_cpu_fw_alloc);

@@ -316,7 +316,7 @@ EXPORT_SYMBOL(tcp_have_smc);
 * Current number of TCP sockets.
 */
struct percpu_counter tcp_sockets_allocated ____cacheline_aligned_in_smp;
EXPORT_SYMBOL(tcp_sockets_allocated);
EXPORT_IPV6_MOD(tcp_sockets_allocated);

/*
 * TCP splice context
@@ -349,7 +349,7 @@ void tcp_enter_memory_pressure(struct sock *sk)
	if (!cmpxchg(&tcp_memory_pressure, 0, val))
		NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURES);
}
EXPORT_SYMBOL_GPL(tcp_enter_memory_pressure);
EXPORT_IPV6_MOD_GPL(tcp_enter_memory_pressure);

void tcp_leave_memory_pressure(struct sock *sk)
{
@@ -362,7 +362,7 @@ void tcp_leave_memory_pressure(struct sock *sk)
		NET_ADD_STATS(sock_net(sk), LINUX_MIB_TCPMEMORYPRESSURESCHRONO,
			      jiffies_to_msecs(jiffies - val));
}
EXPORT_SYMBOL_GPL(tcp_leave_memory_pressure);
EXPORT_IPV6_MOD_GPL(tcp_leave_memory_pressure);

/* Convert seconds to retransmits based on initial and max timeout */
static u8 secs_to_retrans(int seconds, int timeout, int rto_max)
@@ -479,7 +479,7 @@ void tcp_init_sock(struct sock *sk)
	sk_sockets_allocated_inc(sk);
	xa_init_flags(&sk->sk_user_frags, XA_FLAGS_ALLOC1);
}
EXPORT_SYMBOL(tcp_init_sock);
EXPORT_IPV6_MOD(tcp_init_sock);

static void tcp_tx_timestamp(struct sock *sk, struct sockcm_cookie *sockc)
{
@@ -664,7 +664,7 @@ int tcp_ioctl(struct sock *sk, int cmd, int *karg)
	*karg = answ;
	return 0;
}
EXPORT_SYMBOL(tcp_ioctl);
EXPORT_IPV6_MOD(tcp_ioctl);

void tcp_mark_push(struct tcp_sock *tp, struct sk_buff *skb)
{
@@ -880,7 +880,7 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,

	return ret;
}
EXPORT_SYMBOL(tcp_splice_read);
EXPORT_IPV6_MOD(tcp_splice_read);

struct sk_buff *tcp_stream_alloc_skb(struct sock *sk, gfp_t gfp,
				     bool force_schedule)
@@ -1380,7 +1380,7 @@ void tcp_splice_eof(struct socket *sock)
	tcp_push(sk, 0, mss_now, tp->nonagle, size_goal);
	release_sock(sk);
}
EXPORT_SYMBOL_GPL(tcp_splice_eof);
EXPORT_IPV6_MOD_GPL(tcp_splice_eof);

/*
 *	Handle reading urgent data. BSD has very simple semantics for
@@ -1671,7 +1671,7 @@ int tcp_read_skb(struct sock *sk, skb_read_actor_t recv_actor)
	}
	return copied;
}
EXPORT_SYMBOL(tcp_read_skb);
EXPORT_IPV6_MOD(tcp_read_skb);

void tcp_read_done(struct sock *sk, size_t len)
{
@@ -1716,7 +1716,7 @@ int tcp_peek_len(struct socket *sock)
{
	return tcp_inq(sock->sk);
}
EXPORT_SYMBOL(tcp_peek_len);
EXPORT_IPV6_MOD(tcp_peek_len);

/* Make sure sk_rcvbuf is big enough to satisfy SO_RCVLOWAT hint */
int tcp_set_rcvlowat(struct sock *sk, int val)
@@ -1743,7 +1743,7 @@ int tcp_set_rcvlowat(struct sock *sk, int val)
	}
	return 0;
}
EXPORT_SYMBOL(tcp_set_rcvlowat);
EXPORT_IPV6_MOD(tcp_set_rcvlowat);

void tcp_update_recv_tstamps(struct sk_buff *skb,
			     struct scm_timestamping_internal *tss)
@@ -1776,7 +1776,7 @@ int tcp_mmap(struct file *file, struct socket *sock,
	vma->vm_ops = &tcp_vm_ops;
	return 0;
}
EXPORT_SYMBOL(tcp_mmap);
EXPORT_IPV6_MOD(tcp_mmap);

static skb_frag_t *skb_advance_to_frag(struct sk_buff *skb, u32 offset_skb,
				       u32 *offset_frag)
@@ -2873,7 +2873,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int flags,
	}
	return ret;
}
EXPORT_SYMBOL(tcp_recvmsg);
EXPORT_IPV6_MOD(tcp_recvmsg);

void tcp_set_state(struct sock *sk, int state)
{
@@ -3003,7 +3003,7 @@ void tcp_shutdown(struct sock *sk, int how)
			tcp_send_fin(sk);
	}
}
EXPORT_SYMBOL(tcp_shutdown);
EXPORT_IPV6_MOD(tcp_shutdown);

int tcp_orphan_count_sum(void)
{
@@ -3502,7 +3502,7 @@ static int tcp_repair_options_est(struct sock *sk, sockptr_t optbuf,
}

DEFINE_STATIC_KEY_FALSE(tcp_tx_delay_enabled);
EXPORT_SYMBOL(tcp_tx_delay_enabled);
EXPORT_IPV6_MOD(tcp_tx_delay_enabled);

static void tcp_enable_tx_delay(void)
{
@@ -4045,7 +4045,7 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval,
								optval, optlen);
	return do_tcp_setsockopt(sk, level, optname, optval, optlen);
}
EXPORT_SYMBOL(tcp_setsockopt);
EXPORT_IPV6_MOD(tcp_setsockopt);

static void tcp_get_info_chrono_stats(const struct tcp_sock *tp,
				      struct tcp_info *info)
@@ -4676,7 +4676,7 @@ bool tcp_bpf_bypass_getsockopt(int level, int optname)

	return false;
}
EXPORT_SYMBOL(tcp_bpf_bypass_getsockopt);
EXPORT_IPV6_MOD(tcp_bpf_bypass_getsockopt);

int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval,
		   int __user *optlen)
@@ -4690,11 +4690,11 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval,
	return do_tcp_getsockopt(sk, level, optname, USER_SOCKPTR(optval),
				 USER_SOCKPTR(optlen));
}
EXPORT_SYMBOL(tcp_getsockopt);
EXPORT_IPV6_MOD(tcp_getsockopt);

#ifdef CONFIG_TCP_MD5SIG
int tcp_md5_sigpool_id = -1;
EXPORT_SYMBOL_GPL(tcp_md5_sigpool_id);
EXPORT_IPV6_MOD_GPL(tcp_md5_sigpool_id);

int tcp_md5_alloc_sigpool(void)
{
@@ -4740,7 +4740,7 @@ int tcp_md5_hash_key(struct tcp_sigpool *hp,
	 */
	return data_race(crypto_ahash_update(hp->req));
}
EXPORT_SYMBOL(tcp_md5_hash_key);
EXPORT_IPV6_MOD(tcp_md5_hash_key);

/* Called with rcu_read_lock() */
static enum skb_drop_reason
@@ -4860,7 +4860,7 @@ tcp_inbound_hash(struct sock *sk, const struct request_sock *req,
	return tcp_inbound_md5_hash(sk, skb, saddr, daddr, family,
				    l3index, md5_location);
}
EXPORT_SYMBOL_GPL(tcp_inbound_hash);
EXPORT_IPV6_MOD_GPL(tcp_inbound_hash);

void tcp_done(struct sock *sk)
{
Loading