system_set_dev_sysctl("/sys/class/net/%s/brport/multicast_to_unicast", dev->ifname, val);
}
+static void system_bridge_set_multicast_fast_leave(struct device *dev, const char *val)
+{
+ system_set_dev_sysctl("/sys/class/net/%s/brport/multicast_fast_leave", dev->ifname, val);
+}
+
static void system_bridge_set_hairpin_mode(struct device *dev, const char *val)
{
system_set_dev_sysctl("/sys/class/net/%s/brport/hairpin_mode", dev->ifname, val);
return;
found:
- dev = device_get(interface, false);
+ dev = device_find(interface);
if (!dev)
return;
system_bridge_set_multicast_router(dev, buf, false);
}
+ if (dev->settings.flags & DEV_OPT_MULTICAST_FAST_LEAVE &&
+ dev->settings.multicast_fast_leave)
+ system_bridge_set_multicast_fast_leave(dev, "1");
+
if (dev->settings.flags & DEV_OPT_LEARNING &&
!dev->settings.learning)
system_bridge_set_learning(dev, "0");
{
int ret = -1;
char buf[64];
+ int fd;
+
snprintf(buf, sizeof(buf), "/proc/sys/net/ipv6/conf/%s/mtu",
dev->ifname);
- int fd = open(buf, O_RDWR);
+ fd = open(buf, O_RDWR);
+ if (fd < 0)
+ return ret;
if (!mtu) {
ssize_t len = read(fd, buf, sizeof(buf) - 1);