]> git.proxmox.com Git - mirror_frr.git/blob - mgmtd/mgmt.c
Merge pull request #13020 from SaiGomathiN/2462808-3
[mirror_frr.git] / mgmtd / mgmt.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * FRR Management Daemon (MGMTD) program
4 *
5 * Copyright (C) 2021 Vmware, Inc.
6 * Pushpasis Sarkar
7 */
8
9 #include <zebra.h>
10 #include "debug.h"
11 #include "mgmtd/mgmt.h"
12 #include "mgmtd/mgmt_be_server.h"
13 #include "mgmtd/mgmt_be_adapter.h"
14 #include "mgmtd/mgmt_fe_server.h"
15 #include "mgmtd/mgmt_fe_adapter.h"
16 #include "mgmtd/mgmt_ds.h"
17 #include "mgmtd/mgmt_history.h"
18 #include "mgmtd/mgmt_memory.h"
19
20 struct debug mgmt_debug_be = {.desc = "Management backend adapater"};
21 struct debug mgmt_debug_ds = {.desc = "Management datastore"};
22 struct debug mgmt_debug_fe = {.desc = "Management frontend adapater"};
23 struct debug mgmt_debug_txn = {.desc = "Management transaction"};
24
25 /* MGMTD process wide configuration. */
26 static struct mgmt_master mgmt_master;
27
28 /* MGMTD process wide configuration pointer to export. */
29 struct mgmt_master *mm;
30
31 void mgmt_master_init(struct event_loop *master, const int buffer_size)
32 {
33 memset(&mgmt_master, 0, sizeof(struct mgmt_master));
34
35 mm = &mgmt_master;
36 mm->master = master;
37 mm->terminating = false;
38 mm->socket_buffer = buffer_size;
39 mm->perf_stats_en = true;
40 }
41
42 void mgmt_init(void)
43 {
44
45 /*
46 * Allocates some vital data structures used by peer commands in
47 * vty_init
48 */
49 vty_init_mgmt_fe();
50
51 /* Initialize datastores */
52 mgmt_ds_init(mm);
53
54 /* Initialize history */
55 mgmt_history_init();
56
57 /* Initialize MGMTD Transaction module */
58 mgmt_txn_init(mm, mm->master);
59
60 /* Initialize the MGMTD Backend Adapter Module */
61 mgmt_be_adapter_init(mm->master);
62
63 /* Initialize the MGMTD Frontend Adapter Module */
64 mgmt_fe_adapter_init(mm->master, mm);
65
66 /* Start the MGMTD Backend Server for clients to connect */
67 mgmt_be_server_init(mm->master);
68
69 /* Start the MGMTD Frontend Server for clients to connect */
70 mgmt_fe_server_init(mm->master);
71
72 /* MGMTD VTY commands installation. */
73 mgmt_vty_init();
74 }
75
76 void mgmt_terminate(void)
77 {
78 mgmt_fe_server_destroy();
79 mgmt_fe_adapter_destroy();
80 mgmt_be_server_destroy();
81 mgmt_be_adapter_destroy();
82 mgmt_txn_destroy();
83 mgmt_history_destroy();
84 mgmt_ds_destroy();
85 }