1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright (C) 2018-2019 Cumulus Networks, Inc.
9 #include <lib/version.h>
11 #include "lib/command.h"
12 #include "lib/filter.h"
13 #include "lib/getopt.h"
15 #include "lib/libfrr.h"
17 #include "lib/memory.h"
18 #include "lib/nexthop.h"
19 #include "lib/privs.h"
20 #include "lib/sigevent.h"
21 #include "lib/event.h"
26 #include "vrrp_debug.h"
28 #include "vrrp_zebra.h"
30 DEFINE_MGROUP(VRRPD
, "vrrpd");
32 char backup_config_file
[256];
34 zebra_capabilities_t _caps_p
[] = {
38 struct zebra_privs_t vrrp_privs
= {
39 #if defined(FRR_USER) && defined(FRR_GROUP)
43 #if defined(VTY_GROUP)
44 .vty_group
= VTY_GROUP
,
47 .cap_num_p
= array_size(_caps_p
),
50 struct option longopts
[] = { {0} };
52 /* Master of threads. */
53 struct event_loop
*master
;
55 static struct frr_daemon_info vrrpd_di
;
58 static void sighup(void)
60 zlog_info("SIGHUP received");
62 vty_read_config(NULL
, vrrpd_di
.config_file
, config_default
);
65 /* SIGINT / SIGTERM handler. */
66 static void __attribute__((noreturn
)) sigint(void)
68 zlog_notice("Terminating on signal");
77 /* SIGUSR1 handler. */
78 static void sigusr1(void)
83 struct frr_signal_t vrrp_signals
[] = {
102 static const struct frr_yang_module_info
*const vrrp_yang_modules
[] = {
109 #define VRRP_VTY_PORT 2619
111 FRR_DAEMON_INFO(vrrpd
, VRRP
, .vty_port
= VRRP_VTY_PORT
,
112 .proghelp
= "Virtual Router Redundancy Protocol",
113 .signals
= vrrp_signals
,
114 .n_signals
= array_size(vrrp_signals
),
115 .privs
= &vrrp_privs
,
116 .yang_modules
= vrrp_yang_modules
,
117 .n_yang_modules
= array_size(vrrp_yang_modules
),
120 int main(int argc
, char **argv
, char **envp
)
122 frr_preinit(&vrrpd_di
, argc
, argv
);
123 frr_opt_add("", longopts
, "");
128 opt
= frr_getopt(argc
, argv
, NULL
);
149 snprintf(backup_config_file
, sizeof(backup_config_file
),
150 "%s/vrrpd.conf", frr_sysconfdir
);
151 vrrpd_di
.backup_config_file
= backup_config_file
;