]> git.proxmox.com Git - mirror_frr.git/blob - lib/northbound_db.h
doc: Add `show ipv6 rpf X:X::X:X` command to docs
[mirror_frr.git] / lib / northbound_db.h
1 /*
2 * Copyright (C) 2018 NetDEF, Inc.
3 * Renato Westphal
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the Free
7 * Software Foundation; either version 2 of the License, or (at your option)
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; see the file COPYING; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 #ifndef _FRR_NORTHBOUND_DB_H_
21 #define _FRR_NORTHBOUND_DB_H_
22
23 #include "northbound.h"
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /*
30 * Initialize the northbound database.
31 *
32 * Currently the database is used only for storing and retrieving configuration
33 * transactions.
34 *
35 * Returns:
36 * NB_OK on success, NB_ERR otherwise.
37 */
38 int nb_db_init(void);
39
40 /*
41 * Save a configuration transaction in the northbound database.
42 *
43 * transaction
44 * Configuration transaction to be saved.
45 *
46 * transaction_id
47 * Output parameter providing the ID of the saved transaction.
48 *
49 * Returns:
50 * NB_OK on success, NB_ERR otherwise.
51 */
52 int nb_db_transaction_save(const struct nb_transaction *transaction,
53 uint32_t *transaction_id);
54
55 /*
56 * Load a configuration transaction from the transactions log.
57 *
58 * transaction_id
59 * ID of the transaction to be loaded.
60 *
61 * Returns:
62 * Pointer to newly created configuration or NULL in the case of an error.
63 */
64 extern struct nb_config *nb_db_transaction_load(uint32_t transaction_id);
65
66 /*
67 * Delete the specified number of transactions from the transactions log.
68 *
69 * n_oldest
70 * Number of transactions to delete.
71 *
72 * Returns:
73 * NB_OK on success, NB_ERR otherwise.
74 */
75 extern int nb_db_clear_transactions(unsigned int n_oldest);
76
77 /*
78 * Specify the maximum number of transactions we want to record in the
79 * transactions log. Note that older transactions can be removed during this
80 * operation.
81 *
82 * max
83 * New upper limit of maximum transactions to log.
84 *
85 * Returns:
86 * NB_OK on success, NB_ERR otherwise.
87 */
88 extern int nb_db_set_max_transactions(unsigned int max);
89
90 /*
91 * Iterate over all configuration transactions stored in the northbound
92 * database, sorted in descending order.
93 *
94 * func
95 * Function to call with each configuration transaction.
96 *
97 * arg
98 * Arbitrary argument passed as the first parameter in each call to 'func'.
99 *
100 * Returns:
101 * NB_OK on success, NB_ERR otherwise.
102 */
103 extern int nb_db_transactions_iterate(
104 void (*func)(void *arg, int transaction_id, const char *client_name,
105 const char *date, const char *comment),
106 void *arg);
107
108 #ifdef __cplusplus
109 }
110 #endif
111
112 #endif /* _FRR_NORTHBOUND_DB_H_ */