#include <linux/module.h>
#include <linux/mm.h>
#include <linux/types.h>
#include <linux/list.h>
#include <linux/gfp.h>
#include <net/tcp.h>
static DEFINE_SPINLOCK(tcp_ulp_list_lock);
static LIST_HEAD(tcp_ulp_list);
static struct tcp_ulp_ops *tcp_ulp_find(const char *name)
{ … }
static const struct tcp_ulp_ops *__tcp_ulp_find_autoload(const char *name)
{ … }
int tcp_register_ulp(struct tcp_ulp_ops *ulp)
{ … }
EXPORT_SYMBOL_GPL(…);
void tcp_unregister_ulp(struct tcp_ulp_ops *ulp)
{ … }
EXPORT_SYMBOL_GPL(…);
void tcp_get_available_ulp(char *buf, size_t maxlen)
{ … }
void tcp_update_ulp(struct sock *sk, struct proto *proto,
void (*write_space)(struct sock *sk))
{ … }
void tcp_cleanup_ulp(struct sock *sk)
{ … }
static int __tcp_set_ulp(struct sock *sk, const struct tcp_ulp_ops *ulp_ops)
{ … }
int tcp_set_ulp(struct sock *sk, const char *name)
{ … }