| #!/bin/sh /etc/rc.common |
| # Copyright (c) 2021 OpenWrt.org |
| |
| START=11 |
| |
| USE_PROCD=1 |
| PROG=/usr/sbin/udebugd |
| |
| start_service() { |
| procd_open_instance |
| procd_set_param command "$PROG" |
| procd_set_param respawn |
| procd_close_instance |
| } |
| |
| get_vars() { |
| local cfg="$1" |
| uci show "udebug.$cfg" | while read LINE; do |
| cur="${LINE##udebug.$1.}" |
| [[ "$cur" = "$LINE" ]] && continue |
| var="${cur%%=*}" |
| [[ "$cur" = "$var" ]] && continue |
| echo "$var" |
| done |
| } |
| |
| add_debug_service() { |
| local cfg="$1" |
| |
| json_add_object "$cfg" |
| for var in $(get_vars "$cfg"); do |
| config_get val "$cfg" "$var" |
| json_add_string "$var" "$val" |
| done |
| json_close_object "$cfg" |
| } |
| |
| reload_service() { |
| config_load udebug |
| |
| json_init |
| json_add_object service |
| config_foreach add_debug_service service |
| json_close_object |
| ubus call udebug set_config "$(json_dump)" |
| } |
| |
| service_triggers() { |
| procd_add_reload_trigger udebug |
| } |
| |
| service_started() { |
| ubus -t 10 wait_for udebug |
| [ $? = 0 ] && reload_service |
| } |