mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ipv4: Add wrappers for neigh_lookup() and neigh_create().
neigh_lookup() accepts struct neigh_table *tbl and struct net_device *dev, and both of them must exist in the same netns. It is error-prone to require callers to fetch a netns and get neigh_table, which might belong to a different netns than dev_net(dev). Let's add IPv4-specific wrappers for neigh_lookup() and neigh_create() that always fetch netns from dev. Note that we do not add wrappers for __neigh_lookup() and __neigh_lookup_errno(), which we will remove later. __neigh_lookup_errno() is a simple combo of neigh_lookup() and neigh_create(). __neigh_lookup() is almost the same but converts errno from neigh_create() to NULL. So both names are confusing. For IPv4, __neigh_lookup_errno() is only used in arp_req_set() and is not worth a new wrapper. Instead, it should be inlined. arp_process() uses __neigh_lookup(create=0) but it should simply be neigh_lookup(), and then __neigh_lookup(create=1) is only used in arp_process(), so this should be inlined too. Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com> Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/20261003212336.1304988-4-kuniyu@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3e33cdcf54
commit
33ea2463c4
|
|
@ -51,6 +51,22 @@ static inline struct neighbour *__ipv4_neigh_lookup(struct net_device *dev, u32
|
|||
return n;
|
||||
}
|
||||
|
||||
static inline struct neighbour *ipv4_neigh_lookup(struct net_device *dev,
|
||||
const void *pkey)
|
||||
{
|
||||
struct neigh_table *tbl = arp_table(dev_net(dev));
|
||||
|
||||
return neigh_lookup(tbl, pkey, dev);
|
||||
}
|
||||
|
||||
static inline struct neighbour *ipv4_neigh_create(struct net_device *dev,
|
||||
const void *pkey)
|
||||
{
|
||||
struct neigh_table *tbl = arp_table(dev_net(dev));
|
||||
|
||||
return neigh_create(tbl, pkey, dev);
|
||||
}
|
||||
|
||||
static inline void __ipv4_confirm_neigh(struct net_device *dev, u32 key)
|
||||
{
|
||||
struct neighbour *n;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user