1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright (C) 2018-2019 Cumulus Networks, Inc.
11 #include <lib/version.h>
13 #include "lib/command.h"
14 #include "lib/filter.h"
16 #include "lib/libfrr.h"
18 #include "lib/memory.h"
19 #include "lib/nexthop.h"
20 #include "lib/privs.h"
21 #include "lib/sigevent.h"
22 #include "lib/frrevent.h"
27 #include "vrrp_debug.h"
29 #include "vrrp_zebra.h"
31 DEFINE_MGROUP(VRRPD
, "vrrpd");
33 char backup_config_file
[256];
35 zebra_capabilities_t _caps_p
[] = {
39 struct zebra_privs_t vrrp_privs
= {
40 #if defined(FRR_USER) && defined(FRR_GROUP)
44 #if defined(VTY_GROUP)
45 .vty_group
= VTY_GROUP
,
48 .cap_num_p
= array_size(_caps_p
),
51 struct option longopts
[] = { {0} };
53 /* Master of threads. */
54 struct event_loop
*master
;
56 static struct frr_daemon_info vrrpd_di
;
59 static void sighup(void)
61 zlog_info("SIGHUP received");
63 vty_read_config(NULL
, vrrpd_di
.config_file
, config_default
);
66 /* SIGINT / SIGTERM handler. */
67 static void __attribute__((noreturn
)) sigint(void)
69 zlog_notice("Terminating on signal");
78 /* SIGUSR1 handler. */
79 static void sigusr1(void)
84 struct frr_signal_t vrrp_signals
[] = {
103 static const struct frr_yang_module_info
*const vrrp_yang_modules
[] = {
110 #define VRRP_VTY_PORT 2619
112 FRR_DAEMON_INFO(vrrpd
, VRRP
, .vty_port
= VRRP_VTY_PORT
,
113 .proghelp
= "Virtual Router Redundancy Protocol",
114 .signals
= vrrp_signals
,
115 .n_signals
= array_size(vrrp_signals
),
116 .privs
= &vrrp_privs
,
117 .yang_modules
= vrrp_yang_modules
,
118 .n_yang_modules
= array_size(vrrp_yang_modules
),
121 int main(int argc
, char **argv
, char **envp
)
123 frr_preinit(&vrrpd_di
, argc
, argv
);
124 frr_opt_add("", longopts
, "");
129 opt
= frr_getopt(argc
, argv
, NULL
);
150 snprintf(backup_config_file
, sizeof(backup_config_file
),
151 "%s/vrrpd.conf", frr_sysconfdir
);
152 vrrpd_di
.backup_config_file
= backup_config_file
;