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
inet_frag.h
Go to the documentation of this file.
1
#ifndef __NET_FRAG_H__
2
#define __NET_FRAG_H__
3
4
struct
netns_frags
{
5
int
nqueues
;
6
atomic_t
mem
;
7
struct
list_head
lru_list
;
8
9
/* sysctls */
10
int
timeout
;
11
int
high_thresh
;
12
int
low_thresh
;
13
};
14
15
struct
inet_frag_queue
{
16
struct
hlist_node
list
;
17
struct
netns_frags
*
net
;
18
struct
list_head
lru_list
;
/* lru list member */
19
spinlock_t
lock
;
20
atomic_t
refcnt
;
21
struct
timer_list
timer
;
/* when will this queue expire? */
22
struct
sk_buff
*
fragments
;
/* list of received fragments */
23
struct
sk_buff
*
fragments_tail
;
24
ktime_t
stamp
;
25
int
len
;
/* total length of orig datagram */
26
int
meat
;
27
__u8
last_in
;
/* first/last segment arrived? */
28
29
#define INET_FRAG_COMPLETE 4
30
#define INET_FRAG_FIRST_IN 2
31
#define INET_FRAG_LAST_IN 1
32
33
u16
max_size
;
34
};
35
36
#define INETFRAGS_HASHSZ 64
37
38
struct
inet_frags
{
39
struct
hlist_head
hash
[
INETFRAGS_HASHSZ
];
40
rwlock_t
lock
;
41
u32
rnd
;
42
int
qsize
;
43
int
secret_interval
;
44
struct
timer_list
secret_timer
;
45
46
unsigned
int
(*
hashfn
)(
struct
inet_frag_queue
*);
47
void
(*
constructor
)(
struct
inet_frag_queue
*
q
,
48
void
*
arg
);
49
void
(*
destructor
)(
struct
inet_frag_queue
*);
50
void
(*
skb_free
)(
struct
sk_buff
*);
51
bool
(*
match
)(
struct
inet_frag_queue
*
q
,
void
*
arg
);
52
void
(*
frag_expire
)(
unsigned
long
data
);
53
};
54
55
void
inet_frags_init
(
struct
inet_frags
*);
56
void
inet_frags_fini
(
struct
inet_frags
*);
57
58
void
inet_frags_init_net
(
struct
netns_frags
*nf);
59
void
inet_frags_exit_net
(
struct
netns_frags
*nf,
struct
inet_frags
*
f
);
60
61
void
inet_frag_kill
(
struct
inet_frag_queue
*
q
,
struct
inet_frags
*
f
);
62
void
inet_frag_destroy
(
struct
inet_frag_queue
*
q
,
63
struct
inet_frags
*
f
,
int
*
work
);
64
int
inet_frag_evictor
(
struct
netns_frags
*nf,
struct
inet_frags
*
f
,
bool
force
);
65
struct
inet_frag_queue
*
inet_frag_find
(
struct
netns_frags
*nf,
66
struct
inet_frags
*
f
,
void
*
key
,
unsigned
int
hash
)
67
__releases
(&
f
->lock);
68
69
static
inline
void
inet_frag_put(
struct
inet_frag_queue
*
q
,
struct
inet_frags
*
f
)
70
{
71
if
(
atomic_dec_and_test
(&q->
refcnt
))
72
inet_frag_destroy
(q, f,
NULL
);
73
}
74
75
#endif
Generated on Thu Jan 10 2013 14:53:05 for Linux Kernel by
1.8.2