+ if (cfg->flags & BRIDGE_OPT_ROBUSTNESS) {
+ snprintf(buf, buf_len, "%i", cfg->robustness);
+ system_bridge_set_robustness(bridge, buf);
+ }
+
+ if (cfg->flags & BRIDGE_OPT_QUERY_INTERVAL) {
+ snprintf(buf, buf_len, "%i", cfg->query_interval);
+ system_bridge_set_query_interval(bridge, buf);
+ }
+
+ if (cfg->flags & BRIDGE_OPT_QUERY_RESPONSE_INTERVAL) {
+ snprintf(buf, buf_len, "%i", cfg->query_response_interval);
+ system_bridge_set_query_response_interval(bridge, buf);
+ }
+
+ if (cfg->flags & BRIDGE_OPT_LAST_MEMBER_INTERVAL) {
+ snprintf(buf, buf_len, "%i", cfg->last_member_interval);
+ system_bridge_set_last_member_interval(bridge, buf);
+ }
+
+ system_bridge_conf_multicast_deps(bridge, cfg, buf, buf_len);
+}
+
+int system_bridge_addbr(struct device *bridge, struct bridge_config *cfg)
+{
+ char buf[64];
+ unsigned long args[4] = {};
+
+ if (ioctl(sock_ioctl, SIOCBRADDBR, bridge->ifname) < 0)
+ return -1;
+
+ args[0] = BRCTL_SET_BRIDGE_STP_STATE;
+ args[1] = !!cfg->stp;
+ system_bridge_if(bridge->ifname, NULL, SIOCDEVPRIVATE, &args);
+
+ args[0] = BRCTL_SET_BRIDGE_FORWARD_DELAY;
+ args[1] = sec_to_jiffies(cfg->forward_delay);
+ system_bridge_if(bridge->ifname, NULL, SIOCDEVPRIVATE, &args);
+
+ system_bridge_conf_multicast(bridge, cfg, buf, sizeof(buf));
+