1
2
3
4
5
6
7#ifndef _NET_BATMAN_ADV_MULTICAST_H_
8#define _NET_BATMAN_ADV_MULTICAST_H_
9
10#include "main.h"
11
12#include <linux/netlink.h>
13#include <linux/skbuff.h>
14
15
16
17
18enum batadv_forw_mode {
19
20
21
22
23 BATADV_FORW_ALL,
24
25
26
27
28
29
30 BATADV_FORW_SOME,
31
32
33
34
35
36 BATADV_FORW_SINGLE,
37
38
39 BATADV_FORW_NONE,
40};
41
42#ifdef CONFIG_BATMAN_ADV_MCAST
43
44enum batadv_forw_mode
45batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
46 struct batadv_orig_node **mcast_single_orig);
47
48int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
49 struct sk_buff *skb,
50 unsigned short vid,
51 struct batadv_orig_node *orig_node);
52
53int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
54 unsigned short vid);
55
56void batadv_mcast_init(struct batadv_priv *bat_priv);
57
58int batadv_mcast_mesh_info_put(struct sk_buff *msg,
59 struct batadv_priv *bat_priv);
60
61int batadv_mcast_flags_dump(struct sk_buff *msg, struct netlink_callback *cb);
62
63void batadv_mcast_free(struct batadv_priv *bat_priv);
64
65void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
66
67#else
68
69static inline enum batadv_forw_mode
70batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
71 struct batadv_orig_node **mcast_single_orig)
72{
73 return BATADV_FORW_ALL;
74}
75
76static inline int
77batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
78 struct sk_buff *skb,
79 unsigned short vid,
80 struct batadv_orig_node *orig_node)
81{
82 kfree_skb(skb);
83 return NET_XMIT_DROP;
84}
85
86static inline int
87batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
88 unsigned short vid)
89{
90 kfree_skb(skb);
91 return NET_XMIT_DROP;
92}
93
94static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
95{
96 return 0;
97}
98
99static inline int
100batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv)
101{
102 return 0;
103}
104
105static inline int batadv_mcast_flags_dump(struct sk_buff *msg,
106 struct netlink_callback *cb)
107{
108 return -EOPNOTSUPP;
109}
110
111static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
112{
113}
114
115static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
116{
117}
118
119#endif
120
121#endif
122