rtnl_link_ops
struct rtnl_link_ops *ipoib_get_link_ops(void);
struct rtnl_link_ops *ops = ipoib_get_link_ops();
ndev->rtnl_link_ops = ipoib_get_link_ops();
static struct rtnl_link_ops ipoib_link_ops __read_mostly = {
struct rtnl_link_ops *ipoib_get_link_ops(void)
ndev->rtnl_link_ops = ipoib_get_link_ops();
static struct rtnl_link_ops amt_link_ops __read_mostly = {
static struct rtnl_link_ops bareudp_link_ops __read_mostly = {
bond_dev->rtnl_link_ops = &bond_link_ops;
struct rtnl_link_ops bond_link_ops __read_mostly = {
dev->rtnl_link_ops = &can_link_ops;
if (dev->type != ARPHRD_CAN || dev->rtnl_link_ops != &can_link_ops)
struct rtnl_link_ops can_link_ops __read_mostly = {
static struct rtnl_link_ops vcan_link_ops __read_mostly = {
static struct rtnl_link_ops vxcan_link_ops;
static struct rtnl_link_ops vxcan_link_ops = {
static struct rtnl_link_ops dummy_link_ops __read_mostly = {
dev_dummy->rtnl_link_ops = &dummy_link_ops;
if (dev->rtnl_link_ops)
return dev->rtnl_link_ops->kind;
if (!netdev->rtnl_link_ops)
if (!strcmp(netdev->rtnl_link_ops->kind, "openvswitch"))
if (act->dev->rtnl_link_ops &&
!strcmp(act->dev->rtnl_link_ops->kind, "openvswitch")) {
if (!netdev->rtnl_link_ops)
if (!strcmp(netdev->rtnl_link_ops->kind, "openvswitch"))
struct rtnl_link_ops rmnet_link_ops __read_mostly = {
extern struct rtnl_link_ops rmnet_link_ops;
rmnet_dev->rtnl_link_ops = &rmnet_link_ops;
!strcmp(ofdpa_port->bridge_dev->rtnl_link_ops->kind, kind);
static struct rtnl_link_ops geneve_link_ops __read_mostly = {
static struct rtnl_link_ops gtp_link_ops __read_mostly = {
if (dev->rtnl_link_ops != >p_link_ops)
static struct rtnl_link_ops ifb_link_ops __read_mostly = {
dev_ifb->rtnl_link_ops = &ifb_link_ops;
int ipvlan_link_register(struct rtnl_link_ops *ops);
static struct rtnl_link_ops ipvlan_link_ops = {
int ipvlan_link_register(struct rtnl_link_ops *ops)
ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev,
static struct rtnl_link_ops ipvtap_link_ops __read_mostly = {
if (dev->rtnl_link_ops != &ipvtap_link_ops)
static struct rtnl_link_ops macsec_link_ops __read_mostly = {
int macvlan_link_register(struct rtnl_link_ops *ops)
static struct rtnl_link_ops macvlan_link_ops = {
vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill);
static struct rtnl_link_ops macvtap_link_ops __read_mostly = {
if (dev->rtnl_link_ops != &macvtap_link_ops)
static struct rtnl_link_ops nsim_link_ops __read_mostly = {
static struct rtnl_link_ops netkit_link_ops;
static struct rtnl_link_ops netkit_link_ops = {
static struct rtnl_link_ops nlmon_link_ops __read_mostly = {
static struct rtnl_link_ops ovpn_link_ops = {
static struct rtnl_link_ops pfcp_link_ops __read_mostly = {
static struct rtnl_link_ops ppp_link_ops __read_mostly = {
dev->rtnl_link_ops = &ppp_link_ops;
static struct rtnl_link_ops team_link_ops __read_mostly = {
static struct rtnl_link_ops tun_link_ops __read_mostly = {
dev->rtnl_link_ops = &tun_link_ops;
if (dev->rtnl_link_ops != &tun_link_ops)
static struct rtnl_link_ops veth_link_ops;
static struct rtnl_link_ops veth_link_ops = {
static struct rtnl_link_ops vrf_link_ops __read_mostly = {
static struct rtnl_link_ops vsockmon_link_ops __read_mostly = {
static struct rtnl_link_ops vxlan_link_ops __read_mostly = {
static struct rtnl_link_ops vxlan_link_ops;
static struct rtnl_link_ops link_ops __read_mostly = {
if (!dev->rtnl_link_ops || !dev->rtnl_link_ops->kind ||
strcmp(dev->rtnl_link_ops->kind, KBUILD_MODNAME)) {
static struct rtnl_link_ops virt_wifi_link_ops = {
upper_dev->rtnl_link_ops->dellink(upper_dev, &list_kill);
static struct rtnl_link_ops wwan_rtnl_link_ops __read_mostly = {
extern struct rtnl_link_ops can_link_ops;
extern int macvlan_link_register(struct rtnl_link_ops *ops);
const struct rtnl_link_ops *rtnl_link_ops;
return dev->rtnl_link_ops && !strcmp(dev->rtnl_link_ops->kind, "amt");
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "bareudp");
extern struct rtnl_link_ops bond_link_ops;
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "geneve");
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "gretap");
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "ip6gretap");
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "gtp");
struct rtnl_link_ops *rtnl_link_ops;
struct rtnl_link_ops *ops, char *devname);
struct rtnl_link_ops *ops,
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "pfcp");
int rtnl_link_register(struct rtnl_link_ops *ops);
void rtnl_link_unregister(struct rtnl_link_ops *ops);
const struct rtnl_link_ops *ops,
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "vxlan");
new_dev->rtnl_link_ops = &vlan_link_ops;
extern struct rtnl_link_ops vlan_link_ops;
struct rtnl_link_ops vlan_link_ops __read_mostly = {
return netdev->rtnl_link_ops->get_link_net(netdev);
if (!netdev->rtnl_link_ops)
if (!netdev->rtnl_link_ops->get_link_net)
struct rtnl_link_ops batadv_link_ops __read_mostly = {
extern struct rtnl_link_ops batadv_link_ops;
dev->rtnl_link_ops = &br_link_ops;
struct rtnl_link_ops br_link_ops __read_mostly = {
extern struct rtnl_link_ops br_link_ops;
static struct rtnl_link_ops ipcaif_link_ops __read_mostly = {
if (!(dev->rtnl_link_ops && dev->rtnl_link_initializing))
if (!(dev->rtnl_link_ops && dev->rtnl_link_initializing))
if (dev->rtnl_link_ops && !dev->rtnl_link_ops->netns_refund)
if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink)
dev->rtnl_link_ops->dellink(dev, &dev_kill_list);
if (dev->rtnl_link_ops && dev->rtnl_link_ops->get_link_net) {
struct net *link_net = dev->rtnl_link_ops->get_link_net(dev);
if (dev->rtnl_link_ops || rtnl_have_link_slave_info(dev)) {
static struct rtnl_link_ops *linkinfo_to_kind_ops(const struct nlattr *nla,
struct rtnl_link_ops *ops = NULL;
const struct rtnl_link_ops *kind_ops)
if (kind_ops && dev->rtnl_link_ops != kind_ops)
const struct rtnl_link_ops *kind_ops)
struct rtnl_link_ops *kind_ops = NULL;
const struct rtnl_link_ops *ops;
ops = dev->rtnl_link_ops;
const struct rtnl_link_ops *ops;
ops = dev->rtnl_link_ops;
const struct rtnl_link_ops *ops;
ops = dev->rtnl_link_ops;
const struct rtnl_link_ops *ops,
dev->rtnl_link_ops = ops;
const struct rtnl_link_ops *ops,
if (!ops || ops != dev->rtnl_link_ops || !ops->changelink)
const struct rtnl_link_ops *m_ops = NULL;
m_ops = master_dev->rtnl_link_ops;
const struct rtnl_link_ops *ops,
static struct net *rtnl_get_peer_net(const struct rtnl_link_ops *ops,
const struct rtnl_link_ops *ops,
struct rtnl_link_ops *ops = NULL;
static struct rtnl_link_ops *rtnl_link_ops_get(const char *kind, int *srcu_index)
struct rtnl_link_ops *ops;
static void rtnl_link_ops_put(struct rtnl_link_ops *ops, int srcu_index)
int rtnl_link_register(struct rtnl_link_ops *ops)
const struct rtnl_link_ops *ops = dev->rtnl_link_ops;
struct rtnl_link_ops *tmp;
const struct rtnl_link_ops *ops = NULL;
ops = master->rtnl_link_ops;
const struct rtnl_link_ops *ops = dev->rtnl_link_ops;
const struct rtnl_link_ops *ops = NULL;
ops = master->rtnl_link_ops;
static void __rtnl_kill_links(struct net *net, struct rtnl_link_ops *ops)
if (dev->rtnl_link_ops == ops)
void rtnl_link_unregister(struct rtnl_link_ops *ops)
const struct rtnl_link_ops *ops;
ops = master_dev->rtnl_link_ops;
const struct rtnl_link_ops *ops = dev->rtnl_link_ops;
if (master_dev && master_dev->rtnl_link_ops)
const struct rtnl_link_ops *ops;
ops = master_dev->rtnl_link_ops;
const struct rtnl_link_ops *ops = dev->rtnl_link_ops;
struct rtnl_link_ops dsa_link_ops __read_mostly = {
extern struct rtnl_link_ops dsa_link_ops __read_mostly;
user_dev->rtnl_link_ops = &dsa_link_ops;
} else if (dev->rtnl_link_ops) {
strscpy(rsp->info.driver, dev->rtnl_link_ops->kind,
const struct rtnl_link_ops *ops;
ops = master->dev->rtnl_link_ops;
static struct rtnl_link_ops hsr_link_ops __read_mostly = {
static struct rtnl_link_ops lowpan_link_ops __read_mostly = {
static struct rtnl_link_ops ipgre_link_ops __read_mostly;
static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
static struct rtnl_link_ops ipgre_tap_ops __read_mostly = {
static struct rtnl_link_ops erspan_link_ops __read_mostly = {
if (strcmp(dev->rtnl_link_ops->kind, "erspan"))
struct rtnl_link_ops *ops, char *devname)
itn->rtnl_link_ops = ops;
struct rtnl_link_ops *ops,
if (dev->rtnl_link_ops == ops)
const struct rtnl_link_ops *ops,
dev->rtnl_link_ops = ops;
dev = __ip_tunnel_create(net, itn->rtnl_link_ops, parms);
static struct rtnl_link_ops vti_link_ops __read_mostly;
static struct rtnl_link_ops vti_link_ops __read_mostly = {
static struct rtnl_link_ops ipip_link_ops __read_mostly;
static struct rtnl_link_ops ipip_link_ops __read_mostly = {
if (dev->rtnl_link_ops == &ip6gre_link_ops ||
dev->rtnl_link_ops == &ip6gre_tap_ops ||
dev->rtnl_link_ops == &ip6erspan_tap_ops)
ign->fb_tunnel_dev->rtnl_link_ops = &ip6gre_link_ops;
static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
static struct rtnl_link_ops ip6gre_tap_ops __read_mostly = {
static struct rtnl_link_ops ip6erspan_tap_ops __read_mostly = {
dev->rtnl_link_ops = &ip6gre_link_ops;
static struct rtnl_link_ops ip6gre_link_ops __read_mostly;
static struct rtnl_link_ops ip6gre_tap_ops __read_mostly;
static struct rtnl_link_ops ip6erspan_tap_ops __read_mostly;
static struct rtnl_link_ops ip6_link_ops __read_mostly = {
if (dev->rtnl_link_ops == &ip6_link_ops)
ip6n->fb_tnl_dev->rtnl_link_ops = &ip6_link_ops;
dev->rtnl_link_ops = &ip6_link_ops;
static struct rtnl_link_ops ip6_link_ops __read_mostly;
static struct rtnl_link_ops vti6_link_ops __read_mostly = {
ip6n->fb_tnl_dev->rtnl_link_ops = &vti6_link_ops;
dev->rtnl_link_ops = &vti6_link_ops;
static struct rtnl_link_ops vti6_link_ops __read_mostly;
static struct rtnl_link_ops sit_link_ops __read_mostly = {
if (dev->rtnl_link_ops == &sit_link_ops)
sitn->fb_tunnel_dev->rtnl_link_ops = &sit_link_ops;
dev->rtnl_link_ops = &sit_link_ops;
static struct rtnl_link_ops sit_link_ops __read_mostly;
if (!in || !in->rtnl_link_ops)
strscpy_pad((char *)dest, in->rtnl_link_ops->kind, IFNAMSIZ);
if (!out || !out->rtnl_link_ops)
strscpy_pad((char *)dest, out->rtnl_link_ops->kind, IFNAMSIZ);
netdev->rtnl_link_ops = &internal_dev_link_ops;
static struct rtnl_link_ops internal_dev_link_ops __read_mostly = {
dev->rtnl_link_ops = &xfrmi_link_ops;
static struct rtnl_link_ops xfrmi_link_ops __read_mostly;
static struct rtnl_link_ops xfrmi_link_ops __read_mostly = {