1 /* SPDX-License-Identifier: GPL-2.0 */ !! 1 /* Copyright (C) 2014-2015 B.A.T.M.A.N. contributors: 2 /* Copyright (C) B.A.T.M.A.N. contributors: << 3 * 2 * 4 * Linus Lüssing 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/>. 5 */ 16 */ 6 17 7 #ifndef _NET_BATMAN_ADV_MULTICAST_H_ 18 #ifndef _NET_BATMAN_ADV_MULTICAST_H_ 8 #define _NET_BATMAN_ADV_MULTICAST_H_ 19 #define _NET_BATMAN_ADV_MULTICAST_H_ 9 20 10 #include "main.h" 21 #include "main.h" 11 22 12 #include <linux/netlink.h> !! 23 struct sk_buff; 13 #include <linux/skbuff.h> << 14 #include <linux/types.h> << 15 24 16 /** 25 /** 17 * enum batadv_forw_mode - the way a packet sh !! 26 * batadv_forw_mode - the way a packet should be forwarded as >> 27 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via classic >> 28 * flooding) >> 29 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently via the >> 30 * BATMAN unicast routing protocol) >> 31 * @BATADV_FORW_NONE: don't forward, drop it 18 */ 32 */ 19 enum batadv_forw_mode { 33 enum batadv_forw_mode { 20 /** !! 34 BATADV_FORW_ALL, 21 * @BATADV_FORW_BCAST: forward the pac !! 35 BATADV_FORW_SINGLE, 22 * broadcast packet << 23 */ << 24 BATADV_FORW_BCAST, << 25 << 26 /** << 27 * @BATADV_FORW_UCASTS: forward the pa << 28 * or more batman-adv unicast packets << 29 */ << 30 BATADV_FORW_UCASTS, << 31 << 32 /** << 33 * @BATADV_FORW_MCAST: forward the pac << 34 * batman-adv multicast packet << 35 */ << 36 BATADV_FORW_MCAST, << 37 << 38 /** @BATADV_FORW_NONE: don't forward, << 39 BATADV_FORW_NONE, 36 BATADV_FORW_NONE, 40 }; 37 }; 41 38 42 #ifdef CONFIG_BATMAN_ADV_MCAST 39 #ifdef CONFIG_BATMAN_ADV_MCAST 43 40 >> 41 void batadv_mcast_mla_update(struct batadv_priv *bat_priv); >> 42 44 enum batadv_forw_mode 43 enum batadv_forw_mode 45 batadv_mcast_forw_mode(struct batadv_priv *bat 44 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 46 unsigned short vid, int !! 45 struct batadv_orig_node **mcast_single_orig); 47 46 48 int batadv_mcast_forw_send(struct batadv_priv !! 47 int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv, 49 unsigned short vid, !! 48 struct sk_buff *skb, >> 49 unsigned short vid, >> 50 struct batadv_orig_node *orig_node); 50 51 51 void batadv_mcast_init(struct batadv_priv *bat 52 void batadv_mcast_init(struct batadv_priv *bat_priv); 52 53 53 int batadv_mcast_mesh_info_put(struct sk_buff << 54 struct batadv_p << 55 << 56 int batadv_mcast_flags_dump(struct sk_buff *ms << 57 << 58 void batadv_mcast_free(struct batadv_priv *bat 54 void batadv_mcast_free(struct batadv_priv *bat_priv); 59 55 60 void batadv_mcast_purge_orig(struct batadv_ori 56 void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node); 61 57 62 /* multicast_forw.c */ << 63 << 64 int batadv_mcast_forw_tracker_tvlv_handler(str << 65 str << 66 << 67 unsigned int batadv_mcast_forw_packet_hdrlen(u << 68 << 69 bool batadv_mcast_forw_push(struct batadv_priv << 70 unsigned short vid << 71 << 72 int batadv_mcast_forw_mcsend(struct batadv_pri << 73 << 74 #else 58 #else 75 59 76 static inline enum batadv_forw_mode !! 60 static inline void batadv_mcast_mla_update(struct batadv_priv *bat_priv) 77 batadv_mcast_forw_mode(struct batadv_priv *bat << 78 unsigned short vid, int << 79 { 61 { 80 return BATADV_FORW_BCAST; << 81 } 62 } 82 63 83 static inline int !! 64 static inline enum batadv_forw_mode 84 batadv_mcast_forw_send(struct batadv_priv *bat !! 65 batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, 85 unsigned short vid, int !! 66 struct batadv_orig_node **mcast_single_orig) 86 { 67 { 87 kfree_skb(skb); !! 68 return BATADV_FORW_ALL; 88 return NET_XMIT_DROP; << 89 } 69 } 90 70 91 static inline int batadv_mcast_init(struct bat 71 static inline int batadv_mcast_init(struct batadv_priv *bat_priv) 92 { 72 { 93 return 0; 73 return 0; 94 } 74 } 95 75 96 static inline int 76 static inline int 97 batadv_mcast_mesh_info_put(struct sk_buff *msg !! 77 batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv, 98 { !! 78 struct sk_buff *skb, 99 return 0; !! 79 unsigned short vid, 100 } !! 80 struct batadv_orig_node *orig_node) 101 << 102 static inline int batadv_mcast_flags_dump(stru << 103 stru << 104 { 81 { 105 return -EOPNOTSUPP; !! 82 kfree_skb(skb); >> 83 return NET_XMIT_DROP; 106 } 84 } 107 85 108 static inline void batadv_mcast_free(struct ba 86 static inline void batadv_mcast_free(struct batadv_priv *bat_priv) 109 { 87 { 110 } 88 } 111 89 112 static inline void batadv_mcast_purge_orig(str 90 static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node) 113 { 91 { 114 } << 115 << 116 static inline int batadv_mcast_forw_mcsend(str << 117 str << 118 { << 119 kfree_skb(skb); << 120 return NET_XMIT_DROP; << 121 } 92 } 122 93 123 #endif /* CONFIG_BATMAN_ADV_MCAST */ 94 #endif /* CONFIG_BATMAN_ADV_MCAST */ 124 95 125 #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */ 96 #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */ 126 97
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.