X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=proto%2Fnetifd-proto.sh;h=b91863f7346fc4cd3548a2bd714d2184ef85e795;hp=f850216c3af5fcd1c15459ed56e586739d13fe28;hb=c601d036d6e9efce0c31eecd0fc66a716f41f2a3;hpb=23cfcee20f43d824d61fadef48af84a83d5b8816 diff --git a/proto/netifd-proto.sh b/proto/netifd-proto.sh index f850216..b91863f 100755 --- a/proto/netifd-proto.sh +++ b/proto/netifd-proto.sh @@ -1,15 +1,22 @@ . /usr/share/libubox/jshn.sh +proto_config_add_generic() { + json_add_array "" + json_add_string "" "$1" + json_add_int "" "$2" + json_close_array +} + proto_config_add_int() { - json_add_int "$1" 5 + proto_config_add_generic "$1" 5 } proto_config_add_string() { - json_add_int "$1" 3 + proto_config_add_generic "$1" 3 } proto_config_add_boolean() { - json_add_int "$1" 7 + proto_config_add_generic "$1" 7 } add_default_handler() { @@ -19,7 +26,11 @@ add_default_handler() { esac } -case "$1" in +proto="$1" +cmd="$2" +data="$3" + +case "$cmd" in dump) add_protocol() { immediate=0 @@ -30,15 +41,21 @@ case "$1" in json_add_string "name" "$1" eval "$1_init" json_add_boolean immediate "$immediate" - json_add_object "config" + json_add_array "config" eval "$1_init_config" - json_close_object + json_close_array json_dump } ;; *) add_protocol() { - return; + [[ "$proto" == "$1" ]] || return 0 + + case "$cmd" in + setup) eval "$1_setup \"\$data\"" ;; + teardown) eval "$1_teardown \"\$data\"" ;; + *) return 1 ;; + esac } ;; esac