1 /* NHRP daemon main functions
2 * Copyright (c) 2014-2015 Timo Teräs
4 * This file is free software: you may copy, redistribute 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.
20 #include "memory_vty.h"
27 DEFINE_MGROUP(NHRPD
, "NHRP")
29 unsigned int debug_flags
= 0;
31 struct thread_master
*master
;
32 struct timeval current_time
;
35 struct option longopts
[] = {
39 /* nhrpd privileges */
40 static zebra_capabilities_t _caps_p
[] = {
43 ZCAP_DAC_OVERRIDE
, /* for now needed to write to /proc/sys/net/ipv4/<if>/send_redirect */
46 static struct zebra_privs_t nhrpd_privs
= {
51 .group
= QUAGGA_GROUP
,
54 .vty_group
= VTY_GROUP
,
57 .cap_num_p
= ZEBRA_NUM_OF(_caps_p
),
60 static void parse_arguments(int argc
, char **argv
)
65 opt
= frr_getopt(argc
, argv
, 0);
78 static void nhrp_sigusr1(void)
83 static void nhrp_request_stop(void)
85 debugf(NHRP_DEBUG_COMMON
, "Exiting...");
87 nhrp_shortcut_terminate();
89 nhrp_zebra_terminate();
94 /* memory_terminate(); */
95 /* vty_terminate(); */
97 /* signal_terminate(); */
98 zprivs_terminate(&nhrpd_privs
);
100 debugf(NHRP_DEBUG_COMMON
, "Done.");
102 closezlog(zlog_default
);
107 static struct quagga_signal_t sighandlers
[] = {
108 { .signal
= SIGUSR1
, .handler
= &nhrp_sigusr1
, },
109 { .signal
= SIGINT
, .handler
= &nhrp_request_stop
, },
110 { .signal
= SIGTERM
, .handler
= &nhrp_request_stop
, },
113 FRR_DAEMON_INFO(nhrpd
, NHRP
,
114 .vty_port
= NHRP_VTY_PORT
,
116 .proghelp
= "Implementation of the NHRP routing protocol.",
118 .signals
= sighandlers
,
119 .n_signals
= array_size(sighandlers
),
121 .privs
= &nhrpd_privs
,
124 int main(int argc
, char **argv
)
126 frr_preinit(&nhrpd_di
, argc
, argv
);
127 frr_opt_add("", longopts
, "");
129 parse_arguments(argc
, argv
);
133 nhrp_interface_init();
137 /* Run with elevated capabilities, as for all netlink activity
138 * we need privileges anyway. */
139 nhrpd_privs
.change(ZPRIVS_RAISE
);
147 nhrp_shortcut_init();