1*7db7d9f3SSven Eckelmann /* SPDX-License-Identifier: GPL-2.0 */ 2ac79cbb9SSven Eckelmann /* Copyright (C) 2012-2017 B.A.T.M.A.N. contributors: 3d353d8d4SMartin Hundebøll * 4d353d8d4SMartin Hundebøll * Martin Hundebøll, Jeppe Ledet-Pedersen 5d353d8d4SMartin Hundebøll * 6d353d8d4SMartin Hundebøll * This program is free software; you can redistribute it and/or 7d353d8d4SMartin Hundebøll * modify it under the terms of version 2 of the GNU General Public 8d353d8d4SMartin Hundebøll * License as published by the Free Software Foundation. 9d353d8d4SMartin Hundebøll * 10d353d8d4SMartin Hundebøll * This program is distributed in the hope that it will be useful, but 11d353d8d4SMartin Hundebøll * WITHOUT ANY WARRANTY; without even the implied warranty of 12d353d8d4SMartin Hundebøll * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13d353d8d4SMartin Hundebøll * General Public License for more details. 14d353d8d4SMartin Hundebøll * 15d353d8d4SMartin Hundebøll * You should have received a copy of the GNU General Public License 16ebf38fb7SAntonio Quartulli * along with this program; if not, see <http://www.gnu.org/licenses/>. 17d353d8d4SMartin Hundebøll */ 18d353d8d4SMartin Hundebøll 19d353d8d4SMartin Hundebøll #ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_ 20d353d8d4SMartin Hundebøll #define _NET_BATMAN_ADV_NETWORK_CODING_H_ 21d353d8d4SMartin Hundebøll 221e2c2a4fSSven Eckelmann #include "main.h" 231e2c2a4fSSven Eckelmann 241e2c2a4fSSven Eckelmann #include <linux/types.h> 251e2c2a4fSSven Eckelmann 261e2c2a4fSSven Eckelmann struct batadv_ogm_packet; 271e2c2a4fSSven Eckelmann struct net_device; 281e2c2a4fSSven Eckelmann struct seq_file; 291e2c2a4fSSven Eckelmann struct sk_buff; 301e2c2a4fSSven Eckelmann 31d353d8d4SMartin Hundebøll #ifdef CONFIG_BATMAN_ADV_NC 32d353d8d4SMartin Hundebøll 333f4841ffSMarek Lindner void batadv_nc_status_update(struct net_device *net_dev); 346c519badSMatthias Schiffer int batadv_nc_init(void); 356c519badSMatthias Schiffer int batadv_nc_mesh_init(struct batadv_priv *bat_priv); 366c519badSMatthias Schiffer void batadv_nc_mesh_free(struct batadv_priv *bat_priv); 37d56b1705SMartin Hundebøll void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, 38d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 39d56b1705SMartin Hundebøll struct batadv_orig_node *orig_neigh_node, 40d56b1705SMartin Hundebøll struct batadv_ogm_packet *ogm_packet, 41d56b1705SMartin Hundebøll int is_single_hop_neigh); 42d56b1705SMartin Hundebøll void batadv_nc_purge_orig(struct batadv_priv *bat_priv, 43d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 44d56b1705SMartin Hundebøll bool (*to_purge)(struct batadv_priv *, 45d56b1705SMartin Hundebøll struct batadv_nc_node *)); 46d353d8d4SMartin Hundebøll void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); 47d56b1705SMartin Hundebøll void batadv_nc_init_orig(struct batadv_orig_node *orig_node); 4895332477SMartin Hundebøll bool batadv_nc_skb_forward(struct sk_buff *skb, 49e91ecfc6SMartin Hundebøll struct batadv_neigh_node *neigh_node); 50612d2b4fSMartin Hundebøll void batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 51612d2b4fSMartin Hundebøll struct sk_buff *skb); 52612d2b4fSMartin Hundebøll void batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 53612d2b4fSMartin Hundebøll struct sk_buff *skb); 54d56b1705SMartin Hundebøll int batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset); 55d56b1705SMartin Hundebøll int batadv_nc_init_debugfs(struct batadv_priv *bat_priv); 56d353d8d4SMartin Hundebøll 57d353d8d4SMartin Hundebøll #else /* ifdef CONFIG_BATMAN_ADV_NC */ 58d353d8d4SMartin Hundebøll 593f4841ffSMarek Lindner static inline void batadv_nc_status_update(struct net_device *net_dev) 603f4841ffSMarek Lindner { 613f4841ffSMarek Lindner } 623f4841ffSMarek Lindner 636c519badSMatthias Schiffer static inline int batadv_nc_init(void) 64d353d8d4SMartin Hundebøll { 65d353d8d4SMartin Hundebøll return 0; 66d353d8d4SMartin Hundebøll } 67d353d8d4SMartin Hundebøll 686c519badSMatthias Schiffer static inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv) 696c519badSMatthias Schiffer { 706c519badSMatthias Schiffer return 0; 716c519badSMatthias Schiffer } 726c519badSMatthias Schiffer 736c519badSMatthias Schiffer static inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv) 74d353d8d4SMartin Hundebøll { 75d353d8d4SMartin Hundebøll } 76d353d8d4SMartin Hundebøll 77d56b1705SMartin Hundebøll static inline void 78d56b1705SMartin Hundebøll batadv_nc_update_nc_node(struct batadv_priv *bat_priv, 79d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 80d56b1705SMartin Hundebøll struct batadv_orig_node *orig_neigh_node, 81d56b1705SMartin Hundebøll struct batadv_ogm_packet *ogm_packet, 82d56b1705SMartin Hundebøll int is_single_hop_neigh) 83d56b1705SMartin Hundebøll { 84d56b1705SMartin Hundebøll } 85d56b1705SMartin Hundebøll 86d56b1705SMartin Hundebøll static inline void 87d56b1705SMartin Hundebøll batadv_nc_purge_orig(struct batadv_priv *bat_priv, 88d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 89d56b1705SMartin Hundebøll bool (*to_purge)(struct batadv_priv *, 90d56b1705SMartin Hundebøll struct batadv_nc_node *)) 91d56b1705SMartin Hundebøll { 92d56b1705SMartin Hundebøll } 93d56b1705SMartin Hundebøll 94d353d8d4SMartin Hundebøll static inline void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv) 95d353d8d4SMartin Hundebøll { 96d353d8d4SMartin Hundebøll } 97d353d8d4SMartin Hundebøll 98d56b1705SMartin Hundebøll static inline void batadv_nc_init_orig(struct batadv_orig_node *orig_node) 99d56b1705SMartin Hundebøll { 100d56b1705SMartin Hundebøll } 101d56b1705SMartin Hundebøll 10295332477SMartin Hundebøll static inline bool batadv_nc_skb_forward(struct sk_buff *skb, 103e91ecfc6SMartin Hundebøll struct batadv_neigh_node *neigh_node) 10495332477SMartin Hundebøll { 10595332477SMartin Hundebøll return false; 10695332477SMartin Hundebøll } 10795332477SMartin Hundebøll 108612d2b4fSMartin Hundebøll static inline void 109612d2b4fSMartin Hundebøll batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 110612d2b4fSMartin Hundebøll struct sk_buff *skb) 111612d2b4fSMartin Hundebøll { 112612d2b4fSMartin Hundebøll } 113612d2b4fSMartin Hundebøll 114612d2b4fSMartin Hundebøll static inline void 115612d2b4fSMartin Hundebøll batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 116612d2b4fSMartin Hundebøll struct sk_buff *skb) 117612d2b4fSMartin Hundebøll { 118612d2b4fSMartin Hundebøll } 119612d2b4fSMartin Hundebøll 120d56b1705SMartin Hundebøll static inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq, 121d56b1705SMartin Hundebøll void *offset) 122d56b1705SMartin Hundebøll { 123d56b1705SMartin Hundebøll return 0; 124d56b1705SMartin Hundebøll } 125d56b1705SMartin Hundebøll 126d56b1705SMartin Hundebøll static inline int batadv_nc_init_debugfs(struct batadv_priv *bat_priv) 127d56b1705SMartin Hundebøll { 128d56b1705SMartin Hundebøll return 0; 129d56b1705SMartin Hundebøll } 130d56b1705SMartin Hundebøll 131d353d8d4SMartin Hundebøll #endif /* ifdef CONFIG_BATMAN_ADV_NC */ 132d353d8d4SMartin Hundebøll 133d353d8d4SMartin Hundebøll #endif /* _NET_BATMAN_ADV_NETWORK_CODING_H_ */ 134