]> Git Repo - linux.git/blame - net/batman-adv/multicast.h
Merge tag 'gfs2-v5.15-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / net / batman-adv / multicast.h
CommitLineData
7db7d9f3 1/* SPDX-License-Identifier: GPL-2.0 */
cfa55c6d 2/* Copyright (C) B.A.T.M.A.N. contributors:
c5caf4ef
LL
3 *
4 * Linus Lüssing
c5caf4ef
LL
5 */
6
7#ifndef _NET_BATMAN_ADV_MULTICAST_H_
8#define _NET_BATMAN_ADV_MULTICAST_H_
9
1e2c2a4f
SE
10#include "main.h"
11
68a600de 12#include <linux/netlink.h>
68a600de 13#include <linux/skbuff.h>
1e2c2a4f 14
1d8ab8d3 15/**
6f68b002 16 * enum batadv_forw_mode - the way a packet should be forwarded as
1d8ab8d3
LL
17 */
18enum batadv_forw_mode {
8b84cc4f
SE
19 /**
20 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via
21 * classic flooding)
22 */
1d8ab8d3 23 BATADV_FORW_ALL,
8b84cc4f 24
32e72744
LL
25 /**
26 * @BATADV_FORW_SOME: forward the packet to some nodes (currently via
27 * a multicast-to-unicast conversion and the BATMAN unicast routing
28 * protocol)
29 */
30 BATADV_FORW_SOME,
31
8b84cc4f
SE
32 /**
33 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently
34 * via the BATMAN unicast routing protocol)
35 */
1d8ab8d3 36 BATADV_FORW_SINGLE,
8b84cc4f
SE
37
38 /** @BATADV_FORW_NONE: don't forward, drop it */
1d8ab8d3
LL
39 BATADV_FORW_NONE,
40};
41
c5caf4ef
LL
42#ifdef CONFIG_BATMAN_ADV_MCAST
43
1d8ab8d3
LL
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
3236d215
LL
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
32e72744
LL
53int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
54 unsigned short vid);
55
60432d75
LL
56void batadv_mcast_init(struct batadv_priv *bat_priv);
57
53dd9a68
LL
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
c5caf4ef
LL
63void batadv_mcast_free(struct batadv_priv *bat_priv);
64
60432d75
LL
65void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
66
c5caf4ef
LL
67#else
68
1d8ab8d3
LL
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
3236d215
LL
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
32e72744
LL
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
60432d75
LL
94static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
95{
96 return 0;
97}
98
53dd9a68
LL
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
c5caf4ef
LL
111static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
112{
c5caf4ef
LL
113}
114
60432d75
LL
115static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
116{
60432d75
LL
117}
118
c5caf4ef
LL
119#endif /* CONFIG_BATMAN_ADV_MCAST */
120
121#endif /* _NET_BATMAN_ADV_MULTICAST_H_ */
This page took 0.372086 seconds and 4 git commands to generate.