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
hard-interface.h
Go to the documentation of this file.
1
/* Copyright (C) 2007-2012 B.A.T.M.A.N. contributors:
2
*
3
* Marek Lindner, Simon Wunderlich
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_HARD_INTERFACE_H_
21
#define _NET_BATMAN_ADV_HARD_INTERFACE_H_
22
23
enum
batadv_hard_if_state
{
24
BATADV_IF_NOT_IN_USE
,
25
BATADV_IF_TO_BE_REMOVED
,
26
BATADV_IF_INACTIVE
,
27
BATADV_IF_ACTIVE
,
28
BATADV_IF_TO_BE_ACTIVATED
,
29
BATADV_IF_I_WANT_YOU
,
30
};
31
32
extern
struct
notifier_block
batadv_hard_if_notifier
;
33
34
struct
batadv_hard_iface
*
35
batadv_hardif_get_by_netdev
(
const
struct
net_device
*
net_dev
);
36
int
batadv_hardif_enable_interface
(
struct
batadv_hard_iface
*hard_iface,
37
const
char
*iface_name);
38
void
batadv_hardif_disable_interface
(
struct
batadv_hard_iface
*hard_iface);
39
void
batadv_hardif_remove_interfaces
(
void
);
40
int
batadv_hardif_min_mtu
(
struct
net_device
*
soft_iface
);
41
void
batadv_update_min_mtu
(
struct
net_device
*
soft_iface
);
42
void
batadv_hardif_free_rcu
(
struct
rcu_head
*
rcu
);
43
bool
batadv_is_wifi_iface
(
int
ifindex);
44
45
static
inline
void
46
batadv_hardif_free_ref(
struct
batadv_hard_iface
*hard_iface)
47
{
48
if
(
atomic_dec_and_test
(&hard_iface->
refcount
))
49
call_rcu
(&hard_iface->
rcu
,
batadv_hardif_free_rcu
);
50
}
51
52
static
inline
struct
batadv_hard_iface
*
53
batadv_primary_if_get_selected(
struct
batadv_priv
*bat_priv)
54
{
55
struct
batadv_hard_iface
*hard_iface;
56
57
rcu_read_lock();
58
hard_iface =
rcu_dereference
(bat_priv->
primary_if
);
59
if
(!hard_iface)
60
goto
out
;
61
62
if
(!
atomic_inc_not_zero
(&hard_iface->
refcount
))
63
hard_iface =
NULL
;
64
65
out
:
66
rcu_read_unlock();
67
return
hard_iface;
68
}
69
70
#endif
/* _NET_BATMAN_ADV_HARD_INTERFACE_H_ */
Generated on Thu Jan 10 2013 14:56:52 for Linux Kernel by
1.8.2