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