Blame view

net/batman-adv/bridge_loop_avoidance.h 3.92 KB
7db7d9f36   Sven Eckelmann   batman-adv: Add S...
1
  /* SPDX-License-Identifier: GPL-2.0 */
68e039f96   Sven Eckelmann   batman-adv: Updat...
2
  /* Copyright (C) 2011-2020  B.A.T.M.A.N. contributors:
23721387c   Simon Wunderlich   batman-adv: add b...
3
4
   *
   * Simon Wunderlich
23721387c   Simon Wunderlich   batman-adv: add b...
5
6
7
8
   */
  
  #ifndef _NET_BATMAN_ADV_BLA_H_
  #define _NET_BATMAN_ADV_BLA_H_
1e2c2a4fe   Sven Eckelmann   batman-adv: Add r...
9
  #include "main.h"
d3e9768ab   Simon Wunderlich   batman-adv: don't...
10
  #include <linux/compiler.h>
68a600de9   Sven Eckelmann   batman-adv: Use i...
11
12
13
14
  #include <linux/netdevice.h>
  #include <linux/netlink.h>
  #include <linux/seq_file.h>
  #include <linux/skbuff.h>
d3e9768ab   Simon Wunderlich   batman-adv: don't...
15
  #include <linux/stddef.h>
1e2c2a4fe   Sven Eckelmann   batman-adv: Add r...
16
  #include <linux/types.h>
d3e9768ab   Simon Wunderlich   batman-adv: don't...
17
  /**
7e9a8c2ce   Sven Eckelmann   batman-adv: Use p...
18
19
   * batadv_bla_is_loopdetect_mac() - check if the mac address is from a loop
   *  detect frame sent by bridge loop avoidance
d3e9768ab   Simon Wunderlich   batman-adv: don't...
20
21
22
23
24
25
26
27
28
29
30
31
   * @mac: mac address to check
   *
   * Return: true if the it looks like a loop detect frame
   * (mac starts with BA:BE), false otherwise
   */
  static inline bool batadv_bla_is_loopdetect_mac(const uint8_t *mac)
  {
  	if (mac[0] == 0xba && mac[1] == 0xbe)
  		return true;
  
  	return false;
  }
7a5cc2427   Simon Wunderlich   batman-adv: add b...
32
  #ifdef CONFIG_BATMAN_ADV_BLA
4b426b108   Sven Eckelmann   batman-adv: Use b...
33
  bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
74c09b727   Linus Lüssing   batman-adv: mcast...
34
  		   unsigned short vid, int packet_type);
4b426b108   Sven Eckelmann   batman-adv: Use b...
35
36
37
38
39
  bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
  		   unsigned short vid);
  bool batadv_bla_is_backbone_gw(struct sk_buff *skb,
  			       struct batadv_orig_node *orig_node,
  			       int hdr_size);
08adf1512   Sven Eckelmann   batman-adv: Prefi...
40
  int batadv_bla_claim_table_seq_print_text(struct seq_file *seq, void *offset);
04f3f5bf1   Andrew Lunn   batman-adv: add B...
41
  int batadv_bla_claim_dump(struct sk_buff *msg, struct netlink_callback *cb);
536a23f11   Simon Wunderlich   batman-adv: Add t...
42
43
  int batadv_bla_backbone_table_seq_print_text(struct seq_file *seq,
  					     void *offset);
ea4152e11   Simon Wunderlich   batman-adv: add b...
44
  int batadv_bla_backbone_dump(struct sk_buff *msg, struct netlink_callback *cb);
6b5e971a2   Sven Eckelmann   batman-adv: Repla...
45
  bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig,
cfd4f7570   Antonio Quartulli   batman-adv: make ...
46
  				    unsigned short vid);
4b426b108   Sven Eckelmann   batman-adv: Use b...
47
48
  bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
  				    struct sk_buff *skb);
56303d34a   Sven Eckelmann   batman-adv: Prefi...
49
50
51
  void batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
  				    struct batadv_hard_iface *primary_if,
  				    struct batadv_hard_iface *oldif);
d68081a24   Simon Wunderlich   batman-adv: purge...
52
  void batadv_bla_status_update(struct net_device *net_dev);
56303d34a   Sven Eckelmann   batman-adv: Prefi...
53
54
  int batadv_bla_init(struct batadv_priv *bat_priv);
  void batadv_bla_free(struct batadv_priv *bat_priv);
04f3f5bf1   Andrew Lunn   batman-adv: add B...
55
  int batadv_bla_claim_dump(struct sk_buff *msg, struct netlink_callback *cb);
00311de5f   Andreas Pape   batman-adv: preve...
56
57
58
59
  #ifdef CONFIG_BATMAN_ADV_DAT
  bool batadv_bla_check_claim(struct batadv_priv *bat_priv, u8 *addr,
  			    unsigned short vid);
  #endif
3964f7285   Sven Eckelmann   batman-adv: Prefi...
60
  #define BATADV_BLA_CRC_INIT	0
7a5cc2427   Simon Wunderlich   batman-adv: add b...
61
  #else /* ifdef CONFIG_BATMAN_ADV_BLA */
4b426b108   Sven Eckelmann   batman-adv: Use b...
62
63
  static inline bool batadv_bla_rx(struct batadv_priv *bat_priv,
  				 struct sk_buff *skb, unsigned short vid,
74c09b727   Linus Lüssing   batman-adv: mcast...
64
  				 int packet_type)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
65
  {
4b426b108   Sven Eckelmann   batman-adv: Use b...
66
  	return false;
7a5cc2427   Simon Wunderlich   batman-adv: add b...
67
  }
4b426b108   Sven Eckelmann   batman-adv: Use b...
68
69
  static inline bool batadv_bla_tx(struct batadv_priv *bat_priv,
  				 struct sk_buff *skb, unsigned short vid)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
70
  {
4b426b108   Sven Eckelmann   batman-adv: Use b...
71
  	return false;
7a5cc2427   Simon Wunderlich   batman-adv: add b...
72
  }
4b426b108   Sven Eckelmann   batman-adv: Use b...
73
74
75
  static inline bool batadv_bla_is_backbone_gw(struct sk_buff *skb,
  					     struct batadv_orig_node *orig_node,
  					     int hdr_size)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
76
  {
4b426b108   Sven Eckelmann   batman-adv: Use b...
77
  	return false;
7a5cc2427   Simon Wunderlich   batman-adv: add b...
78
  }
08adf1512   Sven Eckelmann   batman-adv: Prefi...
79
80
  static inline int batadv_bla_claim_table_seq_print_text(struct seq_file *seq,
  							void *offset)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
81
82
83
  {
  	return 0;
  }
536a23f11   Simon Wunderlich   batman-adv: Add t...
84
85
86
87
88
  static inline int batadv_bla_backbone_table_seq_print_text(struct seq_file *seq,
  							   void *offset)
  {
  	return 0;
  }
cfd4f7570   Antonio Quartulli   batman-adv: make ...
89
  static inline bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv,
6b5e971a2   Sven Eckelmann   batman-adv: Repla...
90
  						  u8 *orig, unsigned short vid)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
91
  {
cfd4f7570   Antonio Quartulli   batman-adv: make ...
92
  	return false;
7a5cc2427   Simon Wunderlich   batman-adv: add b...
93
  }
4b426b108   Sven Eckelmann   batman-adv: Use b...
94
  static inline bool
56303d34a   Sven Eckelmann   batman-adv: Prefi...
95
  batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv,
004e86fc5   Simon Wunderlich   batman-adv: Fix b...
96
  			       struct sk_buff *skb)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
97
  {
4b426b108   Sven Eckelmann   batman-adv: Use b...
98
  	return false;
7a5cc2427   Simon Wunderlich   batman-adv: add b...
99
  }
08adf1512   Sven Eckelmann   batman-adv: Prefi...
100
  static inline void
56303d34a   Sven Eckelmann   batman-adv: Prefi...
101
102
103
  batadv_bla_update_orig_address(struct batadv_priv *bat_priv,
  			       struct batadv_hard_iface *primary_if,
  			       struct batadv_hard_iface *oldif)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
104
105
  {
  }
56303d34a   Sven Eckelmann   batman-adv: Prefi...
106
  static inline int batadv_bla_init(struct batadv_priv *bat_priv)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
107
108
109
  {
  	return 1;
  }
56303d34a   Sven Eckelmann   batman-adv: Prefi...
110
  static inline void batadv_bla_free(struct batadv_priv *bat_priv)
7a5cc2427   Simon Wunderlich   batman-adv: add b...
111
112
  {
  }
04f3f5bf1   Andrew Lunn   batman-adv: add B...
113
114
115
116
117
  static inline int batadv_bla_claim_dump(struct sk_buff *msg,
  					struct netlink_callback *cb)
  {
  	return -EOPNOTSUPP;
  }
ea4152e11   Simon Wunderlich   batman-adv: add b...
118
119
120
121
122
  static inline int batadv_bla_backbone_dump(struct sk_buff *msg,
  					   struct netlink_callback *cb)
  {
  	return -EOPNOTSUPP;
  }
00311de5f   Andreas Pape   batman-adv: preve...
123
124
125
126
127
128
  static inline
  bool batadv_bla_check_claim(struct batadv_priv *bat_priv, u8 *addr,
  			    unsigned short vid)
  {
  	return true;
  }
7a5cc2427   Simon Wunderlich   batman-adv: add b...
129
  #endif /* ifdef CONFIG_BATMAN_ADV_BLA */
23721387c   Simon Wunderlich   batman-adv: add b...
130
131
  
  #endif /* ifndef _NET_BATMAN_ADV_BLA_H_ */