/* blackhole_netdev - a device used for dsts that are marked expired! *Thisisglobaldevice(insteadofper-net-ns)sinceit'snotneeded *tobeper-nsandgetsinitializedatboottime.
*/ struct net_device *blackhole_netdev;
EXPORT_SYMBOL(blackhole_netdev);
/* The higher levels take care of making this non-reentrant (it's *calledwithbh'sdisabled).
*/ static netdev_tx_t loopback_xmit(struct sk_buff *skb, struct net_device *dev)
{ int len;
skb_tx_timestamp(skb);
/* do not fool net_timestamp_check() with various clock bases */
skb_clear_tstamp(skb);
skb_orphan(skb);
/* Before queueing this packet to __netif_rx(), *makesuredstisrefcounted.
*/
skb_dst_force(skb);
skb->protocol = eth_type_trans(skb, dev);
len = skb->len; if (likely(__netif_rx(skb) == NET_RX_SUCCESS))
dev_lstats_add(dev, len);
/* The loopback device is special. There is only one instance *pernetworknamespace.
*/ staticvoid loopback_setup(struct net_device *dev)
{
gen_lo_setup(dev, (64 * 1024), &loopback_ethtool_ops, ð_header_ops,
&loopback_ops, loopback_dev_free);
}
/* Setup and register the loopback device. */ static __net_init int loopback_net_init(struct net *net)
{ struct net_device *dev; int err;
err = -ENOMEM;
dev = alloc_netdev(0, "lo", NET_NAME_PREDICTABLE, loopback_setup); if (!dev) goto out;
dev_net_set(dev, net);
err = register_netdev(dev); if (err) goto out_free_netdev;
/* This is a dst-dummy device used specifically for invalidated *DSTsandunlikeloopback,thisisnotper-ns.
*/ staticvoid blackhole_netdev_setup(struct net_device *dev)
{
gen_lo_setup(dev, ETH_MIN_MTU, NULL, NULL, &blackhole_netdev_ops, NULL);
}
/* Setup and register the blackhole_netdev. */ staticint __init blackhole_netdev_init(void)
{
blackhole_netdev = alloc_netdev(0, "blackhole_dev", NET_NAME_UNKNOWN,
blackhole_netdev_setup); if (!blackhole_netdev) return -ENOMEM;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.