pim_signals.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. PIM for Quagga
  3. Copyright (C) 2008 Everton da Silva Marques
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; see the file COPYING; if not, write to the
  14. Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
  15. MA 02110-1301 USA
  16. $QuaggaId: $Format:%an, %ai, %h$ $
  17. */
  18. #include <zebra.h>
  19. #include <signal.h>
  20. #include "sigevent.h"
  21. #include "memory.h"
  22. #include "log.h"
  23. #include "pim_signals.h"
  24. #include "pimd.h"
  25. /*
  26. * Signal handlers
  27. */
  28. static void pim_sighup()
  29. {
  30. zlog_info ("SIGHUP received, ignoring");
  31. }
  32. static void pim_sigint()
  33. {
  34. zlog_notice("Terminating on signal SIGINT");
  35. pim_terminate();
  36. exit(1);
  37. }
  38. static void pim_sigterm()
  39. {
  40. zlog_notice("Terminating on signal SIGTERM");
  41. pim_terminate();
  42. exit(1);
  43. }
  44. static void pim_sigusr1()
  45. {
  46. zlog_info ("SIGUSR1 received");
  47. zlog_rotate (NULL);
  48. }
  49. static struct quagga_signal_t pimd_signals[] =
  50. {
  51. {
  52. .signal = SIGHUP,
  53. .handler = &pim_sighup,
  54. },
  55. {
  56. .signal = SIGUSR1,
  57. .handler = &pim_sigusr1,
  58. },
  59. {
  60. .signal = SIGINT,
  61. .handler = &pim_sigint,
  62. },
  63. {
  64. .signal = SIGTERM,
  65. .handler = &pim_sigterm,
  66. },
  67. };
  68. void pim_signals_init()
  69. {
  70. signal_init(master, array_size(pimd_signals), pimd_signals);
  71. }