2017-11-19 15:05:11 +01:00
/* SPDX-License-Identifier: GPL-2.0 */
2021-01-01 00:00:01 +01:00
/* Copyright (C) B.A.T.M.A.N. contributors:
2012-01-22 20:00:19 +01:00
*
* Simon Wunderlich
*/
# ifndef _NET_BATMAN_ADV_BLA_H_
# define _NET_BATMAN_ADV_BLA_H_
2015-04-17 19:40:28 +02:00
# include "main.h"
2016-11-24 16:11:01 +01:00
# include <linux/compiler.h>
2019-05-24 20:11:17 +02:00
# include <linux/netdevice.h>
# include <linux/netlink.h>
# include <linux/skbuff.h>
2016-11-24 16:11:01 +01:00
# include <linux/stddef.h>
2015-04-17 19:40:28 +02:00
# include <linux/types.h>
2016-11-24 16:11:01 +01:00
/**
2017-12-02 19:51:47 +01:00
* batadv_bla_is_loopdetect_mac ( ) - check if the mac address is from a loop
* detect frame sent by bridge loop avoidance
2016-11-24 16:11:01 +01:00
* @ mac : mac address to check
*
* Return : true if the it looks like a loop detect frame
* ( mac starts with BA : BE ) , false otherwise
*/
static inline bool batadv_bla_is_loopdetect_mac ( const uint8_t * mac )
{
if ( mac [ 0 ] = = 0xba & & mac [ 1 ] = = 0xbe )
return true ;
return false ;
}
2012-01-22 20:00:27 +01:00
# ifdef CONFIG_BATMAN_ADV_BLA
2016-02-22 21:02:39 +01:00
bool batadv_bla_rx ( struct batadv_priv * bat_priv , struct sk_buff * skb ,
2020-09-15 09:54:09 +02:00
unsigned short vid , int packet_type ) ;
2016-02-22 21:02:39 +01:00
bool batadv_bla_tx ( struct batadv_priv * bat_priv , struct sk_buff * skb ,
unsigned short vid ) ;
bool batadv_bla_is_backbone_gw ( struct sk_buff * skb ,
struct batadv_orig_node * orig_node ,
int hdr_size ) ;
2016-07-03 13:31:45 +02:00
int batadv_bla_claim_dump ( struct sk_buff * msg , struct netlink_callback * cb ) ;
2016-07-03 13:31:47 +02:00
int batadv_bla_backbone_dump ( struct sk_buff * msg , struct netlink_callback * cb ) ;
2015-05-26 18:34:26 +02:00
bool batadv_bla_is_backbone_gw_orig ( struct batadv_priv * bat_priv , u8 * orig ,
2013-08-07 18:28:56 +02:00
unsigned short vid ) ;
2016-02-22 21:02:39 +01:00
bool batadv_bla_check_bcast_duplist ( struct batadv_priv * bat_priv ,
struct sk_buff * skb ) ;
2012-06-05 22:31:31 +02:00
void batadv_bla_update_orig_address ( struct batadv_priv * bat_priv ,
struct batadv_hard_iface * primary_if ,
struct batadv_hard_iface * oldif ) ;
2015-11-09 16:20:52 +01:00
void batadv_bla_status_update ( struct net_device * net_dev ) ;
2012-06-05 22:31:31 +02:00
int batadv_bla_init ( struct batadv_priv * bat_priv ) ;
void batadv_bla_free ( struct batadv_priv * bat_priv ) ;
2016-09-05 13:20:25 +02:00
# ifdef CONFIG_BATMAN_ADV_DAT
bool batadv_bla_check_claim ( struct batadv_priv * bat_priv , u8 * addr ,
unsigned short vid ) ;
# endif
2012-06-03 22:19:10 +02:00
# define BATADV_BLA_CRC_INIT 0
2012-01-22 20:00:27 +01:00
# else /* ifdef CONFIG_BATMAN_ADV_BLA */
2016-02-22 21:02:39 +01:00
static inline bool batadv_bla_rx ( struct batadv_priv * bat_priv ,
struct sk_buff * skb , unsigned short vid ,
2020-09-15 09:54:09 +02:00
int packet_type )
2012-01-22 20:00:27 +01:00
{
2016-02-22 21:02:39 +01:00
return false ;
2012-01-22 20:00:27 +01:00
}
2016-02-22 21:02:39 +01:00
static inline bool batadv_bla_tx ( struct batadv_priv * bat_priv ,
struct sk_buff * skb , unsigned short vid )
2012-01-22 20:00:27 +01:00
{
2016-02-22 21:02:39 +01:00
return false ;
2012-01-22 20:00:27 +01:00
}
2016-02-22 21:02:39 +01:00
static inline bool batadv_bla_is_backbone_gw ( struct sk_buff * skb ,
struct batadv_orig_node * orig_node ,
int hdr_size )
2012-01-22 20:00:27 +01:00
{
2016-02-22 21:02:39 +01:00
return false ;
2012-01-22 20:00:27 +01:00
}
2013-08-07 18:28:56 +02:00
static inline bool batadv_bla_is_backbone_gw_orig ( struct batadv_priv * bat_priv ,
2015-05-26 18:34:26 +02:00
u8 * orig , unsigned short vid )
2012-01-22 20:00:27 +01:00
{
2013-08-07 18:28:56 +02:00
return false ;
2012-01-22 20:00:27 +01:00
}
2016-02-22 21:02:39 +01:00
static inline bool
2012-06-05 22:31:31 +02:00
batadv_bla_check_bcast_duplist ( struct batadv_priv * bat_priv ,
2012-10-18 13:47:42 +02:00
struct sk_buff * skb )
2012-01-22 20:00:27 +01:00
{
2016-02-22 21:02:39 +01:00
return false ;
2012-01-22 20:00:27 +01:00
}
2012-05-12 13:38:47 +02:00
static inline void
2012-06-05 22:31:31 +02:00
batadv_bla_update_orig_address ( struct batadv_priv * bat_priv ,
struct batadv_hard_iface * primary_if ,
struct batadv_hard_iface * oldif )
2012-01-22 20:00:27 +01:00
{
}
2012-06-05 22:31:31 +02:00
static inline int batadv_bla_init ( struct batadv_priv * bat_priv )
2012-01-22 20:00:27 +01:00
{
return 1 ;
}
2012-06-05 22:31:31 +02:00
static inline void batadv_bla_free ( struct batadv_priv * bat_priv )
2012-01-22 20:00:27 +01:00
{
}
2016-07-03 13:31:45 +02:00
static inline int batadv_bla_claim_dump ( struct sk_buff * msg ,
struct netlink_callback * cb )
{
return - EOPNOTSUPP ;
}
2016-07-03 13:31:47 +02:00
static inline int batadv_bla_backbone_dump ( struct sk_buff * msg ,
struct netlink_callback * cb )
{
return - EOPNOTSUPP ;
}
2016-09-05 13:20:25 +02:00
static inline
bool batadv_bla_check_claim ( struct batadv_priv * bat_priv , u8 * addr ,
unsigned short vid )
{
return true ;
}
2012-01-22 20:00:27 +01:00
# endif /* ifdef CONFIG_BATMAN_ADV_BLA */
2012-01-22 20:00:19 +01:00
# endif /* ifndef _NET_BATMAN_ADV_BLA_H_ */