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
dst_ops.h
Go to the documentation of this file.
1
#ifndef _NET_DST_OPS_H
2
#define _NET_DST_OPS_H
3
#include <linux/types.h>
4
#include <
linux/percpu_counter.h
>
5
#include <
linux/cache.h
>
6
7
struct
dst_entry
;
8
struct
kmem_cachep;
9
struct
net_device
;
10
struct
sk_buff
;
11
struct
sock
;
12
13
struct
dst_ops
{
14
unsigned
short
family
;
15
__be16
protocol
;
16
unsigned
int
gc_thresh
;
17
18
int
(*
gc
)(
struct
dst_ops
*
ops
);
19
struct
dst_entry
* (*check)(
struct
dst_entry
*,
__u32
cookie
);
20
unsigned
int
(*
default_advmss
)(
const
struct
dst_entry
*);
21
unsigned
int
(*
mtu
)(
const
struct
dst_entry
*);
22
u32
* (*cow_metrics)(
struct
dst_entry
*,
unsigned
long
);
23
void
(*
destroy
)(
struct
dst_entry
*);
24
void
(*
ifdown
)(
struct
dst_entry
*,
25
struct
net_device
*
dev
,
int
how);
26
struct
dst_entry
* (*negative_advice)(
struct
dst_entry
*);
27
void
(*
link_failure
)(
struct
sk_buff
*);
28
void
(*
update_pmtu
)(
struct
dst_entry
*
dst
,
struct
sock
*
sk
,
29
struct
sk_buff
*
skb
,
u32
mtu
);
30
void
(*
redirect
)(
struct
dst_entry
*
dst
,
struct
sock
*
sk
,
31
struct
sk_buff
*
skb
);
32
int
(*
local_out
)(
struct
sk_buff
*
skb
);
33
struct
neighbour
* (*neigh_lookup)(
const
struct
dst_entry
*
dst
,
34
struct
sk_buff
*
skb
,
35
const
void
*
daddr
);
36
37
struct
kmem_cache
*
kmem_cachep
;
38
39
struct
percpu_counter
pcpuc_entries
____cacheline_aligned_in_smp
;
40
};
41
42
static
inline
int
dst_entries_get_fast(
struct
dst_ops
*
dst
)
43
{
44
return
percpu_counter_read_positive(&dst->pcpuc_entries);
45
}
46
47
static
inline
int
dst_entries_get_slow(
struct
dst_ops
*
dst
)
48
{
49
int
res
;
50
51
local_bh_disable
();
52
res = percpu_counter_sum_positive(&dst->pcpuc_entries);
53
local_bh_enable
();
54
return
res
;
55
}
56
57
static
inline
void
dst_entries_add(
struct
dst_ops
*
dst
,
int
val
)
58
{
59
local_bh_disable
();
60
percpu_counter_add(&dst->pcpuc_entries, val);
61
local_bh_enable
();
62
}
63
64
static
inline
int
dst_entries_init(
struct
dst_ops
*
dst
)
65
{
66
return
percpu_counter_init(&dst->pcpuc_entries, 0);
67
}
68
69
static
inline
void
dst_entries_destroy(
struct
dst_ops
*
dst
)
70
{
71
percpu_counter_destroy
(&dst->pcpuc_entries);
72
}
73
74
#endif
Generated on Thu Jan 10 2013 14:53:03 for Linux Kernel by
1.8.2