umdns.init 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (c) 2014 OpenWrt.org
  3. START=80
  4. USE_PROCD=1
  5. PROG=/usr/sbin/umdns
  6. IFACES=""
  7. load_ifaces() {
  8. local network="$(uci -q get umdns.@umdns[-1].network)"
  9. for n in $network; do
  10. local device
  11. json_load "$(ifstatus $n)"
  12. json_get_var device l3_device
  13. echo -n "$device "
  14. done
  15. }
  16. do_reload_service() {
  17. json_init
  18. json_add_array interfaces
  19. for i in $(load_ifaces); do
  20. json_add_string "" "$i"
  21. done
  22. json_close_array
  23. ubus call umdns set_config "$(json_dump)"
  24. }
  25. start_service() {
  26. local network="$(uci -q get umdns.@umdns[-1].network)"
  27. procd_open_instance
  28. procd_set_param command "$PROG"
  29. [ -f /etc/seccomp/umdns.json ] && procd_set_param seccomp /etc/seccomp/umdns.json
  30. procd_set_param respawn
  31. procd_open_data
  32. json_add_array firewall
  33. for n in $network; do
  34. json_add_object ""
  35. json_add_string type rule
  36. json_add_string proto udp
  37. json_add_string src "$n"
  38. json_add_int dest_port 5353
  39. json_add_string target ACCEPT
  40. json_close_object
  41. done
  42. json_close_array
  43. procd_close_data
  44. procd_open_trigger
  45. procd_add_config_trigger "config.change" "umdns" /etc/init.d/umdns reload
  46. for n in $network; do
  47. procd_add_interface_trigger "interface.*" $n /etc/init.d/umdns reload
  48. done
  49. procd_add_raw_trigger "instance.update" 5000 "/bin/ubus" "call" "umdns" "reload"
  50. procd_close_trigger
  51. [ "$(uci get umdns.@umdns[-1].jail)" = 1 ] && {
  52. procd_add_jail umdns ubus log udebug
  53. [ -d /etc/umdns ] && procd_add_jail_mount "/etc/umdns"
  54. }
  55. procd_close_instance
  56. }
  57. reload_service() {
  58. rc_procd start_service
  59. do_reload_service
  60. }
  61. service_running() {
  62. ubus -t 10 wait_for umdns
  63. [ $? = 0 ] && do_reload_service
  64. }