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