19f6446c7SSven Eckelmann /* Copyright (C) 2012-2015 B.A.T.M.A.N. contributors: 2d353d8d4SMartin Hundebøll * 3d353d8d4SMartin Hundebøll * Martin Hundebøll, Jeppe Ledet-Pedersen 4d353d8d4SMartin Hundebøll * 5d353d8d4SMartin Hundebøll * This program is free software; you can redistribute it and/or 6d353d8d4SMartin Hundebøll * modify it under the terms of version 2 of the GNU General Public 7d353d8d4SMartin Hundebøll * License as published by the Free Software Foundation. 8d353d8d4SMartin Hundebøll * 9d353d8d4SMartin Hundebøll * This program is distributed in the hope that it will be useful, but 10d353d8d4SMartin Hundebøll * WITHOUT ANY WARRANTY; without even the implied warranty of 11d353d8d4SMartin Hundebøll * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12d353d8d4SMartin Hundebøll * General Public License for more details. 13d353d8d4SMartin Hundebøll * 14d353d8d4SMartin Hundebøll * You should have received a copy of the GNU General Public License 15ebf38fb7SAntonio Quartulli * along with this program; if not, see <http://www.gnu.org/licenses/>. 16d353d8d4SMartin Hundebøll */ 17d353d8d4SMartin Hundebøll 18d353d8d4SMartin Hundebøll #ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_ 19d353d8d4SMartin Hundebøll #define _NET_BATMAN_ADV_NETWORK_CODING_H_ 20d353d8d4SMartin Hundebøll 211e2c2a4fSSven Eckelmann #include "main.h" 221e2c2a4fSSven Eckelmann 231e2c2a4fSSven Eckelmann #include <linux/types.h> 241e2c2a4fSSven Eckelmann 251e2c2a4fSSven Eckelmann struct batadv_nc_node; 261e2c2a4fSSven Eckelmann struct batadv_neigh_node; 271e2c2a4fSSven Eckelmann struct batadv_ogm_packet; 281e2c2a4fSSven Eckelmann struct batadv_orig_node; 291e2c2a4fSSven Eckelmann struct batadv_priv; 301e2c2a4fSSven Eckelmann struct net_device; 311e2c2a4fSSven Eckelmann struct seq_file; 321e2c2a4fSSven Eckelmann struct sk_buff; 331e2c2a4fSSven Eckelmann 34d353d8d4SMartin Hundebøll #ifdef CONFIG_BATMAN_ADV_NC 35d353d8d4SMartin Hundebøll 363f4841ffSMarek Lindner void batadv_nc_status_update(struct net_device *net_dev); 376c519badSMatthias Schiffer int batadv_nc_init(void); 386c519badSMatthias Schiffer int batadv_nc_mesh_init(struct batadv_priv *bat_priv); 396c519badSMatthias Schiffer void batadv_nc_mesh_free(struct batadv_priv *bat_priv); 40d56b1705SMartin Hundebøll void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, 41d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 42d56b1705SMartin Hundebøll struct batadv_orig_node *orig_neigh_node, 43d56b1705SMartin Hundebøll struct batadv_ogm_packet *ogm_packet, 44d56b1705SMartin Hundebøll int is_single_hop_neigh); 45d56b1705SMartin Hundebøll void batadv_nc_purge_orig(struct batadv_priv *bat_priv, 46d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 47d56b1705SMartin Hundebøll bool (*to_purge)(struct batadv_priv *, 48d56b1705SMartin Hundebøll struct batadv_nc_node *)); 49d353d8d4SMartin Hundebøll void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); 50d56b1705SMartin Hundebøll void batadv_nc_init_orig(struct batadv_orig_node *orig_node); 5195332477SMartin Hundebøll bool batadv_nc_skb_forward(struct sk_buff *skb, 52e91ecfc6SMartin Hundebøll struct batadv_neigh_node *neigh_node); 53612d2b4fSMartin Hundebøll void batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 54612d2b4fSMartin Hundebøll struct sk_buff *skb); 55612d2b4fSMartin Hundebøll void batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 56612d2b4fSMartin Hundebøll struct sk_buff *skb); 57d56b1705SMartin Hundebøll int batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset); 58d56b1705SMartin Hundebøll int batadv_nc_init_debugfs(struct batadv_priv *bat_priv); 59d353d8d4SMartin Hundebøll 60d353d8d4SMartin Hundebøll #else /* ifdef CONFIG_BATMAN_ADV_NC */ 61d353d8d4SMartin Hundebøll 623f4841ffSMarek Lindner static inline void batadv_nc_status_update(struct net_device *net_dev) 633f4841ffSMarek Lindner { 643f4841ffSMarek Lindner } 653f4841ffSMarek Lindner 666c519badSMatthias Schiffer static inline int batadv_nc_init(void) 67d353d8d4SMartin Hundebøll { 68d353d8d4SMartin Hundebøll return 0; 69d353d8d4SMartin Hundebøll } 70d353d8d4SMartin Hundebøll 716c519badSMatthias Schiffer static inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv) 726c519badSMatthias Schiffer { 736c519badSMatthias Schiffer return 0; 746c519badSMatthias Schiffer } 756c519badSMatthias Schiffer 766c519badSMatthias Schiffer static inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv) 77d353d8d4SMartin Hundebøll { 78d353d8d4SMartin Hundebøll } 79d353d8d4SMartin Hundebøll 80d56b1705SMartin Hundebøll static inline void 81d56b1705SMartin Hundebøll batadv_nc_update_nc_node(struct batadv_priv *bat_priv, 82d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 83d56b1705SMartin Hundebøll struct batadv_orig_node *orig_neigh_node, 84d56b1705SMartin Hundebøll struct batadv_ogm_packet *ogm_packet, 85d56b1705SMartin Hundebøll int is_single_hop_neigh) 86d56b1705SMartin Hundebøll { 87d56b1705SMartin Hundebøll } 88d56b1705SMartin Hundebøll 89d56b1705SMartin Hundebøll static inline void 90d56b1705SMartin Hundebøll batadv_nc_purge_orig(struct batadv_priv *bat_priv, 91d56b1705SMartin Hundebøll struct batadv_orig_node *orig_node, 92d56b1705SMartin Hundebøll bool (*to_purge)(struct batadv_priv *, 93d56b1705SMartin Hundebøll struct batadv_nc_node *)) 94d56b1705SMartin Hundebøll { 95d56b1705SMartin Hundebøll } 96d56b1705SMartin Hundebøll 97d353d8d4SMartin Hundebøll static inline void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv) 98d353d8d4SMartin Hundebøll { 99d353d8d4SMartin Hundebøll } 100d353d8d4SMartin Hundebøll 101d56b1705SMartin Hundebøll static inline void batadv_nc_init_orig(struct batadv_orig_node *orig_node) 102d56b1705SMartin Hundebøll { 103d56b1705SMartin Hundebøll } 104d56b1705SMartin Hundebøll 10595332477SMartin Hundebøll static inline bool batadv_nc_skb_forward(struct sk_buff *skb, 106e91ecfc6SMartin Hundebøll struct batadv_neigh_node *neigh_node) 10795332477SMartin Hundebøll { 10895332477SMartin Hundebøll return false; 10995332477SMartin Hundebøll } 11095332477SMartin Hundebøll 111612d2b4fSMartin Hundebøll static inline void 112612d2b4fSMartin Hundebøll batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 113612d2b4fSMartin Hundebøll struct sk_buff *skb) 114612d2b4fSMartin Hundebøll { 115612d2b4fSMartin Hundebøll } 116612d2b4fSMartin Hundebøll 117612d2b4fSMartin Hundebøll static inline void 118612d2b4fSMartin Hundebøll batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 119612d2b4fSMartin Hundebøll struct sk_buff *skb) 120612d2b4fSMartin Hundebøll { 121612d2b4fSMartin Hundebøll } 122612d2b4fSMartin Hundebøll 123d56b1705SMartin Hundebøll static inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq, 124d56b1705SMartin Hundebøll void *offset) 125d56b1705SMartin Hundebøll { 126d56b1705SMartin Hundebøll return 0; 127d56b1705SMartin Hundebøll } 128d56b1705SMartin Hundebøll 129d56b1705SMartin Hundebøll static inline int batadv_nc_init_debugfs(struct batadv_priv *bat_priv) 130d56b1705SMartin Hundebøll { 131d56b1705SMartin Hundebøll return 0; 132d56b1705SMartin Hundebøll } 133d56b1705SMartin Hundebøll 134d353d8d4SMartin Hundebøll #endif /* ifdef CONFIG_BATMAN_ADV_NC */ 135d353d8d4SMartin Hundebøll 136d353d8d4SMartin Hundebøll #endif /* _NET_BATMAN_ADV_NETWORK_CODING_H_ */ 137