aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/batman-adv/soft-interface.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index 948860a2a576..22bc65102370 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -146,8 +146,10 @@ static int batadv_interface_tx(struct sk_buff *skb,
146 struct batadv_bcast_packet *bcast_packet; 146 struct batadv_bcast_packet *bcast_packet;
147 struct vlan_ethhdr *vhdr; 147 struct vlan_ethhdr *vhdr;
148 __be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN); 148 __be16 ethertype = __constant_htons(BATADV_ETH_P_BATMAN);
149 static const uint8_t stp_addr[ETH_ALEN] = {0x01, 0x80, 0xC2, 0x00, 0x00, 149 static const uint8_t stp_addr[ETH_ALEN] = {0x01, 0x80, 0xC2, 0x00,
150 0x00}; 150 0x00, 0x00};
151 static const uint8_t ectp_addr[ETH_ALEN] = {0xCF, 0x00, 0x00, 0x00,
152 0x00, 0x00};
151 unsigned int header_len = 0; 153 unsigned int header_len = 0;
152 int data_len = skb->len, ret; 154 int data_len = skb->len, ret;
153 short vid __maybe_unused = -1; 155 short vid __maybe_unused = -1;
@@ -180,10 +182,16 @@ static int batadv_interface_tx(struct sk_buff *skb,
180 182
181 /* don't accept stp packets. STP does not help in meshes. 183 /* don't accept stp packets. STP does not help in meshes.
182 * better use the bridge loop avoidance ... 184 * better use the bridge loop avoidance ...
185 *
186 * The same goes for ECTP sent at least by some Cisco Switches,
187 * it might confuse the mesh when used with bridge loop avoidance.
183 */ 188 */
184 if (batadv_compare_eth(ethhdr->h_dest, stp_addr)) 189 if (batadv_compare_eth(ethhdr->h_dest, stp_addr))
185 goto dropped; 190 goto dropped;
186 191
192 if (batadv_compare_eth(ethhdr->h_dest, ectp_addr))
193 goto dropped;
194
187 if (is_multicast_ether_addr(ethhdr->h_dest)) { 195 if (is_multicast_ether_addr(ethhdr->h_dest)) {
188 do_bcast = true; 196 do_bcast = true;
189 197