1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2014-2018 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 netlink_callback; 25 struct seq_file; 26 struct sk_buff; 27 28 /** 29 * enum batadv_forw_mode - the way a packet should be forwarded as 30 */ 31 enum batadv_forw_mode { 32 /** 33 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via 34 * classic flooding) 35 */ 36 BATADV_FORW_ALL, 37 38 /** 39 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently 40 * via the BATMAN unicast routing protocol) 41 */ 42 BATADV_FORW_SINGLE, 43 44 /** @BATADV_FORW_NONE: don't forward, drop it */ 45 BATADV_FORW_NONE, 46 }; 47 48 #ifdef CONFIG_BATMAN_ADV_MCAST 49 50 enum batadv_forw_mode 51 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 52 struct batadv_orig_node **mcast_single_orig); 53 54 void batadv_mcast_init(struct batadv_priv *bat_priv); 55 56 int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset); 57 58 int batadv_mcast_mesh_info_put(struct sk_buff *msg, 59 struct batadv_priv *bat_priv); 60 61 int batadv_mcast_flags_dump(struct sk_buff *msg, struct netlink_callback *cb); 62 63 void batadv_mcast_free(struct batadv_priv *bat_priv); 64 65 void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node); 66 67 #else 68 69 static inline enum batadv_forw_mode 70 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 71 struct batadv_orig_node **mcast_single_orig) 72 { 73 return BATADV_FORW_ALL; 74 } 75 76 static inline int batadv_mcast_init(struct batadv_priv *bat_priv) 77 { 78 return 0; 79 } 80 81 static inline int 82 batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv) 83 { 84 return 0; 85 } 86 87 static inline int batadv_mcast_flags_dump(struct sk_buff *msg, 88 struct netlink_callback *cb) 89 { 90 return -EOPNOTSUPP; 91 } 92 93 static inline void batadv_mcast_free(struct batadv_priv *bat_priv) 94 { 95 } 96 97 static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node) 98 { 99 } 100 101 #endif /* CONFIG_BATMAN_ADV_MCAST */ 102 103 #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */ 104