18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Copyright (C) 2012-2020 B.A.T.M.A.N. contributors: 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Martin Hundebøll, Jeppe Ledet-Pedersen 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_ 88c2ecf20Sopenharmony_ci#define _NET_BATMAN_ADV_NETWORK_CODING_H_ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include "main.h" 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include <linux/netdevice.h> 138c2ecf20Sopenharmony_ci#include <linux/seq_file.h> 148c2ecf20Sopenharmony_ci#include <linux/skbuff.h> 158c2ecf20Sopenharmony_ci#include <linux/types.h> 168c2ecf20Sopenharmony_ci#include <uapi/linux/batadv_packet.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#ifdef CONFIG_BATMAN_ADV_NC 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_civoid batadv_nc_status_update(struct net_device *net_dev); 218c2ecf20Sopenharmony_ciint batadv_nc_init(void); 228c2ecf20Sopenharmony_ciint batadv_nc_mesh_init(struct batadv_priv *bat_priv); 238c2ecf20Sopenharmony_civoid batadv_nc_mesh_free(struct batadv_priv *bat_priv); 248c2ecf20Sopenharmony_civoid batadv_nc_update_nc_node(struct batadv_priv *bat_priv, 258c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_node, 268c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_neigh_node, 278c2ecf20Sopenharmony_ci struct batadv_ogm_packet *ogm_packet, 288c2ecf20Sopenharmony_ci int is_single_hop_neigh); 298c2ecf20Sopenharmony_civoid batadv_nc_purge_orig(struct batadv_priv *bat_priv, 308c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_node, 318c2ecf20Sopenharmony_ci bool (*to_purge)(struct batadv_priv *, 328c2ecf20Sopenharmony_ci struct batadv_nc_node *)); 338c2ecf20Sopenharmony_civoid batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); 348c2ecf20Sopenharmony_civoid batadv_nc_init_orig(struct batadv_orig_node *orig_node); 358c2ecf20Sopenharmony_cibool batadv_nc_skb_forward(struct sk_buff *skb, 368c2ecf20Sopenharmony_ci struct batadv_neigh_node *neigh_node); 378c2ecf20Sopenharmony_civoid batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 388c2ecf20Sopenharmony_ci struct sk_buff *skb); 398c2ecf20Sopenharmony_civoid batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 408c2ecf20Sopenharmony_ci struct sk_buff *skb); 418c2ecf20Sopenharmony_ciint batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset); 428c2ecf20Sopenharmony_civoid batadv_nc_init_debugfs(struct batadv_priv *bat_priv); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#else /* ifdef CONFIG_BATMAN_ADV_NC */ 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_cistatic inline void batadv_nc_status_update(struct net_device *net_dev) 478c2ecf20Sopenharmony_ci{ 488c2ecf20Sopenharmony_ci} 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_cistatic inline int batadv_nc_init(void) 518c2ecf20Sopenharmony_ci{ 528c2ecf20Sopenharmony_ci return 0; 538c2ecf20Sopenharmony_ci} 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_cistatic inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv) 568c2ecf20Sopenharmony_ci{ 578c2ecf20Sopenharmony_ci return 0; 588c2ecf20Sopenharmony_ci} 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_cistatic inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv) 618c2ecf20Sopenharmony_ci{ 628c2ecf20Sopenharmony_ci} 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_cistatic inline void 658c2ecf20Sopenharmony_cibatadv_nc_update_nc_node(struct batadv_priv *bat_priv, 668c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_node, 678c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_neigh_node, 688c2ecf20Sopenharmony_ci struct batadv_ogm_packet *ogm_packet, 698c2ecf20Sopenharmony_ci int is_single_hop_neigh) 708c2ecf20Sopenharmony_ci{ 718c2ecf20Sopenharmony_ci} 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_cistatic inline void 748c2ecf20Sopenharmony_cibatadv_nc_purge_orig(struct batadv_priv *bat_priv, 758c2ecf20Sopenharmony_ci struct batadv_orig_node *orig_node, 768c2ecf20Sopenharmony_ci bool (*to_purge)(struct batadv_priv *, 778c2ecf20Sopenharmony_ci struct batadv_nc_node *)) 788c2ecf20Sopenharmony_ci{ 798c2ecf20Sopenharmony_ci} 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_cistatic inline void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv) 828c2ecf20Sopenharmony_ci{ 838c2ecf20Sopenharmony_ci} 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_cistatic inline void batadv_nc_init_orig(struct batadv_orig_node *orig_node) 868c2ecf20Sopenharmony_ci{ 878c2ecf20Sopenharmony_ci} 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_cistatic inline bool batadv_nc_skb_forward(struct sk_buff *skb, 908c2ecf20Sopenharmony_ci struct batadv_neigh_node *neigh_node) 918c2ecf20Sopenharmony_ci{ 928c2ecf20Sopenharmony_ci return false; 938c2ecf20Sopenharmony_ci} 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_cistatic inline void 968c2ecf20Sopenharmony_cibatadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, 978c2ecf20Sopenharmony_ci struct sk_buff *skb) 988c2ecf20Sopenharmony_ci{ 998c2ecf20Sopenharmony_ci} 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_cistatic inline void 1028c2ecf20Sopenharmony_cibatadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, 1038c2ecf20Sopenharmony_ci struct sk_buff *skb) 1048c2ecf20Sopenharmony_ci{ 1058c2ecf20Sopenharmony_ci} 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_cistatic inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq, 1088c2ecf20Sopenharmony_ci void *offset) 1098c2ecf20Sopenharmony_ci{ 1108c2ecf20Sopenharmony_ci return 0; 1118c2ecf20Sopenharmony_ci} 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_cistatic inline void batadv_nc_init_debugfs(struct batadv_priv *bat_priv) 1148c2ecf20Sopenharmony_ci{ 1158c2ecf20Sopenharmony_ci} 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci#endif /* ifdef CONFIG_BATMAN_ADV_NC */ 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci#endif /* _NET_BATMAN_ADV_NETWORK_CODING_H_ */ 120