summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto-shell.c12
-rw-r--r--scripts/netifd-proto.sh2
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"