udebug.init 962 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (c) 2021 OpenWrt.org
  3. START=11
  4. USE_PROCD=1
  5. PROG=/usr/sbin/udebugd
  6. start_service() {
  7. procd_open_instance
  8. procd_set_param command "$PROG"
  9. procd_set_param respawn
  10. procd_close_instance
  11. }
  12. get_vars() {
  13. local cfg="$1"
  14. uci show "udebug.$cfg" | while read LINE; do
  15. cur="${LINE##udebug.$1.}"
  16. [[ "$cur" = "$LINE" ]] && continue
  17. var="${cur%%=*}"
  18. [[ "$cur" = "$var" ]] && continue
  19. echo "$var"
  20. done
  21. }
  22. add_debug_service() {
  23. local cfg="$1"
  24. json_add_object "$cfg"
  25. for var in $(get_vars "$cfg"); do
  26. config_get val "$cfg" "$var"
  27. json_add_string "$var" "$val"
  28. done
  29. json_close_object "$cfg"
  30. }
  31. reload_service() {
  32. config_load udebug
  33. json_init
  34. json_add_object service
  35. config_foreach add_debug_service service
  36. json_close_object
  37. ubus call udebug set_config "$(json_dump)"
  38. }
  39. service_triggers() {
  40. procd_add_reload_trigger udebug
  41. }
  42. service_running() {
  43. ubus -t 10 wait_for udebug
  44. [ $? = 0 ] && reload_service
  45. }