linux/drivers/net/can/vxcan.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * vxcan.c - Virtual CAN Tunnel for cross namespace communication
 *
 * This code is derived from drivers/net/can/vcan.c for the virtual CAN
 * specific parts and from drivers/net/veth.c to implement the netlink API
 * for network interface pairs in a common and established way.
 *
 * Copyright (c) 2017 Oliver Hartkopp <[email protected]>
 */

#include <linux/ethtool.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/can.h>
#include <linux/can/dev.h>
#include <linux/can/skb.h>
#include <linux/can/vxcan.h>
#include <linux/can/can-ml.h>
#include <linux/slab.h>
#include <net/rtnetlink.h>

#define DRV_NAME

MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_ALIAS_RTNL_LINK();

struct vxcan_priv {};

static netdev_tx_t vxcan_xmit(struct sk_buff *oskb, struct net_device *dev)
{}


static int vxcan_open(struct net_device *dev)
{}

static int vxcan_close(struct net_device *dev)
{}

static int vxcan_get_iflink(const struct net_device *dev)
{}

static int vxcan_change_mtu(struct net_device *dev, int new_mtu)
{}

static const struct net_device_ops vxcan_netdev_ops =;

static const struct ethtool_ops vxcan_ethtool_ops =;

static void vxcan_setup(struct net_device *dev)
{}

/* forward declaration for rtnl_create_link() */
static struct rtnl_link_ops vxcan_link_ops;

static int vxcan_newlink(struct net *net, struct net_device *dev,
			 struct nlattr *tb[], struct nlattr *data[],
			 struct netlink_ext_ack *extack)
{}

static void vxcan_dellink(struct net_device *dev, struct list_head *head)
{}

static const struct nla_policy vxcan_policy[VXCAN_INFO_MAX + 1] =;

static struct net *vxcan_get_link_net(const struct net_device *dev)
{}

static struct rtnl_link_ops vxcan_link_ops =;

static __init int vxcan_init(void)
{}

static __exit void vxcan_exit(void)
{}

module_init();
module_exit(vxcan_exit);