struct proto_shell_state *state;
state = container_of(p, struct proto_shell_state, teardown_task);
- state->proto.proto_event(&state->proto, IFPEV_DOWN);
+
if (state->l3_dev.dev)
device_remove_user(&state->l3_dev);
+
+ state->proto.proto_event(&state->proto, IFPEV_DOWN);
}
static void
int str_len = 0;
int i;
- attrs = calloc(1, sizeof(*attrs));
+ config->n_params = json_object_array_length(obj);
+ attrs = calloc(1, sizeof(*attrs) * config->n_params);
if (!attrs)
return NULL;
- config->n_params = json_object_array_length(obj);
config->params = attrs;
for (i = 0; i < config->n_params; i++) {
json_object *cur, *name, *type;
if (attrs[i].type > BLOBMSG_TYPE_LAST)
goto error;
- str_len += strlen(attrs[i].name + 1);
+ str_len += strlen(attrs[i].name) + 1;
}
str_buf = malloc(str_len);