Blame view

net/batman-adv/multicast.h 2.87 KB
7db7d9f36   Sven Eckelmann   batman-adv: Add S...
1
  /* SPDX-License-Identifier: GPL-2.0 */
68e039f96   Sven Eckelmann   batman-adv: Updat...
2
  /* Copyright (C) 2014-2020  B.A.T.M.A.N. contributors:
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
3
4
   *
   * Linus Lüssing
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
5
6
7
8
   */
  
  #ifndef _NET_BATMAN_ADV_MULTICAST_H_
  #define _NET_BATMAN_ADV_MULTICAST_H_
1e2c2a4fe   Sven Eckelmann   batman-adv: Add r...
9
  #include "main.h"
68a600de9   Sven Eckelmann   batman-adv: Use i...
10
11
12
  #include <linux/netlink.h>
  #include <linux/seq_file.h>
  #include <linux/skbuff.h>
1e2c2a4fe   Sven Eckelmann   batman-adv: Add r...
13

1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
14
  /**
6f68b0027   Sven Eckelmann   batman-adv: Fix k...
15
   * enum batadv_forw_mode - the way a packet should be forwarded as
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
16
17
   */
  enum batadv_forw_mode {
8b84cc4fb   Sven Eckelmann   batman-adv: Use i...
18
19
20
21
  	/**
  	 * @BATADV_FORW_ALL: forward the packet to all nodes (currently via
  	 *  classic flooding)
  	 */
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
22
  	BATADV_FORW_ALL,
8b84cc4fb   Sven Eckelmann   batman-adv: Use i...
23
24
  
  	/**
32e727449   Linus Lüssing   batman-adv: Add m...
25
26
27
28
29
30
31
  	 * @BATADV_FORW_SOME: forward the packet to some nodes (currently via
  	 *  a multicast-to-unicast conversion and the BATMAN unicast routing
  	 *  protocol)
  	 */
  	BATADV_FORW_SOME,
  
  	/**
8b84cc4fb   Sven Eckelmann   batman-adv: Use i...
32
33
34
  	 * @BATADV_FORW_SINGLE: forward the packet to a single node (currently
  	 *  via the BATMAN unicast routing protocol)
  	 */
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
35
  	BATADV_FORW_SINGLE,
8b84cc4fb   Sven Eckelmann   batman-adv: Use i...
36
37
  
  	/** @BATADV_FORW_NONE: don't forward, drop it */
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
38
39
  	BATADV_FORW_NONE,
  };
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
40
  #ifdef CONFIG_BATMAN_ADV_MCAST
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
41
42
43
  enum batadv_forw_mode
  batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  		       struct batadv_orig_node **mcast_single_orig);
3236d215a   Linus Lüssing   batman-adv: mcast...
44
45
46
47
  int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
  				struct sk_buff *skb,
  				unsigned short vid,
  				struct batadv_orig_node *orig_node);
32e727449   Linus Lüssing   batman-adv: Add m...
48
49
  int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
  			   unsigned short vid);
60432d756   Linus Lüssing   batman-adv: Annou...
50
  void batadv_mcast_init(struct batadv_priv *bat_priv);
4e3e823b5   Linus Lüssing   batman-adv: Add d...
51
  int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
53dd9a68b   Linus Lüssing   batman-adv: add m...
52
53
54
55
  int batadv_mcast_mesh_info_put(struct sk_buff *msg,
  			       struct batadv_priv *bat_priv);
  
  int batadv_mcast_flags_dump(struct sk_buff *msg, struct netlink_callback *cb);
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
56
  void batadv_mcast_free(struct batadv_priv *bat_priv);
60432d756   Linus Lüssing   batman-adv: Annou...
57
  void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
58
  #else
1d8ab8d3c   Linus Lüssing   batman-adv: Modif...
59
60
61
62
63
64
  static inline enum batadv_forw_mode
  batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  		       struct batadv_orig_node **mcast_single_orig)
  {
  	return BATADV_FORW_ALL;
  }
32e727449   Linus Lüssing   batman-adv: Add m...
65
  static inline int
3236d215a   Linus Lüssing   batman-adv: mcast...
66
67
68
69
70
71
72
73
74
75
  batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv,
  			    struct sk_buff *skb,
  			    unsigned short vid,
  			    struct batadv_orig_node *orig_node)
  {
  	kfree_skb(skb);
  	return NET_XMIT_DROP;
  }
  
  static inline int
32e727449   Linus Lüssing   batman-adv: Add m...
76
77
78
79
80
81
  batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
  		       unsigned short vid)
  {
  	kfree_skb(skb);
  	return NET_XMIT_DROP;
  }
60432d756   Linus Lüssing   batman-adv: Annou...
82
83
84
85
  static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
  {
  	return 0;
  }
53dd9a68b   Linus Lüssing   batman-adv: add m...
86
87
88
89
90
91
92
93
94
95
96
  static inline int
  batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv)
  {
  	return 0;
  }
  
  static inline int batadv_mcast_flags_dump(struct sk_buff *msg,
  					  struct netlink_callback *cb)
  {
  	return -EOPNOTSUPP;
  }
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
97
98
  static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
  {
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
99
  }
60432d756   Linus Lüssing   batman-adv: Annou...
100
101
  static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
  {
60432d756   Linus Lüssing   batman-adv: Annou...
102
  }
c5caf4ef3   Linus Lüssing   batman-adv: Multi...
103
104
105
  #endif /* CONFIG_BATMAN_ADV_MCAST */
  
  #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */