Contributors: 16
	  
        
          | Author | 
          Tokens | 
          Token Proportion | 
          Commits | 
          Commit Proportion | 
        
	  
	  
        
        
          | Linus Torvalds (pre-git) | 
          148 | 
          36.54% | 
          16 | 
          43.24% | 
        
        
          | David S. Miller | 
          138 | 
          34.07% | 
          3 | 
          8.11% | 
        
        
          | Eric W. Biedermann | 
          27 | 
          6.67% | 
          1 | 
          2.70% | 
        
        
          | Jim Westfall | 
          16 | 
          3.95% | 
          1 | 
          2.70% | 
        
        
          | David Ahern | 
          13 | 
          3.21% | 
          1 | 
          2.70% | 
        
        
          | Shmulik Hen | 
          12 | 
          2.96% | 
          1 | 
          2.70% | 
        
        
          | Pavel Emelyanov | 
          11 | 
          2.72% | 
          2 | 
          5.41% | 
        
        
          | Julian Anastasov | 
          9 | 
          2.22% | 
          1 | 
          2.70% | 
        
        
          | Al Viro | 
          7 | 
          1.73% | 
          3 | 
          8.11% | 
        
        
          | Jan Engelhardt | 
          6 | 
          1.48% | 
          1 | 
          2.70% | 
        
        
          | Eric Dumazet | 
          6 | 
          1.48% | 
          2 | 
          5.41% | 
        
        
          | Ido Schimmel | 
          5 | 
          1.23% | 
          1 | 
          2.70% | 
        
        
          | Maxim Levitsky | 
          4 | 
          0.99% | 
          1 | 
          2.70% | 
        
        
          | Elena Reshetova | 
          1 | 
          0.25% | 
          1 | 
          2.70% | 
        
        
          | Greg Kroah-Hartman | 
          1 | 
          0.25% | 
          1 | 
          2.70% | 
        
        
          | Yajun Deng | 
          1 | 
          0.25% | 
          1 | 
          2.70% | 
        
	  
	  
        
          | Total | 
          405 | 
           | 
          37 | 
           | 
	    
	  
    
 
/* SPDX-License-Identifier: GPL-2.0 */
/* linux/net/inet/arp.h */
#ifndef _ARP_H
#define _ARP_H
#include <linux/if_arp.h>
#include <linux/hash.h>
#include <net/neighbour.h>
extern struct neigh_table arp_tbl;
static inline u32 arp_hashfn(const void *pkey, const struct net_device *dev, u32 *hash_rnd)
{
	u32 key = *(const u32 *)pkey;
	u32 val = key ^ hash32_ptr(dev);
	return val * hash_rnd[0];
}
#ifdef CONFIG_INET
static inline struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev, u32 key)
{
	if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))
		key = INADDR_ANY;
	return ___neigh_lookup_noref(&arp_tbl, neigh_key_eq32, arp_hashfn, &key, dev);
}
#else
static inline
struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev, u32 key)
{
	return NULL;
}
#endif
static inline struct neighbour *__ipv4_neigh_lookup(struct net_device *dev, u32 key)
{
	struct neighbour *n;
	rcu_read_lock();
	n = __ipv4_neigh_lookup_noref(dev, key);
	if (n && !refcount_inc_not_zero(&n->refcnt))
		n = NULL;
	rcu_read_unlock();
	return n;
}
static inline void __ipv4_confirm_neigh(struct net_device *dev, u32 key)
{
	struct neighbour *n;
	rcu_read_lock();
	n = __ipv4_neigh_lookup_noref(dev, key);
	neigh_confirm(n);
	rcu_read_unlock();
}
void arp_init(void);
int arp_ioctl(struct net *net, unsigned int cmd, void __user *arg);
void arp_send(int type, int ptype, __be32 dest_ip,
	      struct net_device *dev, __be32 src_ip,
	      const unsigned char *dest_hw,
	      const unsigned char *src_hw, const unsigned char *th);
int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir);
void arp_ifdown(struct net_device *dev);
int arp_invalidate(struct net_device *dev, __be32 ip, bool force);
struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,
			   struct net_device *dev, __be32 src_ip,
			   const unsigned char *dest_hw,
			   const unsigned char *src_hw,
			   const unsigned char *target_hw);
void arp_xmit(struct sk_buff *skb);
#endif	/* _ARP_H */