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
bitarray.h
Go to the documentation of this file.
1
/* Copyright (C) 2006-2012 B.A.T.M.A.N. contributors:
2
*
3
* Simon Wunderlich, Marek Lindner
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_BITARRAY_H_
21
#define _NET_BATMAN_ADV_BITARRAY_H_
22
23
/* Returns 1 if the corresponding bit in the given seq_bits indicates true
24
* and curr_seqno is within range of last_seqno. Otherwise returns 0.
25
*/
26
static
inline
int
batadv_test_bit(
const
unsigned
long
*seq_bits,
27
uint32_t
last_seqno,
uint32_t
curr_seqno)
28
{
29
int32_t
diff;
30
31
diff = last_seqno - curr_seqno;
32
if
(diff < 0 || diff >=
BATADV_TQ_LOCAL_WINDOW_SIZE
)
33
return
0;
34
else
35
return
test_bit
(diff, seq_bits) != 0;
36
}
37
38
/* turn corresponding bit on, so we can remember that we got the packet */
39
static
inline
void
batadv_set_bit(
unsigned
long
*seq_bits,
int32_t
n
)
40
{
41
/* if too old, just drop it */
42
if
(n < 0 || n >=
BATADV_TQ_LOCAL_WINDOW_SIZE
)
43
return
;
44
45
set_bit
(n, seq_bits);
/* turn the position on */
46
}
47
48
/* receive and process one packet, returns 1 if received seq_num is considered
49
* new, 0 if old
50
*/
51
int
batadv_bit_get_packet
(
void
*
priv
,
unsigned
long
*seq_bits,
52
int32_t
seq_num_diff,
int
set_mark);
53
54
#endif
/* _NET_BATMAN_ADV_BITARRAY_H_ */
Generated on Thu Jan 10 2013 14:56:51 for Linux Kernel by
1.8.2