diff options
-rw-r--r-- | proto-shell.c | 12 | ||||
-rw-r--r-- | scripts/netifd-proto.sh | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/proto-shell.c b/proto-shell.c index bc4c658..50f1b5b 100644 --- a/proto-shell.c +++ b/proto-shell.c @@ -44,6 +44,7 @@ struct proto_shell_handler { char *config_buf; char *script_name; bool init_available; + bool no_proto_task; struct uci_blob_param_list config; }; @@ -284,11 +285,12 @@ proto_shell_task_finish(struct proto_shell_state *state, if (task == &state->proto_task) proto_shell_handler(&state->proto, PROTO_CMD_TEARDOWN, false); - if (task == &state->script_task) { + else if (task == &state->script_task) { if (state->renew_pending) proto_shell_handler(&state->proto, PROTO_CMD_RENEW, false); - else if (!state->proto_task.uloop.pending && + else if (!state->handler->no_proto_task && + !state->proto_task.uloop.pending && state->sm == S_SETUP) proto_shell_handler(&state->proto, PROTO_CMD_TEARDOWN, @@ -818,6 +820,12 @@ proto_shell_add_handler(const char *script, const char *name, json_object *obj) if (tmp && json_object_get_boolean(tmp)) handler->proto.flags |= PROTO_FLAG_NODEV; + tmp = json_get_field(obj, "no-proto-task", json_type_boolean); + if (tmp && json_object_get_boolean(tmp)) + handler->no_proto_task = true; + else + handler->no_proto_task = false; + tmp = json_get_field(obj, "available", json_type_boolean); if (tmp && json_object_get_boolean(tmp)) handler->proto.flags |= PROTO_FLAG_INIT_AVAILABLE; diff --git a/scripts/netifd-proto.sh b/scripts/netifd-proto.sh index 95c1bb3..447f0f6 100644 --- a/scripts/netifd-proto.sh +++ b/scripts/netifd-proto.sh @@ -362,6 +362,7 @@ init_proto() { dump) add_protocol() { no_device=0 + no_proto_task=0 available=0 renew_handler=0 @@ -373,6 +374,7 @@ init_proto() { eval "proto_$1_init_config" json_close_array json_add_boolean no-device "$no_device" + json_add_boolean no-proto-task "$no_proto_task" json_add_boolean available "$available" json_add_boolean renew-handler "$renew_handler" json_add_boolean lasterror "$lasterror" |