multicast.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (C) 2014-2018 B.A.T.M.A.N. contributors:
  3. *
  4. * Linus Lüssing
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of version 2 of the GNU General Public
  8. * License as published by the Free Software Foundation.
  9. *
  10. * This program is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, see <http://www.gnu.org/licenses/>.
  17. */
  18. #ifndef _NET_BATMAN_ADV_MULTICAST_H_
  19. #define _NET_BATMAN_ADV_MULTICAST_H_
  20. #include "main.h"
  21. struct netlink_callback;
  22. struct seq_file;
  23. struct sk_buff;
  24. /**
  25. * enum batadv_forw_mode - the way a packet should be forwarded as
  26. */
  27. enum batadv_forw_mode {
  28. /**
  29. * @BATADV_FORW_ALL: forward the packet to all nodes (currently via
  30. * classic flooding)
  31. */
  32. BATADV_FORW_ALL,
  33. /**
  34. * @BATADV_FORW_SINGLE: forward the packet to a single node (currently
  35. * via the BATMAN unicast routing protocol)
  36. */
  37. BATADV_FORW_SINGLE,
  38. /** @BATADV_FORW_NONE: don't forward, drop it */
  39. BATADV_FORW_NONE,
  40. };
  41. #ifdef CONFIG_BATMAN_ADV_MCAST
  42. enum batadv_forw_mode
  43. batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  44. struct batadv_orig_node **mcast_single_orig);
  45. void batadv_mcast_init(struct batadv_priv *bat_priv);
  46. int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
  47. int batadv_mcast_mesh_info_put(struct sk_buff *msg,
  48. struct batadv_priv *bat_priv);
  49. int batadv_mcast_flags_dump(struct sk_buff *msg, struct netlink_callback *cb);
  50. void batadv_mcast_free(struct batadv_priv *bat_priv);
  51. void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node);
  52. #else
  53. static inline enum batadv_forw_mode
  54. batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
  55. struct batadv_orig_node **mcast_single_orig)
  56. {
  57. return BATADV_FORW_ALL;
  58. }
  59. static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
  60. {
  61. return 0;
  62. }
  63. static inline int
  64. batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv)
  65. {
  66. return 0;
  67. }
  68. static inline int batadv_mcast_flags_dump(struct sk_buff *msg,
  69. struct netlink_callback *cb)
  70. {
  71. return -EOPNOTSUPP;
  72. }
  73. static inline void batadv_mcast_free(struct batadv_priv *bat_priv)
  74. {
  75. }
  76. static inline void batadv_mcast_purge_orig(struct batadv_orig_node *orig_node)
  77. {
  78. }
  79. #endif /* CONFIG_BATMAN_ADV_MCAST */
  80. #endif /* _NET_BATMAN_ADV_MULTICAST_H_ */