linux/net/batman-adv/send.h
<<
>>
Prefs
   1/* Copyright (C) 2007-2013 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_SEND_H_
  21#define _NET_BATMAN_ADV_SEND_H_
  22
  23int batadv_send_skb_packet(struct sk_buff *skb,
  24                           struct batadv_hard_iface *hard_iface,
  25                           const uint8_t *dst_addr);
  26int batadv_send_skb_to_orig(struct sk_buff *skb,
  27                            struct batadv_orig_node *orig_node,
  28                            struct batadv_hard_iface *recv_if);
  29void batadv_schedule_bat_ogm(struct batadv_hard_iface *hard_iface);
  30int batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv,
  31                                    const struct sk_buff *skb,
  32                                    unsigned long delay);
  33void batadv_send_outstanding_bat_ogm_packet(struct work_struct *work);
  34void
  35batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
  36                                 const struct batadv_hard_iface *hard_iface);
  37bool batadv_send_skb_prepare_unicast_4addr(struct batadv_priv *bat_priv,
  38                                           struct sk_buff *skb,
  39                                           struct batadv_orig_node *orig_node,
  40                                           int packet_subtype);
  41int batadv_send_skb_via_tt_generic(struct batadv_priv *bat_priv,
  42                                   struct sk_buff *skb, int packet_type,
  43                                   int packet_subtype, unsigned short vid);
  44int batadv_send_skb_via_gw(struct batadv_priv *bat_priv, struct sk_buff *skb,
  45                           unsigned short vid);
  46
  47/**
  48 * batadv_send_skb_via_tt - send an skb via TT lookup
  49 * @bat_priv: the bat priv with all the soft interface information
  50 * @skb: the payload to send
  51 * @vid: the vid to be used to search the translation table
  52 *
  53 * Look up the recipient node for the destination address in the ethernet
  54 * header via the translation table. Wrap the given skb into a batman-adv
  55 * unicast header. Then send this frame to the according destination node.
  56 *
  57 * Returns NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise.
  58 */
  59static inline int batadv_send_skb_via_tt(struct batadv_priv *bat_priv,
  60                                         struct sk_buff *skb,
  61                                         unsigned short vid)
  62{
  63        return batadv_send_skb_via_tt_generic(bat_priv, skb, BATADV_UNICAST, 0,
  64                                              vid);
  65}
  66
  67/**
  68 * batadv_send_skb_via_tt_4addr - send an skb via TT lookup
  69 * @bat_priv: the bat priv with all the soft interface information
  70 * @skb: the payload to send
  71 * @packet_subtype: the unicast 4addr packet subtype to use
  72 * @vid: the vid to be used to search the translation table
  73 *
  74 * Look up the recipient node for the destination address in the ethernet
  75 * header via the translation table. Wrap the given skb into a batman-adv
  76 * unicast-4addr header. Then send this frame to the according destination
  77 * node.
  78 *
  79 * Returns NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise.
  80 */
  81static inline int batadv_send_skb_via_tt_4addr(struct batadv_priv *bat_priv,
  82                                               struct sk_buff *skb,
  83                                               int packet_subtype,
  84                                               unsigned short vid)
  85{
  86        return batadv_send_skb_via_tt_generic(bat_priv, skb,
  87                                              BATADV_UNICAST_4ADDR,
  88                                              packet_subtype, vid);
  89}
  90
  91#endif /* _NET_BATMAN_ADV_SEND_H_ */
  92