blob: 723bde501c648459ccf7bef70217492696252a51 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* linux/net/inet/arp.h */
2#ifndef _ARP_H
3#define _ARP_H
4
5#include <linux/if_arp.h>
6#include <net/neighbour.h>
7
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
9extern struct neigh_table arp_tbl;
10
David S. Millerf610b742011-07-11 01:37:28 -070011static inline u32 arp_hashfn(u32 key, const struct net_device *dev, u32 hash_rnd)
12{
13 u32 val = key ^ dev->ifindex;
14
15 return val * hash_rnd;
16}
17
Linus Torvalds1da177e2005-04-16 15:20:36 -070018extern void arp_init(void);
Linus Torvalds1da177e2005-04-16 15:20:36 -070019extern int arp_find(unsigned char *haddr, struct sk_buff *skb);
Pavel Emelyanov32e569b2007-12-16 13:30:39 -080020extern int arp_ioctl(struct net *net, unsigned int cmd, void __user *arg);
Al Viroed9bad02006-09-27 18:36:36 -070021extern void arp_send(int type, int ptype, __be32 dest_ip,
22 struct net_device *dev, __be32 src_ip,
Jan Engelhardtabfdf1c2008-01-31 03:59:24 -080023 const unsigned char *dest_hw,
24 const unsigned char *src_hw, const unsigned char *th);
Linus Torvalds1da177e2005-04-16 15:20:36 -070025extern int arp_bind_neighbour(struct dst_entry *dst);
Al Viro714e85b2006-11-14 20:51:49 -080026extern int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir);
Linus Torvalds1da177e2005-04-16 15:20:36 -070027extern void arp_ifdown(struct net_device *dev);
28
Al Viroed9bad02006-09-27 18:36:36 -070029extern struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,
30 struct net_device *dev, __be32 src_ip,
Jan Engelhardtabfdf1c2008-01-31 03:59:24 -080031 const unsigned char *dest_hw,
32 const unsigned char *src_hw,
33 const unsigned char *target_hw);
Linus Torvalds1da177e2005-04-16 15:20:36 -070034extern void arp_xmit(struct sk_buff *skb);
Maxim Levitsky545ecdc2011-01-08 13:57:12 +000035int arp_invalidate(struct net_device *dev, __be32 ip);
Linus Torvalds1da177e2005-04-16 15:20:36 -070036
Linus Torvalds1da177e2005-04-16 15:20:36 -070037#endif /* _ARP_H */