if (!ifname)
ifname = vif->ifname;
- if (up && !strcmp(ifname, vif->ifname)) {
- struct device *dev = device_get(ifname, 2);
- if (dev) {
+ if (up) {
+ struct device *dev = __device_get(ifname, 2, false);
+
+ if (dev && !strcmp(ifname, vif->ifname)) {
dev->wireless_isolate = vif->isolate;
dev->wireless_proxyarp = vif->proxyarp;
dev->wireless = true;
vif->network = cur;
cur = tb[VIF_ATTR_MODE];
- if (cur)
- vif->ap_mode = !strcmp(blobmsg_get_string(cur), "ap");
-
- if (!vif->ap_mode)
- return;
+ vif->ap_mode = cur && !strcmp(blobmsg_get_string(cur), "ap");
cur = tb[VIF_ATTR_ISOLATE];
- if (cur)
- vif->isolate = blobmsg_get_bool(cur);
+ vif->isolate = vif->ap_mode && cur && blobmsg_get_bool(cur);
cur = tb[VIF_ATTR_PROXYARP];
- if (cur)
- vif->proxyarp = blobmsg_get_bool(cur);
-
+ vif->proxyarp = vif->ap_mode && cur && blobmsg_get_bool(cur);
}
/* vlist update call for wireless interface list */
wireless_interface_handle_link(vif_old, NULL, false);
free(vif_old->config);
vif_old->config = blob_memdup(vif_new->config);
- vif_old->isolate = vif_new->isolate;
- vif_old->ap_mode = vif_new->ap_mode;
wireless_interface_init_config(vif_old);
free(vif_new);
} else if (vif_new) {
struct blob_attr *val;
blobmsg_parse(&retry_policy, 1, &val, blobmsg_data(data), blobmsg_data_len(data));
- if (!val)
- return UBUS_STATUS_INVALID_ARGUMENT;
-
- wdev->retry = blobmsg_get_u32(val);
+ if (val)
+ wdev->retry = blobmsg_get_u32(val);
+ else
+ wdev->retry = WIRELESS_SETUP_RETRY;
+ __wireless_device_set_up(wdev, 0);
netifd_log_message(L_NOTICE, "Wireless device '%s' set retry=%d\n", wdev->name, wdev->retry);
return 0;
}