diff mbox

[OpenWrt-Devel,netifd] Do not enable multicast_to_unicast by default

Message ID 20150910171604.3e3bef63c7ae318e8a66a982@ubnt.com
State Rejected
Headers show

Commit Message

Dmitry Ivanov Sept. 10, 2015, 2:16 p.m. UTC
Do not enable multicast_to_unicast by default. Duplicate broadcast and
multicast frames may cause problems in WDS setup. Wireless clients
cannot obtain IP address etc.

Signed-off-by: Dmitry Ivanov <dima@ubnt.com>
---
 scripts/netifd-wireless.sh | 2 +-
 system-linux.c             | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

Comments

Felix Fietkau Sept. 10, 2015, 2:31 p.m. UTC | #1
On 2015-09-10 16:16, Dmitry Ivanov wrote:
> Do not enable multicast_to_unicast by default. Duplicate broadcast and
> multicast frames may cause problems in WDS setup. Wireless clients
> cannot obtain IP address etc.
> 
> Signed-off-by: Dmitry Ivanov <dima@ubnt.com>
The feature was intended to work automatically and transparently, and
your hack simply disables it instead of attempting to solve the real issue.
I've already posted a patch that should hopefully fix it properly, so
please test that instead of sending more hack patches.

- Felix
diff mbox

Patch

diff --git a/scripts/netifd-wireless.sh b/scripts/netifd-wireless.sh
index 83a8223..774a503 100644
--- a/scripts/netifd-wireless.sh
+++ b/scripts/netifd-wireless.sh
@@ -256,7 +256,7 @@  _wireless_set_brsnoop_isolation() {
 
 	[ $isolate -gt 0 -o -z "$network_bridge" ] && return
 
-	[ -z "$multicast_to_unicast" ] && multicast_to_unicast=1
+	[ -z "$multicast_to_unicast" ] && multicast_to_unicast=0
 	[ $multicast_to_unicast -gt 0 ] && json_add_boolean isolate 1
 }
 
diff --git a/system-linux.c b/system-linux.c
index 01500a5..6994ace 100644
--- a/system-linux.c
+++ b/system-linux.c
@@ -576,12 +576,11 @@  static char *system_get_bridge(const char *name, char *buf, int buflen)
 static void
 system_bridge_set_wireless(struct device *bridge, struct device *dev)
 {
-	bool mcast_to_ucast = true;
+	bool mcast_to_ucast = false;
 	bool hairpin = true;
 
-	if (bridge->settings.flags & DEV_OPT_MULTICAST_TO_UNICAST &&
-	    !bridge->settings.multicast_to_unicast)
-		mcast_to_ucast = false;
+	if (bridge->settings.flags & DEV_OPT_MULTICAST_TO_UNICAST)
+		mcast_to_ucast = bridge->settings.multicast_to_unicast;
 
 	if (!mcast_to_ucast || dev->wireless_isolate)
 		hairpin = false;