Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
net
arp.h
Go to the documentation of this file.
1
/* linux/net/inet/arp.h */
2
#ifndef _ARP_H
3
#define _ARP_H
4
5
#include <linux/if_arp.h>
6
#include <linux/hash.h>
7
#include <
net/neighbour.h
>
8
9
10
extern
struct
neigh_table
arp_tbl
;
11
12
static
inline
u32
arp_hashfn(
u32
key
,
const
struct
net_device
*
dev
,
u32
hash_rnd)
13
{
14
u32
val
= key ^ hash32_ptr(dev);
15
16
return
val * hash_rnd;
17
}
18
19
static
inline
struct
neighbour
*__ipv4_neigh_lookup_noref(
struct
net_device
*
dev
,
u32
key
)
20
{
21
struct
neigh_hash_table
*nht =
rcu_dereference_bh
(
arp_tbl
.nht);
22
struct
neighbour
*
n
;
23
u32
hash_val;
24
25
hash_val = arp_hashfn(key, dev, nht->
hash_rnd
[0]) >> (32 - nht->
hash_shift
);
26
for
(n =
rcu_dereference_bh
(nht->
hash_buckets
[hash_val]);
27
n !=
NULL
;
28
n =
rcu_dereference_bh
(n->
next
)) {
29
if
(n->
dev
== dev && *(
u32
*)n->
primary_key
==
key
)
30
return
n;
31
}
32
33
return
NULL
;
34
}
35
36
static
inline
struct
neighbour
*__ipv4_neigh_lookup(
struct
net_device
*dev,
u32
key)
37
{
38
struct
neighbour
*
n
;
39
40
rcu_read_lock_bh();
41
n = __ipv4_neigh_lookup_noref(dev, key);
42
if
(n && !
atomic_inc_not_zero
(&n->
refcnt
))
43
n =
NULL
;
44
rcu_read_unlock_bh();
45
46
return
n
;
47
}
48
49
extern
void
arp_init
(
void
);
50
extern
int
arp_find
(
unsigned
char
*haddr,
struct
sk_buff
*
skb
);
51
extern
int
arp_ioctl
(
struct
net
*
net
,
unsigned
int
cmd
,
void
__user *
arg
);
52
extern
void
arp_send
(
int
type
,
int
ptype,
__be32
dest_ip,
53
struct
net_device
*dev,
__be32
src_ip,
54
const
unsigned
char
*dest_hw,
55
const
unsigned
char
*src_hw,
const
unsigned
char
*
th
);
56
extern
int
arp_mc_map
(
__be32
addr
,
u8
*haddr,
struct
net_device
*dev,
int
dir);
57
extern
void
arp_ifdown
(
struct
net_device
*dev);
58
59
extern
struct
sk_buff
*
arp_create
(
int
type
,
int
ptype,
__be32
dest_ip,
60
struct
net_device
*dev,
__be32
src_ip,
61
const
unsigned
char
*dest_hw,
62
const
unsigned
char
*src_hw,
63
const
unsigned
char
*target_hw);
64
extern
void
arp_xmit
(
struct
sk_buff
*
skb
);
65
int
arp_invalidate
(
struct
net_device
*dev,
__be32
ip
);
66
67
#endif
/* _ARP_H */
Generated on Thu Jan 10 2013 14:52:59 for Linux Kernel by
1.8.2