#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/rculist.h>
#include <linux/skbuff.h>
#include <linux/types.h>
#include <net/udp.h>
#include <net/udp_tunnel.h>
#include <net/pfcp.h>
struct pfcp_dev { … };
static unsigned int pfcp_net_id __read_mostly;
struct pfcp_net { … };
static void
pfcp_session_recv(struct pfcp_dev *pfcp, struct sk_buff *skb,
struct pfcp_metadata *md)
{ … }
static void
pfcp_node_recv(struct pfcp_dev *pfcp, struct sk_buff *skb,
struct pfcp_metadata *md)
{ … }
static int pfcp_encap_recv(struct sock *sk, struct sk_buff *skb)
{ … }
static void pfcp_del_sock(struct pfcp_dev *pfcp)
{ … }
static void pfcp_dev_uninit(struct net_device *dev)
{ … }
static int pfcp_dev_init(struct net_device *dev)
{ … }
static const struct net_device_ops pfcp_netdev_ops = …;
static const struct device_type pfcp_type = …;
static void pfcp_link_setup(struct net_device *dev)
{ … }
static struct socket *pfcp_create_sock(struct pfcp_dev *pfcp)
{ … }
static int pfcp_add_sock(struct pfcp_dev *pfcp)
{ … }
static int pfcp_newlink(struct net *net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[],
struct netlink_ext_ack *extack)
{ … }
static void pfcp_dellink(struct net_device *dev, struct list_head *head)
{ … }
static struct rtnl_link_ops pfcp_link_ops __read_mostly = …;
static int __net_init pfcp_net_init(struct net *net)
{ … }
static void __net_exit pfcp_net_exit(struct net *net)
{ … }
static struct pernet_operations pfcp_net_ops = …;
static int __init pfcp_init(void)
{ … }
late_initcall(pfcp_init);
static void __exit pfcp_exit(void)
{ … }
module_exit(pfcp_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_RTNL_LINK(…) …;