1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /* Copyright (C) 2012-2020 B.A.T.M.A.N. contributors:
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Martin Hundebøll, Jeppe Ledet-Pedersen
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun #ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_
8*4882a593Smuzhiyun #define _NET_BATMAN_ADV_NETWORK_CODING_H_
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun #include "main.h"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun #include <linux/netdevice.h>
13*4882a593Smuzhiyun #include <linux/seq_file.h>
14*4882a593Smuzhiyun #include <linux/skbuff.h>
15*4882a593Smuzhiyun #include <linux/types.h>
16*4882a593Smuzhiyun #include <uapi/linux/batadv_packet.h>
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun #ifdef CONFIG_BATMAN_ADV_NC
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun void batadv_nc_status_update(struct net_device *net_dev);
21*4882a593Smuzhiyun int batadv_nc_init(void);
22*4882a593Smuzhiyun int batadv_nc_mesh_init(struct batadv_priv *bat_priv);
23*4882a593Smuzhiyun void batadv_nc_mesh_free(struct batadv_priv *bat_priv);
24*4882a593Smuzhiyun void batadv_nc_update_nc_node(struct batadv_priv *bat_priv,
25*4882a593Smuzhiyun struct batadv_orig_node *orig_node,
26*4882a593Smuzhiyun struct batadv_orig_node *orig_neigh_node,
27*4882a593Smuzhiyun struct batadv_ogm_packet *ogm_packet,
28*4882a593Smuzhiyun int is_single_hop_neigh);
29*4882a593Smuzhiyun void batadv_nc_purge_orig(struct batadv_priv *bat_priv,
30*4882a593Smuzhiyun struct batadv_orig_node *orig_node,
31*4882a593Smuzhiyun bool (*to_purge)(struct batadv_priv *,
32*4882a593Smuzhiyun struct batadv_nc_node *));
33*4882a593Smuzhiyun void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv);
34*4882a593Smuzhiyun void batadv_nc_init_orig(struct batadv_orig_node *orig_node);
35*4882a593Smuzhiyun bool batadv_nc_skb_forward(struct sk_buff *skb,
36*4882a593Smuzhiyun struct batadv_neigh_node *neigh_node);
37*4882a593Smuzhiyun void batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv,
38*4882a593Smuzhiyun struct sk_buff *skb);
39*4882a593Smuzhiyun void batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv,
40*4882a593Smuzhiyun struct sk_buff *skb);
41*4882a593Smuzhiyun int batadv_nc_nodes_seq_print_text(struct seq_file *seq, void *offset);
42*4882a593Smuzhiyun void batadv_nc_init_debugfs(struct batadv_priv *bat_priv);
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun #else /* ifdef CONFIG_BATMAN_ADV_NC */
45*4882a593Smuzhiyun
batadv_nc_status_update(struct net_device * net_dev)46*4882a593Smuzhiyun static inline void batadv_nc_status_update(struct net_device *net_dev)
47*4882a593Smuzhiyun {
48*4882a593Smuzhiyun }
49*4882a593Smuzhiyun
batadv_nc_init(void)50*4882a593Smuzhiyun static inline int batadv_nc_init(void)
51*4882a593Smuzhiyun {
52*4882a593Smuzhiyun return 0;
53*4882a593Smuzhiyun }
54*4882a593Smuzhiyun
batadv_nc_mesh_init(struct batadv_priv * bat_priv)55*4882a593Smuzhiyun static inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv)
56*4882a593Smuzhiyun {
57*4882a593Smuzhiyun return 0;
58*4882a593Smuzhiyun }
59*4882a593Smuzhiyun
batadv_nc_mesh_free(struct batadv_priv * bat_priv)60*4882a593Smuzhiyun static inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv)
61*4882a593Smuzhiyun {
62*4882a593Smuzhiyun }
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun static inline void
batadv_nc_update_nc_node(struct batadv_priv * bat_priv,struct batadv_orig_node * orig_node,struct batadv_orig_node * orig_neigh_node,struct batadv_ogm_packet * ogm_packet,int is_single_hop_neigh)65*4882a593Smuzhiyun batadv_nc_update_nc_node(struct batadv_priv *bat_priv,
66*4882a593Smuzhiyun struct batadv_orig_node *orig_node,
67*4882a593Smuzhiyun struct batadv_orig_node *orig_neigh_node,
68*4882a593Smuzhiyun struct batadv_ogm_packet *ogm_packet,
69*4882a593Smuzhiyun int is_single_hop_neigh)
70*4882a593Smuzhiyun {
71*4882a593Smuzhiyun }
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun static inline void
batadv_nc_purge_orig(struct batadv_priv * bat_priv,struct batadv_orig_node * orig_node,bool (* to_purge)(struct batadv_priv *,struct batadv_nc_node *))74*4882a593Smuzhiyun batadv_nc_purge_orig(struct batadv_priv *bat_priv,
75*4882a593Smuzhiyun struct batadv_orig_node *orig_node,
76*4882a593Smuzhiyun bool (*to_purge)(struct batadv_priv *,
77*4882a593Smuzhiyun struct batadv_nc_node *))
78*4882a593Smuzhiyun {
79*4882a593Smuzhiyun }
80*4882a593Smuzhiyun
batadv_nc_init_bat_priv(struct batadv_priv * bat_priv)81*4882a593Smuzhiyun static inline void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv)
82*4882a593Smuzhiyun {
83*4882a593Smuzhiyun }
84*4882a593Smuzhiyun
batadv_nc_init_orig(struct batadv_orig_node * orig_node)85*4882a593Smuzhiyun static inline void batadv_nc_init_orig(struct batadv_orig_node *orig_node)
86*4882a593Smuzhiyun {
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun
batadv_nc_skb_forward(struct sk_buff * skb,struct batadv_neigh_node * neigh_node)89*4882a593Smuzhiyun static inline bool batadv_nc_skb_forward(struct sk_buff *skb,
90*4882a593Smuzhiyun struct batadv_neigh_node *neigh_node)
91*4882a593Smuzhiyun {
92*4882a593Smuzhiyun return false;
93*4882a593Smuzhiyun }
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun static inline void
batadv_nc_skb_store_for_decoding(struct batadv_priv * bat_priv,struct sk_buff * skb)96*4882a593Smuzhiyun batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv,
97*4882a593Smuzhiyun struct sk_buff *skb)
98*4882a593Smuzhiyun {
99*4882a593Smuzhiyun }
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun static inline void
batadv_nc_skb_store_sniffed_unicast(struct batadv_priv * bat_priv,struct sk_buff * skb)102*4882a593Smuzhiyun batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv,
103*4882a593Smuzhiyun struct sk_buff *skb)
104*4882a593Smuzhiyun {
105*4882a593Smuzhiyun }
106*4882a593Smuzhiyun
batadv_nc_nodes_seq_print_text(struct seq_file * seq,void * offset)107*4882a593Smuzhiyun static inline int batadv_nc_nodes_seq_print_text(struct seq_file *seq,
108*4882a593Smuzhiyun void *offset)
109*4882a593Smuzhiyun {
110*4882a593Smuzhiyun return 0;
111*4882a593Smuzhiyun }
112*4882a593Smuzhiyun
batadv_nc_init_debugfs(struct batadv_priv * bat_priv)113*4882a593Smuzhiyun static inline void batadv_nc_init_debugfs(struct batadv_priv *bat_priv)
114*4882a593Smuzhiyun {
115*4882a593Smuzhiyun }
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun #endif /* ifdef CONFIG_BATMAN_ADV_NC */
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun #endif /* _NET_BATMAN_ADV_NETWORK_CODING_H_ */
120