logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0005-Allow-building-daemon-without-remote-control.patch (4625B)


  1. From 91e0865f0bd42d28d50ddd1fc1fae6cfaab17e46 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Wed, 1 Dec 2021 16:08:12 -0800
  4. Subject: [PATCH] Allow building daemon without remote control
  5. ---
  6. daemon/daemon.c | 13 +++++++++++++
  7. daemon/unbound.c | 5 +++++
  8. daemon/worker.c | 8 ++++++++
  9. util/fptr_wlist.c | 4 ++++
  10. 4 files changed, 30 insertions(+)
  11. diff --git a/daemon/daemon.c b/daemon/daemon.c
  12. index 0e3923b4..27132ce1 100644
  13. --- a/daemon/daemon.c
  14. +++ b/daemon/daemon.c
  15. @@ -68,7 +68,9 @@
  16. #include "daemon/daemon.h"
  17. #include "daemon/worker.h"
  18. +#ifdef WITH_REMOTE
  19. #include "daemon/remote.h"
  20. +#endif
  21. #include "daemon/acl_list.h"
  22. #include "util/log.h"
  23. #include "util/config_file.h"
  24. @@ -378,9 +380,16 @@ daemon_open_shared_ports(struct daemon* daemon)
  25. if(daemon->cfg->remote_control_enable &&
  26. daemon->cfg->control_port != daemon->rc_port) {
  27. listening_ports_free(daemon->rc_ports);
  28. +#ifdef WITH_REMOTE
  29. if(!(daemon->rc_ports=daemon_remote_open_ports(daemon->cfg)))
  30. return 0;
  31. daemon->rc_port = daemon->cfg->control_port;
  32. +#else
  33. + log_err("unbound built without remote control");
  34. + daemon->rc_ports = NULL;
  35. + daemon->rc_port = 0;
  36. + return 0;
  37. +#endif
  38. }
  39. return 1;
  40. }
  41. @@ -738,8 +747,10 @@ daemon_cleanup(struct daemon* daemon)
  42. daemon->views = NULL;
  43. if(daemon->env->auth_zones)
  44. auth_zones_cleanup(daemon->env->auth_zones);
  45. +#ifdef WITH_REMOTE
  46. /* key cache is cleared by module desetup during next daemon_fork() */
  47. daemon_remote_clear(daemon->rc);
  48. +#endif
  49. for(i=0; i<daemon->num; i++)
  50. worker_delete(daemon->workers[i]);
  51. free(daemon->workers);
  52. @@ -764,7 +775,9 @@ daemon_delete(struct daemon* daemon)
  53. if(!daemon)
  54. return;
  55. modstack_desetup(&daemon->mods, daemon->env);
  56. +#ifdef WITH_REMOTE
  57. daemon_remote_delete(daemon->rc);
  58. +#endif
  59. for(i = 0; i < daemon->num_ports; i++)
  60. listening_ports_free(daemon->ports[i]);
  61. free(daemon->ports);
  62. diff --git a/daemon/unbound.c b/daemon/unbound.c
  63. index 2baf4dba..7925d91b 100644
  64. --- a/daemon/unbound.c
  65. +++ b/daemon/unbound.c
  66. @@ -490,8 +490,13 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode,
  67. w_config_adjust_directory(cfg);
  68. #endif
  69. +
  70. +#ifdef WITH_REMOTE
  71. if(!(daemon->rc = daemon_remote_create(cfg)))
  72. fatal_exit("could not set up remote-control");
  73. +#else
  74. + daemon->rc = NULL;
  75. +#endif
  76. /* read ssl keys while superuser and outside chroot */
  77. #ifdef HAVE_SSL
  78. diff --git a/daemon/worker.c b/daemon/worker.c
  79. index 5d2483cd..f3c32279 100644
  80. --- a/daemon/worker.c
  81. +++ b/daemon/worker.c
  82. @@ -376,10 +376,12 @@ worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t* msg,
  83. verbose(VERB_ALGO, "got control cmd stats_noreset");
  84. server_stats_reply(worker, 0);
  85. break;
  86. +#ifdef WITH_REMOTE
  87. case worker_cmd_remote:
  88. verbose(VERB_ALGO, "got control cmd remote");
  89. daemon_remote_exec(worker);
  90. break;
  91. +#endif
  92. default:
  93. log_err("bad command %d", (int)cmd);
  94. break;
  95. @@ -1731,11 +1733,13 @@ worker_init(struct worker* worker, struct config_file *cfg,
  96. return 0;
  97. }
  98. #endif /* LIBEVENT_SIGNAL_PROBLEM */
  99. +#ifdef WITH_REMOTE
  100. if(!daemon_remote_open_accept(worker->daemon->rc,
  101. worker->daemon->rc_ports, worker)) {
  102. worker_delete(worker);
  103. return 0;
  104. }
  105. +#endif
  106. #ifdef UB_ON_WINDOWS
  107. wsvc_setup_worker(worker);
  108. #endif /* UB_ON_WINDOWS */
  109. @@ -2007,16 +2011,20 @@ void worker_start_accept(void* arg)
  110. {
  111. struct worker* worker = (struct worker*)arg;
  112. listen_start_accept(worker->front);
  113. +#ifdef WITH_REMOTE
  114. if(worker->thread_num == 0)
  115. daemon_remote_start_accept(worker->daemon->rc);
  116. +#endif
  117. }
  118. void worker_stop_accept(void* arg)
  119. {
  120. struct worker* worker = (struct worker*)arg;
  121. listen_stop_accept(worker->front);
  122. +#ifdef WITH_REMOTE
  123. if(worker->thread_num == 0)
  124. daemon_remote_stop_accept(worker->daemon->rc);
  125. +#endif
  126. }
  127. /* --- fake callbacks for fptr_wlist to work --- */
  128. diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c
  129. index f8dac65c..f98ec5f3 100644
  130. --- a/util/fptr_wlist.c
  131. +++ b/util/fptr_wlist.c
  132. @@ -118,8 +118,10 @@ fptr_whitelist_comm_point_raw(comm_point_callback_type *fptr)
  133. {
  134. if(fptr == &tube_handle_listen) return 1;
  135. else if(fptr == &tube_handle_write) return 1;
  136. +#ifdef WITH_REMOTE
  137. else if(fptr == &remote_accept_callback) return 1;
  138. else if(fptr == &remote_control_callback) return 1;
  139. +#endif
  140. return 0;
  141. }
  142. @@ -587,7 +589,9 @@ int fptr_whitelist_print_func(void (*fptr)(char*,void*))
  143. {
  144. if(fptr == &config_print_func) return 1;
  145. else if(fptr == &config_collate_func) return 1;
  146. +#ifdef WITH_REMOTE
  147. else if(fptr == &remote_get_opt_ssl) return 1;
  148. +#endif
  149. return 0;
  150. }
  151. --
  152. 2.34.1