summaryrefslogtreecommitdiffstats
path: root/lib/northbound_db.h
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2017-12-07 20:31:48 +0100
committerRenato Westphal <renato@opensourcerouting.org>2018-10-27 20:16:12 +0200
commit1c2facd12df7bc27758d7ea674b1e57e401fc234 (patch)
treeb82aeb06586c2c7b380420ddd484964af915aee1 /lib/northbound_db.h
parentMerge pull request #3235 from opensourcerouting/buildfoo-20181024 (diff)
downloadfrr-1c2facd12df7bc27758d7ea674b1e57e401fc234.tar.xz
frr-1c2facd12df7bc27758d7ea674b1e57e401fc234.zip
lib: introduce new northbound API
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'lib/northbound_db.h')
-rw-r--r--lib/northbound_db.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/lib/northbound_db.h b/lib/northbound_db.h
new file mode 100644
index 000000000..ad6096644
--- /dev/null
+++ b/lib/northbound_db.h
@@ -0,0 +1,104 @@
+/*
+ * 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"
+
+/*
+ * 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);
+
+#endif /* _FRR_NORTHBOUND_DB_H_ */