![Sven Eckelmann](/assets/img/avatar_default.png)
batman-adv doesn't follow the style for multiline comments that David S. Miller prefers. All comments should be reformatted to follow this consistent style to make the code slightly more readable. Signed-off-by: Sven Eckelmann <sven@narfation.org>
70 lines
2 KiB
C
70 lines
2 KiB
C
/* Copyright (C) 2007-2012 B.A.T.M.A.N. contributors:
|
|
*
|
|
* Marek Lindner, Simon Wunderlich
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of version 2 of the GNU General Public
|
|
* License as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301, USA
|
|
*/
|
|
|
|
#ifndef _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
|
#define _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
|
|
|
enum hard_if_state {
|
|
IF_NOT_IN_USE,
|
|
IF_TO_BE_REMOVED,
|
|
IF_INACTIVE,
|
|
IF_ACTIVE,
|
|
IF_TO_BE_ACTIVATED,
|
|
IF_I_WANT_YOU
|
|
};
|
|
|
|
extern struct notifier_block batadv_hard_if_notifier;
|
|
|
|
struct hard_iface*
|
|
batadv_hardif_get_by_netdev(const struct net_device *net_dev);
|
|
int batadv_hardif_enable_interface(struct hard_iface *hard_iface,
|
|
const char *iface_name);
|
|
void batadv_hardif_disable_interface(struct hard_iface *hard_iface);
|
|
void batadv_hardif_remove_interfaces(void);
|
|
int batadv_hardif_min_mtu(struct net_device *soft_iface);
|
|
void batadv_update_min_mtu(struct net_device *soft_iface);
|
|
void batadv_hardif_free_rcu(struct rcu_head *rcu);
|
|
bool batadv_is_wifi_iface(int ifindex);
|
|
|
|
static inline void hardif_free_ref(struct hard_iface *hard_iface)
|
|
{
|
|
if (atomic_dec_and_test(&hard_iface->refcount))
|
|
call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu);
|
|
}
|
|
|
|
static inline struct hard_iface *primary_if_get_selected(
|
|
struct bat_priv *bat_priv)
|
|
{
|
|
struct hard_iface *hard_iface;
|
|
|
|
rcu_read_lock();
|
|
hard_iface = rcu_dereference(bat_priv->primary_if);
|
|
if (!hard_iface)
|
|
goto out;
|
|
|
|
if (!atomic_inc_not_zero(&hard_iface->refcount))
|
|
hard_iface = NULL;
|
|
|
|
out:
|
|
rcu_read_unlock();
|
|
return hard_iface;
|
|
}
|
|
|
|
#endif /* _NET_BATMAN_ADV_HARD_INTERFACE_H_ */
|