#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/socket.h>
#include <linux/errno.h>
#include <linux/fcntl.h>
#include <linux/in.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/inet.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/ethtool.h>
#include <net/sch_generic.h>
#include <net/sock.h>
#include <net/checksum.h>
#include <linux/if_ether.h>
#include <linux/if_arp.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/percpu.h>
#include <linux/net_tstamp.h>
#include <net/net_namespace.h>
#include <linux/u64_stats_sync.h>
struct net_device *blackhole_netdev;
EXPORT_SYMBOL(…);
static netdev_tx_t loopback_xmit(struct sk_buff *skb,
struct net_device *dev)
{ … }
void dev_lstats_read(struct net_device *dev, u64 *packets, u64 *bytes)
{ … }
EXPORT_SYMBOL(…);
static void loopback_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *stats)
{ … }
static u32 always_on(struct net_device *dev)
{ … }
static const struct ethtool_ops loopback_ethtool_ops = …;
static int loopback_dev_init(struct net_device *dev)
{ … }
static void loopback_dev_free(struct net_device *dev)
{ … }
static const struct net_device_ops loopback_ops = …;
static void gen_lo_setup(struct net_device *dev,
unsigned int mtu,
const struct ethtool_ops *eth_ops,
const struct header_ops *hdr_ops,
const struct net_device_ops *dev_ops,
void (*dev_destructor)(struct net_device *dev))
{ … }
static void loopback_setup(struct net_device *dev)
{ … }
static __net_init int loopback_net_init(struct net *net)
{ … }
struct pernet_operations __net_initdata loopback_net_ops = …;
static netdev_tx_t blackhole_netdev_xmit(struct sk_buff *skb,
struct net_device *dev)
{ … }
static const struct net_device_ops blackhole_netdev_ops = …;
static void blackhole_netdev_setup(struct net_device *dev)
{ … }
static int __init blackhole_netdev_init(void)
{ … }
device_initcall(blackhole_netdev_init);