Lines Matching defs:ifindex
215 static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
217 return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)];
393 dev_index_hash(net, dev->ifindex));
399 /* We reserved the ifindex, this can't fail */
400 WARN_ON(xa_store(&net->dev_by_index, dev->ifindex, dev, GFP_KERNEL));
415 xa_erase(&net->dev_by_index, dev->ifindex);
648 * Indicates the ifindex the interface is linked to.
649 * Physical interfaces have the same 'ifindex' and 'iflink' values.
657 return dev->ifindex;
818 * __dev_get_by_index - find a device by its ifindex
820 * @ifindex: index of device
829 struct net_device *__dev_get_by_index(struct net *net, int ifindex)
832 struct hlist_head *head = dev_index_hash(net, ifindex);
835 if (dev->ifindex == ifindex)
843 * dev_get_by_index_rcu - find a device by its ifindex
845 * @ifindex: index of device
853 struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex)
856 struct hlist_head *head = dev_index_hash(net, ifindex);
859 if (dev->ifindex == ifindex)
867 struct net_device *dev_get_by_index(struct net *net, int ifindex)
872 dev = dev_get_by_index_rcu(net, ifindex);
880 * netdev_get_by_index() - find a device by its ifindex
882 * @ifindex: index of device
891 struct net_device *netdev_get_by_index(struct net *net, int ifindex,
896 dev = dev_get_by_index(net, ifindex);
929 * netdev_get_name - get a netdevice name, knowing its ifindex.
932 * @ifindex: the ifindex of the interface to get the name from.
934 int netdev_get_name(struct net *net, char *name, int ifindex)
942 dev = dev_get_by_index_rcu(net, ifindex);
5368 skb->skb_iif = skb->dev->ifindex;
9432 u32 ifindex = 0;
9436 ifindex = xdp_link->dev->ifindex;
9439 seq_printf(seq, "ifindex:\t%u\n", ifindex);
9446 u32 ifindex = 0;
9450 ifindex = xdp_link->dev->ifindex;
9453 info->xdp.ifindex = ifindex;
9616 * dev_index_reserve() - allocate an ifindex in a namespace
9618 * @ifindex: requested ifindex, pass %0 to get one allocated
9620 * Allocate a ifindex for a new device. Caller must either use the ifindex
9626 static int dev_index_reserve(struct net *net, u32 ifindex)
9630 if (ifindex > INT_MAX) {
9635 if (!ifindex)
9636 err = xa_alloc_cyclic(&net->dev_by_index, &ifindex, NULL,
9637 xa_limit_31b, &net->ifindex, GFP_KERNEL);
9639 err = xa_insert(&net->dev_by_index, ifindex, NULL, GFP_KERNEL);
9643 return ifindex;
9646 static void dev_index_release(struct net *net, int ifindex)
9649 WARN_ON(xa_erase(&net->dev_by_index, ifindex));
10171 ret = dev_index_reserve(net, dev->ifindex);
10174 dev->ifindex = ret;
10278 dev_index_release(net, dev->ifindex);
11171 /* If there is an ifindex conflict assign a new one */
11172 err = dev_index_reserve(net, dev->ifindex);
11225 dev->ifindex = new_ifindex;
11517 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);