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
net
batman-adv
unicast.h
Go to the documentation of this file.
1
/* Copyright (C) 2010-2012 B.A.T.M.A.N. contributors:
2
*
3
* Andreas Langer
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of version 2 of the GNU General Public
7
* License as published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17
* 02110-1301, USA
18
*/
19
20
#ifndef _NET_BATMAN_ADV_UNICAST_H_
21
#define _NET_BATMAN_ADV_UNICAST_H_
22
23
#include "
packet.h
"
24
25
#define BATADV_FRAG_TIMEOUT 10000
/* purge frag list entries after time in ms */
26
#define BATADV_FRAG_BUFFER_SIZE 6
/* number of list elements in buffer */
27
28
int
batadv_frag_reassemble_skb
(
struct
sk_buff
*
skb
,
29
struct
batadv_priv
*bat_priv,
30
struct
sk_buff
**new_skb);
31
void
batadv_frag_list_free
(
struct
list_head
*
head
);
32
int
batadv_unicast_send_skb
(
struct
sk_buff
*
skb
,
struct
batadv_priv
*bat_priv);
33
int
batadv_frag_send_skb
(
struct
sk_buff
*
skb
,
struct
batadv_priv
*bat_priv,
34
struct
batadv_hard_iface
*hard_iface,
35
const
uint8_t
dstaddr[]);
36
37
static
inline
int
batadv_frag_can_reassemble(
const
struct
sk_buff
*
skb
,
int
mtu)
38
{
39
const
struct
batadv_unicast_frag_packet
*unicast_packet;
40
int
uneven_correction = 0;
41
unsigned
int
merged_size;
42
43
unicast_packet = (
struct
batadv_unicast_frag_packet
*)skb->
data
;
44
45
if
(unicast_packet->
flags
&
BATADV_UNI_FRAG_LARGETAIL
) {
46
if
(unicast_packet->
flags
&
BATADV_UNI_FRAG_HEAD
)
47
uneven_correction = 1;
48
else
49
uneven_correction = -1;
50
}
51
52
merged_size = (skb->
len
-
sizeof
(*unicast_packet)) * 2;
53
merged_size +=
sizeof
(
struct
batadv_unicast_packet
) + uneven_correction;
54
55
return
merged_size <= mtu;
56
}
57
58
#endif
/* _NET_BATMAN_ADV_UNICAST_H_ */
Generated on Thu Jan 10 2013 14:56:54 for Linux Kernel by
1.8.2