#include <linux/can/dev.h>
#include <net/rtnetlink.h>
static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = …;
static const struct nla_policy can_tdc_policy[IFLA_CAN_TDC_MAX + 1] = …;
static int can_validate_bittiming(const struct can_bittiming *bt,
struct netlink_ext_ack *extack)
{ … }
static int can_validate(struct nlattr *tb[], struct nlattr *data[],
struct netlink_ext_ack *extack)
{ … }
static int can_tdc_changelink(struct can_priv *priv, const struct nlattr *nla,
struct netlink_ext_ack *extack)
{ … }
static int can_changelink(struct net_device *dev, struct nlattr *tb[],
struct nlattr *data[],
struct netlink_ext_ack *extack)
{ … }
static size_t can_tdc_get_size(const struct net_device *dev)
{ … }
static size_t can_ctrlmode_ext_get_size(void)
{ … }
static size_t can_get_size(const struct net_device *dev)
{ … }
static int can_tdc_fill_info(struct sk_buff *skb, const struct net_device *dev)
{ … }
static int can_ctrlmode_ext_fill_info(struct sk_buff *skb,
const struct can_priv *priv)
{ … }
static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
{ … }
static size_t can_get_xstats_size(const struct net_device *dev)
{ … }
static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
{ … }
static int can_newlink(struct net *src_net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[],
struct netlink_ext_ack *extack)
{ … }
static void can_dellink(struct net_device *dev, struct list_head *head)
{ … }
struct rtnl_link_ops can_link_ops __read_mostly = …;
int can_netlink_register(void)
{ … }
void can_netlink_unregister(void)
{ … }