diff options
Diffstat (limited to 'lib/northbound_db.h')
-rw-r--r-- | lib/northbound_db.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/lib/northbound_db.h b/lib/northbound_db.h new file mode 100644 index 0000000..14df09c --- /dev/null +++ b/lib/northbound_db.h @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2018 NetDEF, Inc. + * Renato Westphal + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; see the file COPYING; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _FRR_NORTHBOUND_DB_H_ +#define _FRR_NORTHBOUND_DB_H_ + +#include "northbound.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Initialize the northbound database. + * + * Currently the database is used only for storing and retrieving configuration + * transactions. + * + * Returns: + * NB_OK on success, NB_ERR otherwise. + */ +int nb_db_init(void); + +/* + * Save a configuration transaction in the northbound database. + * + * transaction + * Configuration transaction to be saved. + * + * transaction_id + * Output parameter providing the ID of the saved transaction. + * + * Returns: + * NB_OK on success, NB_ERR otherwise. + */ +int nb_db_transaction_save(const struct nb_transaction *transaction, + uint32_t *transaction_id); + +/* + * Load a configuration transaction from the transactions log. + * + * transaction_id + * ID of the transaction to be loaded. + * + * Returns: + * Pointer to newly created configuration or NULL in the case of an error. + */ +extern struct nb_config *nb_db_transaction_load(uint32_t transaction_id); + +/* + * Delete the specified number of transactions from the transactions log. + * + * n_oldest + * Number of transactions to delete. + * + * Returns: + * NB_OK on success, NB_ERR otherwise. + */ +extern int nb_db_clear_transactions(unsigned int n_oldest); + +/* + * Specify the maximum number of transactions we want to record in the + * transactions log. Note that older transactions can be removed during this + * operation. + * + * max + * New upper limit of maximum transactions to log. + * + * Returns: + * NB_OK on success, NB_ERR otherwise. + */ +extern int nb_db_set_max_transactions(unsigned int max); + +/* + * Iterate over all configuration transactions stored in the northbound + * database, sorted in descending order. + * + * func + * Function to call with each configuration transaction. + * + * arg + * Arbitrary argument passed as the first parameter in each call to 'func'. + * + * Returns: + * NB_OK on success, NB_ERR otherwise. + */ +extern int nb_db_transactions_iterate( + void (*func)(void *arg, int transaction_id, const char *client_name, + const char *date, const char *comment), + void *arg); + +#ifdef __cplusplus +} +#endif + +#endif /* _FRR_NORTHBOUND_DB_H_ */ |