#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 <net/net_namespace.h>
#include <net/netns/generic.h>
#include "l2tp_core.h"
static unsigned int l2tp_ip_net_id;
struct l2tp_ip_net { … };
struct l2tp_ip_sock { … };
static struct l2tp_ip_sock *l2tp_ip_sk(const struct sock *sk)
{ … }
static struct l2tp_ip_net *l2tp_ip_pernet(const struct net *net)
{ … }
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 __net_init int l2tp_ip_init_net(struct net *net)
{ … }
static __net_exit void l2tp_ip_exit_net(struct net *net)
{ … }
static struct pernet_operations l2tp_ip_net_ops = …;
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(…);