linux/net/batman-adv/multicast.h
<<
>>
Prefs
   1/* Copyright (C) 2014-2016  B.A.T.M.A.N. contributors:
   2 *
   3 * Linus Lüssing
   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, see <http://www.gnu.org/licenses/>.
  16 */
  17
  18#ifndef _NET_BATMAN_ADV_MULTICAST_H_
  19#define _NET_BATMAN_ADV_MULTICAST_H_
  20
  21#include "main.h"
  22
  23struct seq_file;
  24struct sk_buff;
  25
  26/**
  27 * enum batadv_forw_mode - the way a packet should be forwarded as
  28 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via classic
  29 *  flooding)
  30 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently via the
  31 *  BATMAN unicast routing protocol)
  32 * @BATADV_FORW_NONE: don't forward, drop it
  33 */
  34enum batadv_forw_mode {
  35        BATADV_FORW_ALL,
  36        BATADV_FORW_SINGLE,
  37        BATADV_FORW_NONE,
  38};
  39
  40#ifdef CONFIG_BATMAN_ADV_MCAST
  41
  42void batadv_mcast_mla_update(struct batadv_priv *bat_priv);
  43
  44enum batadv_forw_mode
  45batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  46                       struct batadv_orig_node **mcast_single_orig);
  47
  48void batadv_mcast_init(struct batadv_priv *bat_priv);
  49
  50int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
  51
  52void batadv_mcast_free(struct batadv_priv *bat_priv);
  53
  54void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
  55
  56#else
  57
  58static inline void batadv_mcast_mla_update(struct batadv_priv *bat_priv)
  59{
  60}
  61
  62static inline enum batadv_forw_mode
  63batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  64                       struct batadv_orig_node **mcast_single_orig)
  65{
  66        return BATADV_FORW_ALL;
  67}
  68
  69static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
  70{
  71        return 0;
  72}
  73
  74static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
  75{
  76}
  77
  78static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
  79{
  80}
  81
  82#endif /* CONFIG_BATMAN_ADV_MCAST */
  83
  84#endif /* _NET_BATMAN_ADV_MULTICAST_H_ */
  85