#define pr_fmt(fmt) …
#include <asm/ioctls.h>
#include <linux/icmp.h>
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/random.h>
#include <linux/socket.h>
#include <linux/l2tp.h>
#include <linux/in.h>
#include <net/sock.h>
#include <net/ip.h>
#include <net/icmp.h>
#include <net/udp.h>
#include <net/inet_common.h>
#include <net/tcp_states.h>
#include <net/protocol.h>
#include <net/xfrm.h>
#include "l2tp_core.h"
struct l2tp_ip_sock { … };
static DEFINE_RWLOCK(l2tp_ip_lock);
static struct hlist_head l2tp_ip_table;
static struct hlist_head l2tp_ip_bind_table;
static inline struct l2tp_ip_sock *l2tp_ip_sk(const struct sock *sk)
{ … }
static struct sock *__l2tp_ip_bind_lookup(const struct net *net, __be32 laddr,
__be32 raddr, int dif, u32 tunnel_id)
{ … }
static int l2tp_ip_recv(struct sk_buff *skb)
{ … }
static int l2tp_ip_hash(struct sock *sk)
{ … }
static void l2tp_ip_unhash(struct sock *sk)
{ … }
static int l2tp_ip_open(struct sock *sk)
{ … }
static void l2tp_ip_close(struct sock *sk, long timeout)
{ … }
static void l2tp_ip_destroy_sock(struct sock *sk)
{ … }
static int l2tp_ip_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
{ … }
static int l2tp_ip_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
{ … }
static int l2tp_ip_disconnect(struct sock *sk, int flags)
{ … }
static int l2tp_ip_getname(struct socket *sock, struct sockaddr *uaddr,
int peer)
{ … }
static int l2tp_ip_backlog_recv(struct sock *sk, struct sk_buff *skb)
{ … }
static int l2tp_ip_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
{ … }
static int l2tp_ip_recvmsg(struct sock *sk, struct msghdr *msg,
size_t len, int flags, int *addr_len)
{ … }
int l2tp_ioctl(struct sock *sk, int cmd, int *karg)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct proto l2tp_ip_prot = …;
static const struct proto_ops l2tp_ip_ops = …;
static struct inet_protosw l2tp_ip_protosw = …;
static struct net_protocol l2tp_ip_protocol __read_mostly = …;
static int __init l2tp_ip_init(void)
{ … }
static void __exit l2tp_ip_exit(void)
{ … }
module_init(…) …;
module_exit(l2tp_ip_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…) …;
MODULE_ALIAS_NET_PF_PROTO_TYPE(…);
MODULE_ALIAS_NET_PF_PROTO(…);