- if ((cur = tb[INSTANCE_ATTR_DATA]))
- blobmsg_list_fill(&in->data, blobmsg_data(cur), blobmsg_data_len(cur));
+ blobmsg_for_each_attr(cur2, cur, rem) {
+ argc++;
+ break;
+ }
+ if (!argc)
+ return false;
+
+ in->command = cur;
+
+ if ((cur = tb[INSTANCE_ATTR_NICE])) {
+ in->nice = (int8_t) blobmsg_get_u32(cur);
+ if (in->nice < -20 || in->nice > 20)
+ return false;
+ }
+
+ if ((cur = tb[INSTANCE_ATTR_ENV])) {
+ if (!blobmsg_check_attr_list(cur, BLOBMSG_TYPE_STRING))
+ return false;
+
+ blobmsg_list_fill(&in->env, blobmsg_data(cur), blobmsg_data_len(cur), false);
+ }
+
+ if ((cur = tb[INSTANCE_ATTR_DATA])) {
+ if (!blobmsg_check_attr_list(cur, BLOBMSG_TYPE_STRING))
+ return false;
+
+ blobmsg_list_fill(&in->data, blobmsg_data(cur), blobmsg_data_len(cur), false);
+ }
+
+ if ((cur = tb[INSTANCE_ATTR_NETDEV])) {
+ struct blobmsg_list_node *ndev;
+
+ if (!blobmsg_check_attr_list(cur, BLOBMSG_TYPE_STRING))
+ return false;
+
+ blobmsg_list_fill(&in->netdev, blobmsg_data(cur), blobmsg_data_len(cur), true);
+ blobmsg_list_for_each(&in->netdev, ndev)
+ instance_netdev_update(ndev);
+ }