root/net/batman-adv/multicast.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. batadv_mcast_forw_mode
  2. batadv_mcast_forw_send
  3. batadv_mcast_init
  4. batadv_mcast_mesh_info_put
  5. batadv_mcast_flags_dump
  6. batadv_mcast_free
  7. batadv_mcast_purge_orig

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright (C) 2014-2019  B.A.T.M.A.N. contributors:
   3  *
   4  * Linus Lüssing
   5  */
   6 
   7 #ifndef _NET_BATMAN_ADV_MULTICAST_H_
   8 #define _NET_BATMAN_ADV_MULTICAST_H_
   9 
  10 #include "main.h"
  11 
  12 #include <linux/netlink.h>
  13 #include <linux/seq_file.h>
  14 #include <linux/skbuff.h>
  15 
  16 /**
  17  * enum batadv_forw_mode - the way a packet should be forwarded as
  18  */
  19 enum batadv_forw_mode {
  20         /**
  21          * @BATADV_FORW_ALL: forward the packet to all nodes (currently via
  22          *  classic flooding)
  23          */
  24         BATADV_FORW_ALL,
  25 
  26         /**
  27          * @BATADV_FORW_SOME: forward the packet to some nodes (currently via
  28          *  a multicast-to-unicast conversion and the BATMAN unicast routing
  29          *  protocol)
  30          */
  31         BATADV_FORW_SOME,
  32 
  33         /**
  34          * @BATADV_FORW_SINGLE: forward the packet to a single node (currently
  35          *  via the BATMAN unicast routing protocol)
  36          */
  37         BATADV_FORW_SINGLE,
  38 
  39         /** @BATADV_FORW_NONE: don't forward, drop it */
  40         BATADV_FORW_NONE,
  41 };
  42 
  43 #ifdef CONFIG_BATMAN_ADV_MCAST
  44 
  45 enum batadv_forw_mode
  46 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  47                        struct batadv_orig_node **mcast_single_orig);
  48 
  49 int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
  50                            unsigned short vid);
  51 
  52 void batadv_mcast_init(struct batadv_priv *bat_priv);
  53 
  54 int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
  55 
  56 int batadv_mcast_mesh_info_put(struct sk_buff *msg,
  57                                struct batadv_priv *bat_priv);
  58 
  59 int batadv_mcast_flags_dump(struct sk_buff *msg, struct netlink_callback *cb);
  60 
  61 void batadv_mcast_free(struct batadv_priv *bat_priv);
  62 
  63 void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
  64 
  65 #else
  66 
  67 static inline enum batadv_forw_mode
  68 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  69                        struct batadv_orig_node **mcast_single_orig)
  70 {
  71         return BATADV_FORW_ALL;
  72 }
  73 
  74 static inline int
  75 batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
  76                        unsigned short vid)
  77 {
  78         kfree_skb(skb);
  79         return NET_XMIT_DROP;
  80 }
  81 
  82 static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
  83 {
  84         return 0;
  85 }
  86 
  87 static inline int
  88 batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv)
  89 {
  90         return 0;
  91 }
  92 
  93 static inline int batadv_mcast_flags_dump(struct sk_buff *msg,
  94                                           struct netlink_callback *cb)
  95 {
  96         return -EOPNOTSUPP;
  97 }
  98 
  99 static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
 100 {
 101 }
 102 
 103 static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
 104 {
 105 }
 106 
 107 #endif /* CONFIG_BATMAN_ADV_MCAST */
 108 
 109 #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */

/* [<][>][^][v][top][bottom][index][help] */