mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
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: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
4671bb1a6b
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -468,7 +468,7 @@ bool tcp_fastopen_defer_connect(struct sock *sk, int *err)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_fastopen_defer_connect);
|
||||
EXPORT_IPV6_MOD(tcp_fastopen_defer_connect);
|
||||
|
||||
/*
|
||||
* The following code block is to deal with middle box issues with TFO:
|
||||
|
|
|
|||
|
|
@ -630,7 +630,7 @@ void tcp_initialize_rcv_mss(struct sock *sk)
|
|||
|
||||
inet_csk(sk)->icsk_ack.rcv_mss = hint;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_initialize_rcv_mss);
|
||||
EXPORT_IPV6_MOD(tcp_initialize_rcv_mss);
|
||||
|
||||
/* Receiver "autotuning" code.
|
||||
*
|
||||
|
|
@ -2891,7 +2891,7 @@ void tcp_simple_retransmit(struct sock *sk)
|
|||
*/
|
||||
tcp_non_congestion_loss_retransmit(sk);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_simple_retransmit);
|
||||
EXPORT_IPV6_MOD(tcp_simple_retransmit);
|
||||
|
||||
void tcp_enter_recovery(struct sock *sk, bool ece_ack)
|
||||
{
|
||||
|
|
@ -4521,7 +4521,7 @@ void tcp_done_with_error(struct sock *sk, int err)
|
|||
if (!sock_flag(sk, SOCK_DEAD))
|
||||
sk_error_report(sk);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_done_with_error);
|
||||
EXPORT_IPV6_MOD(tcp_done_with_error);
|
||||
|
||||
/* When we get a reset we do this. */
|
||||
void tcp_reset(struct sock *sk, struct sk_buff *skb)
|
||||
|
|
@ -6291,7 +6291,7 @@ void tcp_rcv_established(struct sock *sk, struct sk_buff *skb)
|
|||
discard:
|
||||
tcp_drop_reason(sk, skb, reason);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_rcv_established);
|
||||
EXPORT_IPV6_MOD(tcp_rcv_established);
|
||||
|
||||
void tcp_init_transfer(struct sock *sk, int bpf_op, struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -7004,7 +7004,7 @@ tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
|
|||
__kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_rcv_state_process);
|
||||
EXPORT_IPV6_MOD(tcp_rcv_state_process);
|
||||
|
||||
static inline void pr_drop_req(struct request_sock *req, __u16 port, int family)
|
||||
{
|
||||
|
|
@ -7186,7 +7186,7 @@ u16 tcp_get_syncookie_mss(struct request_sock_ops *rsk_ops,
|
|||
|
||||
return mss;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_get_syncookie_mss);
|
||||
EXPORT_IPV6_MOD_GPL(tcp_get_syncookie_mss);
|
||||
|
||||
int tcp_conn_request(struct request_sock_ops *rsk_ops,
|
||||
const struct tcp_request_sock_ops *af_ops,
|
||||
|
|
@ -7367,4 +7367,4 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
|
|||
tcp_listendrop(sk);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_conn_request);
|
||||
EXPORT_IPV6_MOD(tcp_conn_request);
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
|
|||
#endif
|
||||
|
||||
struct inet_hashinfo tcp_hashinfo;
|
||||
EXPORT_SYMBOL(tcp_hashinfo);
|
||||
|
||||
static DEFINE_PER_CPU(struct sock_bh_locked, ipv4_tcp_sk) = {
|
||||
.bh_lock = INIT_LOCAL_LOCK(bh_lock),
|
||||
|
|
@ -199,7 +198,7 @@ int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_twsk_unique);
|
||||
EXPORT_IPV6_MOD_GPL(tcp_twsk_unique);
|
||||
|
||||
static int tcp_v4_pre_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
int addr_len)
|
||||
|
|
@ -359,7 +358,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|||
inet->inet_dport = 0;
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_connect);
|
||||
EXPORT_IPV6_MOD(tcp_v4_connect);
|
||||
|
||||
/*
|
||||
* This routine reacts to ICMP_FRAG_NEEDED mtu indications as defined in RFC1191.
|
||||
|
|
@ -400,7 +399,7 @@ void tcp_v4_mtu_reduced(struct sock *sk)
|
|||
tcp_simple_retransmit(sk);
|
||||
} /* else let the usual retransmit timer handle it */
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_mtu_reduced);
|
||||
EXPORT_IPV6_MOD(tcp_v4_mtu_reduced);
|
||||
|
||||
static void do_redirect(struct sk_buff *skb, struct sock *sk)
|
||||
{
|
||||
|
|
@ -434,7 +433,7 @@ void tcp_req_err(struct sock *sk, u32 seq, bool abort)
|
|||
}
|
||||
reqsk_put(req);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_req_err);
|
||||
EXPORT_IPV6_MOD(tcp_req_err);
|
||||
|
||||
/* TCP-LD (RFC 6069) logic */
|
||||
void tcp_ld_RTO_revert(struct sock *sk, u32 seq)
|
||||
|
|
@ -473,7 +472,7 @@ void tcp_ld_RTO_revert(struct sock *sk, u32 seq)
|
|||
tcp_retransmit_timer(sk);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_ld_RTO_revert);
|
||||
EXPORT_IPV6_MOD(tcp_ld_RTO_revert);
|
||||
|
||||
/*
|
||||
* This routine is called by the ICMP module when it gets some
|
||||
|
|
@ -675,7 +674,7 @@ void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
__tcp_v4_send_check(skb, inet->inet_saddr, inet->inet_daddr);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_send_check);
|
||||
EXPORT_IPV6_MOD(tcp_v4_send_check);
|
||||
|
||||
#define REPLY_OPTIONS_LEN (MAX_TCP_OPTION_SPACE / sizeof(__be32))
|
||||
|
||||
|
|
@ -1230,7 +1229,7 @@ static void tcp_v4_reqsk_destructor(struct request_sock *req)
|
|||
*/
|
||||
|
||||
DEFINE_STATIC_KEY_DEFERRED_FALSE(tcp_md5_needed, HZ);
|
||||
EXPORT_SYMBOL(tcp_md5_needed);
|
||||
EXPORT_IPV6_MOD(tcp_md5_needed);
|
||||
|
||||
static bool better_md5_match(struct tcp_md5sig_key *old, struct tcp_md5sig_key *new)
|
||||
{
|
||||
|
|
@ -1289,7 +1288,7 @@ struct tcp_md5sig_key *__tcp_md5_do_lookup(const struct sock *sk, int l3index,
|
|||
}
|
||||
return best_match;
|
||||
}
|
||||
EXPORT_SYMBOL(__tcp_md5_do_lookup);
|
||||
EXPORT_IPV6_MOD(__tcp_md5_do_lookup);
|
||||
|
||||
static struct tcp_md5sig_key *tcp_md5_do_lookup_exact(const struct sock *sk,
|
||||
const union tcp_md5_addr *addr,
|
||||
|
|
@ -1336,7 +1335,7 @@ struct tcp_md5sig_key *tcp_v4_md5_lookup(const struct sock *sk,
|
|||
addr = (const union tcp_md5_addr *)&addr_sk->sk_daddr;
|
||||
return tcp_md5_do_lookup(sk, l3index, addr, AF_INET);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_md5_lookup);
|
||||
EXPORT_IPV6_MOD(tcp_v4_md5_lookup);
|
||||
|
||||
static int tcp_md5sig_info_add(struct sock *sk, gfp_t gfp)
|
||||
{
|
||||
|
|
@ -1432,7 +1431,7 @@ int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr,
|
|||
return __tcp_md5_do_add(sk, addr, family, prefixlen, l3index, flags,
|
||||
newkey, newkeylen, GFP_KERNEL);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_md5_do_add);
|
||||
EXPORT_IPV6_MOD(tcp_md5_do_add);
|
||||
|
||||
int tcp_md5_key_copy(struct sock *sk, const union tcp_md5_addr *addr,
|
||||
int family, u8 prefixlen, int l3index,
|
||||
|
|
@ -1464,7 +1463,7 @@ int tcp_md5_key_copy(struct sock *sk, const union tcp_md5_addr *addr,
|
|||
key->flags, key->key, key->keylen,
|
||||
sk_gfp_mask(sk, GFP_ATOMIC));
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_md5_key_copy);
|
||||
EXPORT_IPV6_MOD(tcp_md5_key_copy);
|
||||
|
||||
int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr, int family,
|
||||
u8 prefixlen, int l3index, u8 flags)
|
||||
|
|
@ -1479,7 +1478,7 @@ int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr, int family,
|
|||
kfree_rcu(key, rcu);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_md5_do_del);
|
||||
EXPORT_IPV6_MOD(tcp_md5_do_del);
|
||||
|
||||
void tcp_clear_md5_list(struct sock *sk)
|
||||
{
|
||||
|
|
@ -1658,7 +1657,7 @@ int tcp_v4_md5_hash_skb(char *md5_hash, const struct tcp_md5sig_key *key,
|
|||
memset(md5_hash, 0, 16);
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_md5_hash_skb);
|
||||
EXPORT_IPV6_MOD(tcp_v4_md5_hash_skb);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -1731,7 +1730,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
|||
tcp_listendrop(sk);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_conn_request);
|
||||
EXPORT_IPV6_MOD(tcp_v4_conn_request);
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -1855,7 +1854,7 @@ struct sock *tcp_v4_syn_recv_sock(const struct sock *sk, struct sk_buff *skb,
|
|||
tcp_done(newsk);
|
||||
goto exit;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_syn_recv_sock);
|
||||
EXPORT_IPV6_MOD(tcp_v4_syn_recv_sock);
|
||||
|
||||
static struct sock *tcp_v4_cookie_check(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -2134,7 +2133,7 @@ bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb,
|
|||
}
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_add_backlog);
|
||||
EXPORT_IPV6_MOD(tcp_add_backlog);
|
||||
|
||||
int tcp_filter(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -2142,7 +2141,7 @@ int tcp_filter(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
return sk_filter_trim_cap(sk, skb, th->doff * 4);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_filter);
|
||||
EXPORT_IPV6_MOD(tcp_filter);
|
||||
|
||||
static void tcp_v4_restore_cb(struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -2451,7 +2450,7 @@ void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
|
|||
sk->sk_rx_dst_ifindex = skb->skb_iif;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(inet_sk_rx_dst_set);
|
||||
EXPORT_IPV6_MOD(inet_sk_rx_dst_set);
|
||||
|
||||
const struct inet_connection_sock_af_ops ipv4_specific = {
|
||||
.queue_xmit = ip_queue_xmit,
|
||||
|
|
@ -2467,7 +2466,7 @@ const struct inet_connection_sock_af_ops ipv4_specific = {
|
|||
.sockaddr_len = sizeof(struct sockaddr_in),
|
||||
.mtu_reduced = tcp_v4_mtu_reduced,
|
||||
};
|
||||
EXPORT_SYMBOL(ipv4_specific);
|
||||
EXPORT_IPV6_MOD(ipv4_specific);
|
||||
|
||||
#if defined(CONFIG_TCP_MD5SIG) || defined(CONFIG_TCP_AO)
|
||||
static const struct tcp_sock_af_ops tcp_sock_ipv4_specific = {
|
||||
|
|
@ -2577,7 +2576,7 @@ void tcp_v4_destroy_sock(struct sock *sk)
|
|||
|
||||
sk_sockets_allocated_dec(sk);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_v4_destroy_sock);
|
||||
EXPORT_IPV6_MOD(tcp_v4_destroy_sock);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
/* Proc filesystem TCP sock list dumping. */
|
||||
|
|
@ -2813,7 +2812,7 @@ void *tcp_seq_start(struct seq_file *seq, loff_t *pos)
|
|||
st->last_pos = *pos;
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_seq_start);
|
||||
EXPORT_IPV6_MOD(tcp_seq_start);
|
||||
|
||||
void *tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
{
|
||||
|
|
@ -2844,7 +2843,7 @@ void *tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
|||
st->last_pos = *pos;
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_seq_next);
|
||||
EXPORT_IPV6_MOD(tcp_seq_next);
|
||||
|
||||
void tcp_seq_stop(struct seq_file *seq, void *v)
|
||||
{
|
||||
|
|
@ -2862,7 +2861,7 @@ void tcp_seq_stop(struct seq_file *seq, void *v)
|
|||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_seq_stop);
|
||||
EXPORT_IPV6_MOD(tcp_seq_stop);
|
||||
|
||||
static void get_openreq4(const struct request_sock *req,
|
||||
struct seq_file *f, int i)
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
|
|||
inet_twsk_put(tw);
|
||||
return TCP_TW_SUCCESS;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_timewait_state_process);
|
||||
EXPORT_IPV6_MOD(tcp_timewait_state_process);
|
||||
|
||||
static void tcp_time_wait_init(struct sock *sk, struct tcp_timewait_sock *tcptw)
|
||||
{
|
||||
|
|
@ -398,7 +398,7 @@ void tcp_twsk_destructor(struct sock *sk)
|
|||
#endif
|
||||
tcp_ao_destroy_sock(sk, true);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_twsk_destructor);
|
||||
EXPORT_IPV6_MOD_GPL(tcp_twsk_destructor);
|
||||
|
||||
void tcp_twsk_purge(struct list_head *net_exit_list)
|
||||
{
|
||||
|
|
@ -457,7 +457,6 @@ void tcp_openreq_init_rwin(struct request_sock *req,
|
|||
rcv_wnd);
|
||||
ireq->rcv_wscale = rcv_wscale;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_openreq_init_rwin);
|
||||
|
||||
static void tcp_ecn_openreq_child(struct tcp_sock *tp,
|
||||
const struct request_sock *req)
|
||||
|
|
@ -492,7 +491,7 @@ void tcp_ca_openreq_child(struct sock *sk, const struct dst_entry *dst)
|
|||
|
||||
tcp_set_ca_state(sk, TCP_CA_Open);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_ca_openreq_child);
|
||||
EXPORT_IPV6_MOD_GPL(tcp_ca_openreq_child);
|
||||
|
||||
static void smc_check_reset_syn_req(const struct tcp_sock *oldtp,
|
||||
struct request_sock *req,
|
||||
|
|
@ -909,7 +908,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_check_req);
|
||||
EXPORT_IPV6_MOD(tcp_check_req);
|
||||
|
||||
/*
|
||||
* Queue segment on the new socket if the new socket is active,
|
||||
|
|
@ -951,4 +950,4 @@ enum skb_drop_reason tcp_child_process(struct sock *parent, struct sock *child,
|
|||
sock_put(child);
|
||||
return reason;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_child_process);
|
||||
EXPORT_IPV6_MOD(tcp_child_process);
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ void tcp_select_initial_window(const struct sock *sk, int __space, __u32 mss,
|
|||
WRITE_ONCE(*__window_clamp,
|
||||
min_t(__u32, U16_MAX << (*rcv_wscale), window_clamp));
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_select_initial_window);
|
||||
EXPORT_IPV6_MOD(tcp_select_initial_window);
|
||||
|
||||
/* Chose a new window to advertise, update state in tcp_sock for the
|
||||
* socket, and return result with RFC1323 scaling applied. The return
|
||||
|
|
@ -1171,7 +1171,7 @@ void tcp_release_cb(struct sock *sk)
|
|||
if ((flags & TCPF_ACK_DEFERRED) && inet_csk_ack_scheduled(sk))
|
||||
tcp_send_ack(sk);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_release_cb);
|
||||
EXPORT_IPV6_MOD(tcp_release_cb);
|
||||
|
||||
void __init tcp_tasklet_init(void)
|
||||
{
|
||||
|
|
@ -1783,7 +1783,7 @@ int tcp_mtu_to_mss(struct sock *sk, int pmtu)
|
|||
return __tcp_mtu_to_mss(sk, pmtu) -
|
||||
(tcp_sk(sk)->tcp_header_len - sizeof(struct tcphdr));
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_mtu_to_mss);
|
||||
EXPORT_IPV6_MOD(tcp_mtu_to_mss);
|
||||
|
||||
/* Inverse of above */
|
||||
int tcp_mss_to_mtu(struct sock *sk, int mss)
|
||||
|
|
@ -1856,7 +1856,7 @@ unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu)
|
|||
|
||||
return mss_now;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_sync_mss);
|
||||
EXPORT_IPV6_MOD(tcp_sync_mss);
|
||||
|
||||
/* Compute the current effective MSS, taking SACKs and IP options,
|
||||
* and even PMTU discovery events into account.
|
||||
|
|
@ -3851,7 +3851,7 @@ struct sk_buff *tcp_make_synack(const struct sock *sk, struct dst_entry *dst,
|
|||
|
||||
return skb;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_make_synack);
|
||||
EXPORT_IPV6_MOD(tcp_make_synack);
|
||||
|
||||
static void tcp_ca_dst_init(struct sock *sk, const struct dst_entry *dst)
|
||||
{
|
||||
|
|
@ -4428,4 +4428,4 @@ int tcp_rtx_synack(const struct sock *sk, struct request_sock *req)
|
|||
}
|
||||
return res;
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_rtx_synack);
|
||||
EXPORT_IPV6_MOD(tcp_rtx_synack);
|
||||
|
|
|
|||
|
|
@ -750,7 +750,7 @@ void tcp_syn_ack_timeout(const struct request_sock *req)
|
|||
|
||||
__NET_INC_STATS(net, LINUX_MIB_TCPTIMEOUTS);
|
||||
}
|
||||
EXPORT_SYMBOL(tcp_syn_ack_timeout);
|
||||
EXPORT_IPV6_MOD(tcp_syn_ack_timeout);
|
||||
|
||||
void tcp_reset_keepalive_timer(struct sock *sk, unsigned long len)
|
||||
{
|
||||
|
|
@ -772,7 +772,7 @@ void tcp_set_keepalive(struct sock *sk, int val)
|
|||
else if (!val)
|
||||
tcp_delete_keepalive_timer(sk);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_set_keepalive);
|
||||
EXPORT_IPV6_MOD_GPL(tcp_set_keepalive);
|
||||
|
||||
static void tcp_keepalive_timer(struct timer_list *t)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -121,13 +121,12 @@
|
|||
#endif
|
||||
|
||||
struct udp_table udp_table __read_mostly;
|
||||
EXPORT_SYMBOL(udp_table);
|
||||
|
||||
long sysctl_udp_mem[3] __read_mostly;
|
||||
EXPORT_SYMBOL(sysctl_udp_mem);
|
||||
EXPORT_IPV6_MOD(sysctl_udp_mem);
|
||||
|
||||
atomic_long_t udp_memory_allocated ____cacheline_aligned_in_smp;
|
||||
EXPORT_SYMBOL(udp_memory_allocated);
|
||||
EXPORT_IPV6_MOD(udp_memory_allocated);
|
||||
DEFINE_PER_CPU(int, udp_memory_per_cpu_fw_alloc);
|
||||
EXPORT_PER_CPU_SYMBOL_GPL(udp_memory_per_cpu_fw_alloc);
|
||||
|
||||
|
|
@ -352,7 +351,7 @@ int udp_lib_get_port(struct sock *sk, unsigned short snum,
|
|||
fail:
|
||||
return error;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_get_port);
|
||||
EXPORT_IPV6_MOD(udp_lib_get_port);
|
||||
|
||||
int udp_v4_get_port(struct sock *sk, unsigned short snum)
|
||||
{
|
||||
|
|
@ -418,7 +417,7 @@ u32 udp_ehashfn(const struct net *net, const __be32 laddr, const __u16 lport,
|
|||
return __inet_ehashfn(laddr, lport, faddr, fport,
|
||||
udp_ehash_secret + net_hash_mix(net));
|
||||
}
|
||||
EXPORT_SYMBOL(udp_ehashfn);
|
||||
EXPORT_IPV6_MOD(udp_ehashfn);
|
||||
|
||||
/**
|
||||
* udp4_lib_lookup1() - Simplified lookup using primary hash (destination port)
|
||||
|
|
@ -653,7 +652,7 @@ void udp_lib_hash4(struct sock *sk, u16 hash)
|
|||
|
||||
spin_unlock_bh(&hslot->lock);
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_hash4);
|
||||
EXPORT_IPV6_MOD(udp_lib_hash4);
|
||||
|
||||
/* call with sock lock */
|
||||
void udp4_hash4(struct sock *sk)
|
||||
|
|
@ -669,7 +668,7 @@ void udp4_hash4(struct sock *sk)
|
|||
|
||||
udp_lib_hash4(sk, hash);
|
||||
}
|
||||
EXPORT_SYMBOL(udp4_hash4);
|
||||
EXPORT_IPV6_MOD(udp4_hash4);
|
||||
#endif /* CONFIG_BASE_SMALL */
|
||||
|
||||
/* UDP is nearly always wildcards out the wazoo, it makes no sense to try
|
||||
|
|
@ -809,11 +808,11 @@ static inline bool __udp_is_mcast_sock(struct net *net, const struct sock *sk,
|
|||
}
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(udp_encap_needed_key);
|
||||
EXPORT_SYMBOL(udp_encap_needed_key);
|
||||
EXPORT_IPV6_MOD(udp_encap_needed_key);
|
||||
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
DEFINE_STATIC_KEY_FALSE(udpv6_encap_needed_key);
|
||||
EXPORT_SYMBOL(udpv6_encap_needed_key);
|
||||
EXPORT_IPV6_MOD(udpv6_encap_needed_key);
|
||||
#endif
|
||||
|
||||
void udp_encap_enable(void)
|
||||
|
|
@ -1041,7 +1040,7 @@ void udp_flush_pending_frames(struct sock *sk)
|
|||
ip_flush_pending_frames(sk);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(udp_flush_pending_frames);
|
||||
EXPORT_IPV6_MOD(udp_flush_pending_frames);
|
||||
|
||||
/**
|
||||
* udp4_hwcsum - handle outgoing HW checksumming
|
||||
|
|
@ -1229,7 +1228,7 @@ int udp_push_pending_frames(struct sock *sk)
|
|||
WRITE_ONCE(up->pending, 0);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_push_pending_frames);
|
||||
EXPORT_IPV6_MOD(udp_push_pending_frames);
|
||||
|
||||
static int __udp_cmsg_send(struct cmsghdr *cmsg, u16 *gso_size)
|
||||
{
|
||||
|
|
@ -1266,7 +1265,7 @@ int udp_cmsg_send(struct sock *sk, struct msghdr *msg, u16 *gso_size)
|
|||
|
||||
return need_ip;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(udp_cmsg_send);
|
||||
EXPORT_IPV6_MOD_GPL(udp_cmsg_send);
|
||||
|
||||
int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
||||
{
|
||||
|
|
@ -1561,7 +1560,7 @@ void udp_splice_eof(struct socket *sock)
|
|||
udp_push_pending_frames(sk);
|
||||
release_sock(sk);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(udp_splice_eof);
|
||||
EXPORT_IPV6_MOD_GPL(udp_splice_eof);
|
||||
|
||||
#define UDP_SKB_IS_STATELESS 0x80000000
|
||||
|
||||
|
|
@ -1678,7 +1677,7 @@ void udp_skb_destructor(struct sock *sk, struct sk_buff *skb)
|
|||
prefetch(&skb->data);
|
||||
udp_rmem_release(sk, udp_skb_truesize(skb), 1, false);
|
||||
}
|
||||
EXPORT_SYMBOL(udp_skb_destructor);
|
||||
EXPORT_IPV6_MOD(udp_skb_destructor);
|
||||
|
||||
/* as above, but the caller held the rx queue lock, too */
|
||||
static void udp_skb_dtor_locked(struct sock *sk, struct sk_buff *skb)
|
||||
|
|
@ -1785,7 +1784,7 @@ int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb)
|
|||
busylock_release(busy);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__udp_enqueue_schedule_skb);
|
||||
EXPORT_IPV6_MOD_GPL(__udp_enqueue_schedule_skb);
|
||||
|
||||
void udp_destruct_common(struct sock *sk)
|
||||
{
|
||||
|
|
@ -1801,7 +1800,7 @@ void udp_destruct_common(struct sock *sk)
|
|||
}
|
||||
udp_rmem_release(sk, total, 0, true);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(udp_destruct_common);
|
||||
EXPORT_IPV6_MOD_GPL(udp_destruct_common);
|
||||
|
||||
static void udp_destruct_sock(struct sock *sk)
|
||||
{
|
||||
|
|
@ -1832,7 +1831,7 @@ void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len)
|
|||
skb_release_head_state(skb);
|
||||
__consume_stateless_skb(skb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(skb_consume_udp);
|
||||
EXPORT_IPV6_MOD_GPL(skb_consume_udp);
|
||||
|
||||
static struct sk_buff *__first_packet_length(struct sock *sk,
|
||||
struct sk_buff_head *rcvq,
|
||||
|
|
@ -1914,7 +1913,7 @@ int udp_ioctl(struct sock *sk, int cmd, int *karg)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_ioctl);
|
||||
EXPORT_IPV6_MOD(udp_ioctl);
|
||||
|
||||
struct sk_buff *__skb_recv_udp(struct sock *sk, unsigned int flags,
|
||||
int *off, int *err)
|
||||
|
|
@ -2010,7 +2009,7 @@ int udp_read_skb(struct sock *sk, skb_read_actor_t recv_actor)
|
|||
WARN_ON_ONCE(!skb_set_owner_sk_safe(skb, sk));
|
||||
return recv_actor(sk, skb);
|
||||
}
|
||||
EXPORT_SYMBOL(udp_read_skb);
|
||||
EXPORT_IPV6_MOD(udp_read_skb);
|
||||
|
||||
/*
|
||||
* This should be easy, if there is something there we
|
||||
|
|
@ -2137,7 +2136,7 @@ int udp_pre_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|||
|
||||
return BPF_CGROUP_RUN_PROG_INET4_CONNECT_LOCK(sk, uaddr, &addr_len);
|
||||
}
|
||||
EXPORT_SYMBOL(udp_pre_connect);
|
||||
EXPORT_IPV6_MOD(udp_pre_connect);
|
||||
|
||||
static int udp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||
{
|
||||
|
|
@ -2186,7 +2185,7 @@ int udp_disconnect(struct sock *sk, int flags)
|
|||
release_sock(sk);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_disconnect);
|
||||
EXPORT_IPV6_MOD(udp_disconnect);
|
||||
|
||||
void udp_lib_unhash(struct sock *sk)
|
||||
{
|
||||
|
|
@ -2216,7 +2215,7 @@ void udp_lib_unhash(struct sock *sk)
|
|||
spin_unlock_bh(&hslot->lock);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_unhash);
|
||||
EXPORT_IPV6_MOD(udp_lib_unhash);
|
||||
|
||||
/*
|
||||
* inet_rcv_saddr was changed, we must rehash secondary hash
|
||||
|
|
@ -2280,7 +2279,7 @@ void udp_lib_rehash(struct sock *sk, u16 newhash, u16 newhash4)
|
|||
}
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_rehash);
|
||||
EXPORT_IPV6_MOD(udp_lib_rehash);
|
||||
|
||||
void udp_v4_rehash(struct sock *sk)
|
||||
{
|
||||
|
|
@ -2485,7 +2484,7 @@ bool udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_sk_rx_dst_set);
|
||||
EXPORT_IPV6_MOD(udp_sk_rx_dst_set);
|
||||
|
||||
/*
|
||||
* Multicasts and broadcasts go to each listener.
|
||||
|
|
@ -3041,7 +3040,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
|||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_setsockopt);
|
||||
EXPORT_IPV6_MOD(udp_lib_setsockopt);
|
||||
|
||||
int udp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval,
|
||||
unsigned int optlen)
|
||||
|
|
@ -3112,7 +3111,7 @@ int udp_lib_getsockopt(struct sock *sk, int level, int optname,
|
|||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_lib_getsockopt);
|
||||
EXPORT_IPV6_MOD(udp_lib_getsockopt);
|
||||
|
||||
int udp_getsockopt(struct sock *sk, int level, int optname,
|
||||
char __user *optval, int __user *optlen)
|
||||
|
|
@ -3154,7 +3153,7 @@ __poll_t udp_poll(struct file *file, struct socket *sock, poll_table *wait)
|
|||
return mask;
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(udp_poll);
|
||||
EXPORT_IPV6_MOD(udp_poll);
|
||||
|
||||
int udp_abort(struct sock *sk, int err)
|
||||
{
|
||||
|
|
@ -3177,7 +3176,7 @@ int udp_abort(struct sock *sk, int err)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(udp_abort);
|
||||
EXPORT_IPV6_MOD_GPL(udp_abort);
|
||||
|
||||
struct proto udp_prot = {
|
||||
.name = "UDP",
|
||||
|
|
@ -3311,7 +3310,7 @@ void *udp_seq_start(struct seq_file *seq, loff_t *pos)
|
|||
|
||||
return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_seq_start);
|
||||
EXPORT_IPV6_MOD(udp_seq_start);
|
||||
|
||||
void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
{
|
||||
|
|
@ -3325,7 +3324,7 @@ void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
|||
++*pos;
|
||||
return sk;
|
||||
}
|
||||
EXPORT_SYMBOL(udp_seq_next);
|
||||
EXPORT_IPV6_MOD(udp_seq_next);
|
||||
|
||||
void udp_seq_stop(struct seq_file *seq, void *v)
|
||||
{
|
||||
|
|
@ -3337,7 +3336,7 @@ void udp_seq_stop(struct seq_file *seq, void *v)
|
|||
if (state->bucket <= udptable->mask)
|
||||
spin_unlock_bh(&udptable->hash[state->bucket].lock);
|
||||
}
|
||||
EXPORT_SYMBOL(udp_seq_stop);
|
||||
EXPORT_IPV6_MOD(udp_seq_stop);
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
static void udp4_format_sock(struct sock *sp, struct seq_file *f,
|
||||
|
|
@ -3616,7 +3615,7 @@ const struct seq_operations udp_seq_ops = {
|
|||
.stop = udp_seq_stop,
|
||||
.show = udp4_seq_show,
|
||||
};
|
||||
EXPORT_SYMBOL(udp_seq_ops);
|
||||
EXPORT_IPV6_MOD(udp_seq_ops);
|
||||
|
||||
static struct udp_seq_afinfo udp4_seq_afinfo = {
|
||||
.family = AF_INET,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user