2013-01-04 06:05:31 +04:00
/* Copyright (C) 2007-2013 B.A.T.M.A.N. contributors:
2010-12-13 14:19:28 +03:00
*
* 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_SEND_H_
# define _NET_BATMAN_ADV_SEND_H_
2012-06-06 00:31:31 +04:00
int batadv_send_skb_packet ( struct sk_buff * skb ,
struct batadv_hard_iface * hard_iface ,
2012-05-12 04:09:37 +04:00
const uint8_t * dst_addr ) ;
2013-04-20 15:54:39 +04:00
int batadv_send_skb_to_orig ( struct sk_buff * skb ,
struct batadv_orig_node * orig_node ,
struct batadv_hard_iface * recv_if ) ;
2012-06-06 00:31:31 +04:00
void batadv_schedule_bat_ogm ( struct batadv_hard_iface * hard_iface ) ;
int batadv_add_bcast_packet_to_list ( struct batadv_priv * bat_priv ,
2012-05-12 04:09:37 +04:00
const struct sk_buff * skb ,
unsigned long delay ) ;
void batadv_send_outstanding_bat_ogm_packet ( struct work_struct * work ) ;
2012-06-06 00:31:31 +04:00
void
batadv_purge_outstanding_packets ( struct batadv_priv * bat_priv ,
const struct batadv_hard_iface * hard_iface ) ;
2013-05-23 18:53:01 +04:00
bool batadv_send_skb_prepare_unicast_4addr ( struct batadv_priv * bat_priv ,
struct sk_buff * skb ,
struct batadv_orig_node * orig_node ,
int packet_subtype ) ;
2013-07-03 12:40:00 +04:00
int batadv_send_skb_via_tt_generic ( struct batadv_priv * bat_priv ,
struct sk_buff * skb , int packet_type ,
int packet_subtype , unsigned short vid ) ;
int batadv_send_skb_via_gw ( struct batadv_priv * bat_priv , struct sk_buff * skb ,
unsigned short vid ) ;
2013-05-23 18:53:01 +04:00
/**
2013-07-03 12:40:00 +04:00
* batadv_send_skb_via_tt - send an skb via TT lookup
2013-05-23 18:53:01 +04:00
* @ bat_priv : the bat priv with all the soft interface information
* @ skb : the payload to send
2013-06-04 14:11:39 +04:00
* @ vid : the vid to be used to search the translation table
2013-05-23 18:53:01 +04:00
*
2013-07-03 12:40:00 +04:00
* Look up the recipient node for the destination address in the ethernet
* header via the translation table . Wrap the given skb into a batman - adv
* unicast header . Then send this frame to the according destination node .
*
* Returns NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise .
2013-05-23 18:53:01 +04:00
*/
2013-07-03 12:40:00 +04:00
static inline int batadv_send_skb_via_tt ( struct batadv_priv * bat_priv ,
struct sk_buff * skb ,
unsigned short vid )
2013-05-23 18:53:01 +04:00
{
2013-07-03 12:40:00 +04:00
return batadv_send_skb_via_tt_generic ( bat_priv , skb , BATADV_UNICAST , 0 ,
vid ) ;
2013-05-23 18:53:01 +04:00
}
/**
2013-07-03 12:40:00 +04:00
* batadv_send_skb_via_tt_4addr - send an skb via TT lookup
2013-05-23 18:53:01 +04:00
* @ bat_priv : the bat priv with all the soft interface information
* @ skb : the payload to send
* @ packet_subtype : the unicast 4 addr packet subtype to use
2013-06-04 14:11:39 +04:00
* @ vid : the vid to be used to search the translation table
2013-05-23 18:53:01 +04:00
*
2013-07-03 12:40:00 +04:00
* Look up the recipient node for the destination address in the ethernet
* header via the translation table . Wrap the given skb into a batman - adv
* unicast - 4 addr header . Then send this frame to the according destination
* node .
*
* Returns NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise .
2013-05-23 18:53:01 +04:00
*/
2013-07-03 12:40:00 +04:00
static inline int batadv_send_skb_via_tt_4addr ( struct batadv_priv * bat_priv ,
struct sk_buff * skb ,
int packet_subtype ,
unsigned short vid )
2013-05-23 18:53:01 +04:00
{
2013-07-03 12:40:00 +04:00
return batadv_send_skb_via_tt_generic ( bat_priv , skb ,
BATADV_UNICAST_4ADDR ,
packet_subtype , vid ) ;
2013-05-23 18:53:01 +04:00
}
2010-12-13 14:19:28 +03:00
# endif /* _NET_BATMAN_ADV_SEND_H_ */