1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2014-2017 B.A.T.M.A.N. contributors: 3 * 4 * Linus Lüssing 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of version 2 of the GNU General Public 8 * License as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef _NET_BATMAN_ADV_MULTICAST_H_ 20 #define _NET_BATMAN_ADV_MULTICAST_H_ 21 22 #include "main.h" 23 24 struct seq_file; 25 struct sk_buff; 26 27 /** 28 * enum batadv_forw_mode - the way a packet should be forwarded as 29 */ 30 enum batadv_forw_mode { 31 /** 32 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via 33 * classic flooding) 34 */ 35 BATADV_FORW_ALL, 36 37 /** 38 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently 39 * via the BATMAN unicast routing protocol) 40 */ 41 BATADV_FORW_SINGLE, 42 43 /** @BATADV_FORW_NONE: don't forward, drop it */ 44 BATADV_FORW_NONE, 45 }; 46 47 #ifdef CONFIG_BATMAN_ADV_MCAST 48 49 enum batadv_forw_mode 50 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 51 struct batadv_orig_node **mcast_single_orig); 52 53 void batadv_mcast_init(struct batadv_priv *bat_priv); 54 55 int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset); 56 57 void batadv_mcast_free(struct batadv_priv *bat_priv); 58 59 void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node); 60 61 #else 62 63 static inline enum batadv_forw_mode 64 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 65 struct batadv_orig_node **mcast_single_orig) 66 { 67 return BATADV_FORW_ALL; 68 } 69 70 static inline int batadv_mcast_init(struct batadv_priv *bat_priv) 71 { 72 return 0; 73 } 74 75 static inline void batadv_mcast_free(struct batadv_priv *bat_priv) 76 { 77 } 78 79 static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node) 80 { 81 } 82 83 #endif /* CONFIG_BATMAN_ADV_MCAST */ 84 85 #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */ 86