diff --git a/.gitignore b/.gitignore index e1fce0e..783b970 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/opendnssec-2.1.6.tar.gz +SOURCES/opendnssec-2.1.7.tar.gz diff --git a/.opendnssec.metadata b/.opendnssec.metadata index fb2e574..584ac8f 100644 --- a/.opendnssec.metadata +++ b/.opendnssec.metadata @@ -1 +1 @@ -3aca59010c2067578ede0dbc216f15d70f9447e9 SOURCES/opendnssec-2.1.6.tar.gz +0277e4f54098bea74809e3d8e6cad1a435570349 SOURCES/opendnssec-2.1.7.tar.gz diff --git a/SOURCES/opendnssec-2.1.6-gcc10-fixups.patch b/SOURCES/opendnssec-2.1.6-gcc10-fixups.patch deleted file mode 100644 index a25e49f..0000000 --- a/SOURCES/opendnssec-2.1.6-gcc10-fixups.patch +++ /dev/null @@ -1,9616 +0,0 @@ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/cfg.h opendnssec-2.1.6/enforcer/src/daemon/cfg.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/cfg.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/cfg.h 2020-02-18 23:08:38.104360549 -0500 -@@ -88,7 +88,7 @@ - * \return engineconfig_type* engine configuration - * - */ --engineconfig_type* engine_config(const char* cfgfile, -+extern engineconfig_type* engine_config(const char* cfgfile, - int cmdline_verbosity, engineconfig_type* oldcfg); - - /** -@@ -97,7 +97,7 @@ - * \return ods_status status - * - */ --ods_status engine_config_check(engineconfig_type* config); -+extern ods_status engine_config_check(engineconfig_type* config); - - /** - * Print engine configuration. -@@ -105,13 +105,13 @@ - * \param[in] config engine configuration - * - */ --void engine_config_print(FILE* out, engineconfig_type* config); -+extern void engine_config_print(FILE* out, engineconfig_type* config); - - /** - * Clean up config. - * \param[in] config engine configuration - * - */ --void engine_config_cleanup(engineconfig_type* config); -+extern void engine_config_cleanup(engineconfig_type* config); - - #endif /* DAEMON_CONFIG_H */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/ctrl_cmd.h opendnssec-2.1.6/enforcer/src/daemon/ctrl_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/ctrl_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/ctrl_cmd.h 2020-02-18 23:10:25.428818116 -0500 -@@ -29,6 +29,6 @@ - #ifndef _CTRL_CMD_H_ - #define _CTRL_CMD_H_ - --struct cmd_func_block ctrl_funcblock; -+extern struct cmd_func_block ctrl_funcblock; - - #endif /* _CTRL_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/enforcercommands.h opendnssec-2.1.6/enforcer/src/daemon/enforcercommands.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/enforcercommands.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/enforcercommands.h 2020-02-18 23:08:38.108360604 -0500 -@@ -37,9 +37,9 @@ - #include "engine.h" - #include "db/db_connection.h" - --struct cmd_func_block** enforcercommands; -+extern struct cmd_func_block** enforcercommands; - --engine_type* getglobalcontext(cmdhandler_ctx_type*); --db_connection_t* getconnectioncontext(cmdhandler_ctx_type*); -+extern engine_type* getglobalcontext(cmdhandler_ctx_type*); -+extern db_connection_t* getconnectioncontext(cmdhandler_ctx_type*); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/engine.h opendnssec-2.1.6/enforcer/src/daemon/engine.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/engine.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/engine.h 2020-02-18 23:08:38.109360617 -0500 -@@ -72,7 +72,7 @@ - * \param engine, the engine containing database configuration - * \return connection on success, NULL on failure. - */ --db_connection_t* get_database_connection(engine_type* engine); -+extern db_connection_t* get_database_connection(engine_type* engine); - - - /** -@@ -84,16 +84,16 @@ - * for the command to a socket. - */ - --ods_status engine_setup(void); -+extern ods_status engine_setup(void); - - /** - * Clean up engine. - * \param[in] engine engine - * - */ --void engine_teardown(engine_type* engine); -+extern void engine_teardown(engine_type* engine); - --void engine_init(engine_type* engine, int daemonize); -+extern void engine_init(engine_type* engine, int daemonize); - - typedef void (*start_cb_t)(engine_type* engine); - -@@ -106,29 +106,29 @@ - * \return 0 if terminated normally, 1 on unrecoverable error. - * - */ --int engine_run(engine_type* engine, start_cb_t start, int single_run); -+extern int engine_run(engine_type* engine, start_cb_t start, int single_run); - - /** - * Stop the engine after engine_runloop returns. - * \param[in] engine engine - * - */ --void engine_stop(engine_type* engine); -+extern void engine_stop(engine_type* engine); - - /** - * Wake up workers. - * \param[in] engine engine - * - */ --void engine_wakeup_workers(engine_type* engine); -+extern void engine_wakeup_workers(engine_type* engine); - /** signal all workers to stop. Blocks until all workers are joined. - * \param[in] engine engine */ --void engine_stop_workers(engine_type* engine); -+extern void engine_stop_workers(engine_type* engine); - /** start all workers. - * \param[in] engine engine */ --void engine_start_workers(engine_type* engine); -+extern void engine_start_workers(engine_type* engine); - --engine_type* engine_alloc(void); --void engine_dealloc(engine_type* engine); -+extern engine_type* engine_alloc(void); -+extern void engine_dealloc(engine_type* engine); - - #endif /* DAEMON_ENGINE_H */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/help_cmd.h opendnssec-2.1.6/enforcer/src/daemon/help_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/help_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/help_cmd.h 2020-02-18 23:09:07.505759849 -0500 -@@ -29,6 +29,6 @@ - #ifndef _HELP_CMD_H_ - #define _HELP_CMD_H_ - --struct cmd_func_block help_funcblock; -+extern struct cmd_func_block help_funcblock; - - #endif /* _HELP_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/queue_cmd.h opendnssec-2.1.6/enforcer/src/daemon/queue_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/queue_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/queue_cmd.h 2020-02-18 23:09:48.166312056 -0500 -@@ -29,7 +29,7 @@ - #ifndef _QUEUE_CMD_H_ - #define _QUEUE_CMD_H_ - --struct cmd_func_block queue_funcblock; --struct cmd_func_block flush_funcblock; -+extern struct cmd_func_block queue_funcblock; -+extern struct cmd_func_block flush_funcblock; - - #endif /* _QUEUE_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/time_leap_cmd.h opendnssec-2.1.6/enforcer/src/daemon/time_leap_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/time_leap_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/time_leap_cmd.h 2020-02-18 23:09:31.203081678 -0500 -@@ -29,6 +29,6 @@ - #ifndef _TIME_LEAP_CMD_H_ - #define _TIME_LEAP_CMD_H_ - --struct cmd_func_block time_leap_funcblock; -+extern struct cmd_func_block time_leap_funcblock; - - #endif /* _TIME_LEAP_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/daemon/verbosity_cmd.h opendnssec-2.1.6/enforcer/src/daemon/verbosity_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/daemon/verbosity_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/daemon/verbosity_cmd.h 2020-02-18 23:10:04.748537259 -0500 -@@ -29,6 +29,6 @@ - #ifndef _VERBOSITY_CMD_H_ - #define _VERBOSITY_CMD_H_ - --struct cmd_func_block verbosity_funcblock; -+extern struct cmd_func_block verbosity_funcblock; - - #endif /* _VERBOSITY_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/database_version_ext.h opendnssec-2.1.6/enforcer/src/db/database_version_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/database_version_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/database_version_ext.h 2020-02-18 23:08:38.109360617 -0500 -@@ -37,6 +37,6 @@ - * \param[in] a db_connection_t pointer. - * \return an integer with the database version or zero on error. - */ --int database_version_get_version(db_connection_t* connection); -+extern int database_version_get_version(db_connection_t* connection); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/database_version.h opendnssec-2.1.6/enforcer/src/db/database_version.h ---- opendnssec-2.1.6-orig/enforcer/src/db/database_version.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/database_version.h 2020-02-18 23:08:38.109360617 -0500 -@@ -54,13 +54,13 @@ - * \param[in] connection a db_connection_t pointer. - * \return a database_version_t pointer or NULL on error. - */ --database_version_t* database_version_new(const db_connection_t* connection); -+extern database_version_t* database_version_new(const db_connection_t* connection); - - /** - * Delete a database version object, this does not delete it from the database. - * \param[in] database_version a database_version_t pointer. - */ --void database_version_free(database_version_t* database_version); -+extern void database_version_free(database_version_t* database_version); - - /** - * Set the content of a database version object based on a database result. -@@ -68,14 +68,14 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int database_version_from_result(database_version_t* database_version, const db_result_t* result); -+extern int database_version_from_result(database_version_t* database_version, const db_result_t* result); - - /** - * Get the version of a database version object. Undefined behavior if `database_version` is NULL. - * \param[in] database_version a database_version_t pointer. - * \return an unsigned integer. - */ --unsigned int database_version_version(const database_version_t* database_version); -+extern unsigned int database_version_version(const database_version_t* database_version); - - /** - * A list of database version objects. -@@ -98,27 +98,27 @@ - * \param[in] connection a db_connection_t pointer. - * \return a database_version_list_t pointer or NULL on error. - */ --database_version_list_t* database_version_list_new(const db_connection_t* connection); -+extern database_version_list_t* database_version_list_new(const db_connection_t* connection); - - /** - * Delete a database version object list. - * \param[in] database_version_list a database_version_list_t pointer. - */ --void database_version_list_free(database_version_list_t* database_version_list); -+extern void database_version_list_free(database_version_list_t* database_version_list); - - /** - * Get all database version objects. - * \param[in] database_version_list a database_version_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int database_version_list_get(database_version_list_t* database_version_list); -+extern int database_version_list_get(database_version_list_t* database_version_list); - - /** - * Get a new list with all database version objects. - * \param[in] connection a db_connection_t pointer. - * \return a database_version_list_t pointer or NULL on error. - */ --database_version_list_t* database_version_list_new_get(const db_connection_t* connection); -+extern database_version_list_t* database_version_list_new_get(const db_connection_t* connection); - - /** - * Get the next database version object in a database version object list. -@@ -128,6 +128,6 @@ - * \return a database_version_t pointer or NULL on error or if there are no more - * database version objects in the database version object list. - */ --const database_version_t* database_version_list_next(database_version_list_t* database_version_list); -+extern const database_version_t* database_version_list_next(database_version_list_t* database_version_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_backend.h opendnssec-2.1.6/enforcer/src/db/db_backend.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_backend.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_backend.h 2020-02-18 23:08:38.109360617 -0500 -@@ -187,21 +187,21 @@ - * Create a new database backend handle. - * \return a db_backend_handle_t pointer or NULL on error. - */ --db_backend_handle_t* db_backend_handle_new(void); -+extern db_backend_handle_t* db_backend_handle_new(void); - - /** - * Delete a database backend handle, disconnecting the backend and freeing the - * backend specific data. - * \param[in] backend_handle a db_backend_handle_t pointer. - */ --void db_backend_handle_free(db_backend_handle_t* backend_handle); -+extern void db_backend_handle_free(db_backend_handle_t* backend_handle); - - /** - * Initiate the backend of a database backend. - * \param[in] backend_handle a db_backend_handle_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_initialize(const db_backend_handle_t* backend_handle); -+extern int db_backend_handle_initialize(const db_backend_handle_t* backend_handle); - - /** - * Connect to the database of a database backend, the connection specific -@@ -210,7 +210,7 @@ - * \param[in] configuration_list a db_configuration_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_connect(const db_backend_handle_t* backend_handle, const db_configuration_list_t* configuration_list); -+extern int db_backend_handle_connect(const db_backend_handle_t* backend_handle, const db_configuration_list_t* configuration_list); - - /** - * Create an object in the database. The `object` refer to the database object -@@ -222,7 +222,7 @@ - * \param[in] value_set a db_value_set_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_create(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); -+extern int db_backend_handle_create(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); - - /** - * Read an object or objects from the database. -@@ -233,7 +233,7 @@ - * \return a db_result_list_t pointer or NULL on error or if no objects where - * read. - */ --db_result_list_t* db_backend_handle_read(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); -+extern db_result_list_t* db_backend_handle_read(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); - - /** - * Update an object or objects in the database. -@@ -244,7 +244,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_update(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); -+extern int db_backend_handle_update(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); - - /** - * Delete an object or objects from the database. -@@ -253,7 +253,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_delete(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_clause_list_t* clause_list); -+extern int db_backend_handle_delete(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_clause_list_t* clause_list); - - /** - * Count objects from the database. Return the count in `count`. -@@ -264,7 +264,7 @@ - * \param[out] count a size_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_count(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); -+extern int db_backend_handle_count(const db_backend_handle_t* backend_handle, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); - - /** - * Set the initialize function of a database backend handle. -@@ -272,7 +272,7 @@ - * \param[in] initialize_function a db_backend_handle_initialize_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_initialize(db_backend_handle_t* backend_handle, db_backend_handle_initialize_t initialize_function); -+extern int db_backend_handle_set_initialize(db_backend_handle_t* backend_handle, db_backend_handle_initialize_t initialize_function); - - /** - * Set the shutdown function of a database backend handle. -@@ -280,7 +280,7 @@ - * \param[in] shutdown_function a db_backend_handle_shutdown_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_shutdown(db_backend_handle_t* backend_handle, db_backend_handle_shutdown_t shutdown_function); -+extern int db_backend_handle_set_shutdown(db_backend_handle_t* backend_handle, db_backend_handle_shutdown_t shutdown_function); - - /** - * Set the connect function of a database backend handle. -@@ -288,7 +288,7 @@ - * \param[in] connect_function a db_backend_handle_connect_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_connect(db_backend_handle_t* backend_handle, db_backend_handle_connect_t connect_function); -+extern int db_backend_handle_set_connect(db_backend_handle_t* backend_handle, db_backend_handle_connect_t connect_function); - - /** - * Set the disconnect function of a database backend handle. -@@ -296,7 +296,7 @@ - * \param[in] disconnect_function a db_backend_handle_disconnect_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_disconnect(db_backend_handle_t* backend_handle, db_backend_handle_disconnect_t disconnect_function); -+extern int db_backend_handle_set_disconnect(db_backend_handle_t* backend_handle, db_backend_handle_disconnect_t disconnect_function); - - /** - * Set the create function of a database backend handle. -@@ -304,7 +304,7 @@ - * \param[in] create_function a db_backend_handle_create_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_create(db_backend_handle_t* backend_handle, db_backend_handle_create_t create_function); -+extern int db_backend_handle_set_create(db_backend_handle_t* backend_handle, db_backend_handle_create_t create_function); - - /** - * Set the read function of a database backend handle. -@@ -312,7 +312,7 @@ - * \param[in] read_function a db_backend_handle_read_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_read(db_backend_handle_t* backend_handle, db_backend_handle_read_t read_function); -+extern int db_backend_handle_set_read(db_backend_handle_t* backend_handle, db_backend_handle_read_t read_function); - - /** - * Set the update function of a database backend handle. -@@ -320,7 +320,7 @@ - * \param[in] update_function a db_backend_handle_update_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_update(db_backend_handle_t* backend_handle, db_backend_handle_update_t update_function); -+extern int db_backend_handle_set_update(db_backend_handle_t* backend_handle, db_backend_handle_update_t update_function); - - /** - * Set the delete function of a database backend handle. -@@ -328,7 +328,7 @@ - * \param[in] delete_function a db_backend_handle_delete_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_delete(db_backend_handle_t* backend_handle, db_backend_handle_delete_t delete_function); -+extern int db_backend_handle_set_delete(db_backend_handle_t* backend_handle, db_backend_handle_delete_t delete_function); - - /** - * Set the count function of a database backend handle. -@@ -336,7 +336,7 @@ - * \param[in] count_function a db_backend_handle_count_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_count(db_backend_handle_t* backend_handle, db_backend_handle_count_t count_function); -+extern int db_backend_handle_set_count(db_backend_handle_t* backend_handle, db_backend_handle_count_t count_function); - - /** - * Set the free function of a database backend handle. -@@ -344,7 +344,7 @@ - * \param[in] free_function a db_backend_handle_free_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_free(db_backend_handle_t* backend_handle, db_backend_handle_free_t free_function); -+extern int db_backend_handle_set_free(db_backend_handle_t* backend_handle, db_backend_handle_free_t free_function); - - /** - * Set the transaction begin function of a database backend handle. -@@ -352,7 +352,7 @@ - * \param[in] transaction_begin_function a db_backend_handle_transaction_begin_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_transaction_begin(db_backend_handle_t* backend_handle, db_backend_handle_transaction_begin_t transaction_begin_function); -+extern int db_backend_handle_set_transaction_begin(db_backend_handle_t* backend_handle, db_backend_handle_transaction_begin_t transaction_begin_function); - - /** - * Set the transaction commit function of a database backend handle. -@@ -360,7 +360,7 @@ - * \param[in] transaction_commit_function a db_backend_handle_transaction_commit_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_transaction_commit(db_backend_handle_t* backend_handle, db_backend_handle_transaction_commit_t transaction_commit_function); -+extern int db_backend_handle_set_transaction_commit(db_backend_handle_t* backend_handle, db_backend_handle_transaction_commit_t transaction_commit_function); - - /** - * Set the transaction rollback function of a database backend handle. -@@ -368,7 +368,7 @@ - * \param[in] transaction_rollback_function a db_backend_handle_transaction_rollback_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_transaction_rollback(db_backend_handle_t* backend_handle, db_backend_handle_transaction_rollback_t transaction_rollback_function); -+extern int db_backend_handle_set_transaction_rollback(db_backend_handle_t* backend_handle, db_backend_handle_transaction_rollback_t transaction_rollback_function); - - /** - * Set the backend specific data of a database backend handle. -@@ -376,7 +376,7 @@ - * \param[in] data a void pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_handle_set_data(db_backend_handle_t* backend_handle, void* data); -+extern int db_backend_handle_set_data(db_backend_handle_t* backend_handle, void* data); - - /** - * A database backend. -@@ -391,13 +391,13 @@ - * Create a new database backend. - * \return a db_backend_t pointer or NULL on error. - */ --db_backend_t* db_backend_new(void); -+extern db_backend_t* db_backend_new(void); - - /** - * Delete a database backend. - * \param[in] backend a db_backend_t pointer. - */ --void db_backend_free(db_backend_t* backend); -+extern void db_backend_free(db_backend_t* backend); - - /** - * Get the database backend handle of a database backend. -@@ -405,7 +405,7 @@ - * \return a db_backend_handle_t pointer or NULL on error or if no database - * backend handle has been set. - */ --const db_backend_handle_t* db_backend_handle(const db_backend_t* backend); -+extern const db_backend_handle_t* db_backend_handle(const db_backend_t* backend); - - /** - * Set the name of a database backend. -@@ -413,7 +413,7 @@ - * \param[in] name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_set_name(db_backend_t* backend, const char* name); -+extern int db_backend_set_name(db_backend_t* backend, const char* name); - - /** - * Det the database backend handle of a database backend, this takes over the -@@ -422,14 +422,14 @@ - * \param[in] handle a db_backend_handle_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_set_handle(db_backend_t* backend, db_backend_handle_t* handle); -+extern int db_backend_set_handle(db_backend_t* backend, db_backend_handle_t* handle); - - /** - * Initiate the backend of a database backend. - * \param[in] backend a db_backend_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_initialize(const db_backend_t* backend); -+extern int db_backend_initialize(const db_backend_t* backend); - - /** - * Connect to the database of a database backend, the connection specific -@@ -438,7 +438,7 @@ - * \param[in] configuration_list a db_configuration_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_connect(const db_backend_t* backend, const db_configuration_list_t* configuration_list); -+extern int db_backend_connect(const db_backend_t* backend, const db_configuration_list_t* configuration_list); - - /** - * Create an object in the database. The `object` refer to the database object -@@ -450,7 +450,7 @@ - * \param[in] value_set a db_value_set_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_create(const db_backend_t* backend, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); -+extern int db_backend_create(const db_backend_t* backend, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); - - /** - * Read an object or objects from the database. -@@ -461,7 +461,7 @@ - * \return a db_result_list_t pointer or NULL on error or if no objects where - * read. - */ --db_result_list_t* db_backend_read(const db_backend_t* backend, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); -+extern db_result_list_t* db_backend_read(const db_backend_t* backend, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); - - /** - * Update an object or objects in the database. -@@ -472,7 +472,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_update(const db_backend_t* backend, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); -+extern int db_backend_update(const db_backend_t* backend, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); - - /** - * Delete an object or objects from the database. -@@ -481,7 +481,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_delete(const db_backend_t* backend, const db_object_t* object, const db_clause_list_t* clause_list); -+extern int db_backend_delete(const db_backend_t* backend, const db_object_t* object, const db_clause_list_t* clause_list); - - /** - * Count objects from the database. Return the count in `count`. -@@ -492,7 +492,7 @@ - * \param[out] count a size_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_backend_count(const db_backend_t* backend, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); -+extern int db_backend_count(const db_backend_t* backend, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); - - /** - * Get a new database backend by the name supplied in `name`. -@@ -500,6 +500,6 @@ - * \return a db_backend_t pointer or NULL on error or if the database backend - * does not exist. - */ --db_backend_t* db_backend_factory_get_backend(const char* name); -+extern db_backend_t* db_backend_factory_get_backend(const char* name); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_backend_mysql.h opendnssec-2.1.6/enforcer/src/db/db_backend_mysql.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_backend_mysql.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_backend_mysql.h 2020-02-18 23:08:38.109360617 -0500 -@@ -40,6 +40,6 @@ - * Create a new database backend handle for SQLite. - * \return a db_backend_handle_t pointer or NULL on error. - */ --db_backend_handle_t* db_backend_mysql_new_handle(void); -+extern db_backend_handle_t* db_backend_mysql_new_handle(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_backend_sqlite.h opendnssec-2.1.6/enforcer/src/db/db_backend_sqlite.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_backend_sqlite.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_backend_sqlite.h 2020-02-18 23:08:38.109360617 -0500 -@@ -39,6 +39,6 @@ - * Create a new database backend handle for SQLite. - * \return a db_backend_handle_t pointer or NULL on error. - */ --db_backend_handle_t* db_backend_sqlite_new_handle(void); -+extern db_backend_handle_t* db_backend_sqlite_new_handle(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_clause.h opendnssec-2.1.6/enforcer/src/db/db_clause.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_clause.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_clause.h 2020-02-18 23:08:38.110360631 -0500 -@@ -129,41 +129,41 @@ - * Create a new database clause. - * \return a db_clause_t pointer or NULL on error. - */ --db_clause_t* db_clause_new(void); -+extern db_clause_t* db_clause_new(void); - - /** - * Delete a database clause. - * \param[in] clause a db_clause_t pointer. - */ --void db_clause_free(db_clause_t* clause); -+extern void db_clause_free(db_clause_t* clause); - - /** - * Get the field name of a database clause. - * \param[in] a db_clause_t pointer. - * \return a character pointer or NULL on error or if no field name has been set. - */ --const char* db_clause_field(const db_clause_t* clause); -+extern const char* db_clause_field(const db_clause_t* clause); - - /** - * Get the database clause type of a database clause. - * \param[in] a db_clause_t pointer. - * \return a db_clause_type_t. - */ --db_clause_type_t db_clause_type(const db_clause_t* clause); -+extern db_clause_type_t db_clause_type(const db_clause_t* clause); - - /** - * Get the database value of a database value. - * \param[in] a db_clause_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* db_clause_value(const db_clause_t* clause); -+extern const db_value_t* db_clause_value(const db_clause_t* clause); - - /** - * Get the database clause operator of a database clause. - * \param[in] a db_clause_t pointer. - * \return a db_clause_operator_t. - */ --db_clause_operator_t db_clause_operator(const db_clause_t* clause); -+extern db_clause_operator_t db_clause_operator(const db_clause_t* clause); - - /** - * Get the database clause list of a database clause, this is used for nested -@@ -172,7 +172,7 @@ - * \return a db_clause_list_t pointer or NULL on error or if no database clause - * list has been set. - */ --const db_clause_list_t* db_clause_list(const db_clause_t* clause); -+extern const db_clause_list_t* db_clause_list(const db_clause_t* clause); - - /** - * Set the field name of a database clause. -@@ -180,7 +180,7 @@ - * \param[in] field a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_clause_set_field(db_clause_t* clause, const char* field); -+extern int db_clause_set_field(db_clause_t* clause, const char* field); - - /** - * Set the database clause type of a database clause. -@@ -188,7 +188,7 @@ - * \param[in] type a db_clause_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_clause_set_type(db_clause_t* clause, db_clause_type_t type); -+extern int db_clause_set_type(db_clause_t* clause, db_clause_type_t type); - - /** - * Set the database clause operator of a database clause. -@@ -196,14 +196,14 @@ - * \param[in] clause_operator a db_clause_operator_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_clause_set_operator(db_clause_t* clause, db_clause_operator_t clause_operator); -+extern int db_clause_set_operator(db_clause_t* clause, db_clause_operator_t clause_operator); - - /** - * Check if the database clause is not empty. - * \param[in] a db_clause_t pointer. - * \return DB_ERROR_* if empty, otherwise DB_OK. - */ --int db_clause_not_empty(const db_clause_t* clause); -+extern int db_clause_not_empty(const db_clause_t* clause); - - /** - * Return the next database clause connected in a database clause list. -@@ -211,14 +211,14 @@ - * \return a db_clause_t pointer or NULL on error or if there are no more - * database clauses in the list. - */ --const db_clause_t* db_clause_next(const db_clause_t* clause); -+extern const db_clause_t* db_clause_next(const db_clause_t* clause); - - /** - * Get the writable database value of a database clause. - * \param[in] a db_clause_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --db_value_t* db_clause_get_value(db_clause_t* clause); -+extern db_value_t* db_clause_get_value(db_clause_t* clause); - - /** - * A list of database clauses. -@@ -232,13 +232,13 @@ - * Create a new database clause list. - * \return a db_clause_list_t pointer or NULL on error. - */ --db_clause_list_t* db_clause_list_new(void); -+extern db_clause_list_t* db_clause_list_new(void); - - /** - * Delete a database clause list and all database clauses in the list. - * \param[in] clause_list a db_clause_list_t pointer. - */ --void db_clause_list_free(db_clause_list_t* clause_list); -+extern void db_clause_list_free(db_clause_list_t* clause_list); - - /** - * Add a database clause to a database clause list, this takes over the -@@ -247,13 +247,13 @@ - * \param[in] a db_clause_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_clause_list_add(db_clause_list_t* clause_list, db_clause_t* clause); -+extern int db_clause_list_add(db_clause_list_t* clause_list, db_clause_t* clause); - - /** - * Return the first database clause of a database clause list. - * \param[in] clause_list a db_clause_list_t pointer. - * \return a db_clause_t pointer or NULL on error or if the list is empty. - */ --const db_clause_t* db_clause_list_begin(const db_clause_list_t* clause_list); -+extern const db_clause_t* db_clause_list_begin(const db_clause_list_t* clause_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_configuration.h opendnssec-2.1.6/enforcer/src/db/db_configuration.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_configuration.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_configuration.h 2020-02-18 23:08:38.110360631 -0500 -@@ -48,13 +48,13 @@ - * Create a new database configuration. - * \return a db_configuration_t pointer or NULL on error. - */ --db_configuration_t* db_configuration_new(void); -+extern db_configuration_t* db_configuration_new(void); - - /** - * Delete a database configuration. - * \param[in] configuration a db_configuration_t pointer. - */ --void db_configuration_free(db_configuration_t* configuration); -+extern void db_configuration_free(db_configuration_t* configuration); - - /** - * Get the value of a database configuration. -@@ -62,7 +62,7 @@ - * \return a character pointer or NULL on error or if no database configuration - * value has been set. - */ --const char* db_configuration_value(const db_configuration_t* configuration); -+extern const char* db_configuration_value(const db_configuration_t* configuration); - - /** - * Set the name of a database configuration. -@@ -70,7 +70,7 @@ - * \param[in] name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_configuration_set_name(db_configuration_t* configuration, const char* name); -+extern int db_configuration_set_name(db_configuration_t* configuration, const char* name); - - /** - * Set the value of a database configuration. -@@ -78,14 +78,14 @@ - * \param[in] value a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_configuration_set_value(db_configuration_t* configuration, const char* value); -+extern int db_configuration_set_value(db_configuration_t* configuration, const char* value); - - /** - * Check if the database configuration is not empty. - * \param[in] configuration a db_configuration_t pointer. - * \return DB_ERROR_* if empty, otherwise DB_OK. - */ --int db_configuration_not_empty(const db_configuration_t* configuration); -+extern int db_configuration_not_empty(const db_configuration_t* configuration); - - /** - * A list of database configurations. -@@ -99,14 +99,14 @@ - * Create a new database configuration list. - * \return a db_configuration_list_t pointer or NULL on error. - */ --db_configuration_list_t* db_configuration_list_new(void); -+extern db_configuration_list_t* db_configuration_list_new(void); - - /** - * Delete a database configuration list and all database configurations in the - * list. - * \param[in] configuration_list a db_configuration_list_t pointer. - */ --void db_configuration_list_free(db_configuration_list_t* configuration_list); -+extern void db_configuration_list_free(db_configuration_list_t* configuration_list); - - /** - * free global allocator. -@@ -119,7 +119,7 @@ - * \param[in] configuration a db_configuration_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_configuration_list_add(db_configuration_list_t* configuration_list, db_configuration_t* configuration); -+extern int db_configuration_list_add(db_configuration_list_t* configuration_list, db_configuration_t* configuration); - - /** - * Find a database configuration by name within a database configuration list. -@@ -128,6 +128,6 @@ - * \return a db_configuration_t pointer or NULL on error or if the database - * configuration does not exist. - */ --const db_configuration_t* db_configuration_list_find(const db_configuration_list_t* configuration_list, const char* name); -+extern const db_configuration_t* db_configuration_list_find(const db_configuration_list_t* configuration_list, const char* name); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_connection.h opendnssec-2.1.6/enforcer/src/db/db_connection.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_connection.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_connection.h 2020-02-18 23:08:38.110360631 -0500 -@@ -52,13 +52,13 @@ - * Create a new database connection. - * \return a db_connection_t pointer or NULL on error. - */ --db_connection_t* db_connection_new(void); -+extern db_connection_t* db_connection_new(void); - - /** - * Delete a database connection and the database backend within. - * \param[in] connection a db_connection_t pointer. - */ --void db_connection_free(db_connection_t* connection); -+extern void db_connection_free(db_connection_t* connection); - - /** - * Set the database configuration list for a database connection. -@@ -66,7 +66,7 @@ - * \param[in] configuration_list a db_configuration_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_set_configuration_list(db_connection_t* connection, const db_configuration_list_t* configuration_list); -+extern int db_connection_set_configuration_list(db_connection_t* connection, const db_configuration_list_t* configuration_list); - - /** - * Setup the database connection, this verifies the information in the database -@@ -74,14 +74,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_setup(db_connection_t* connection); -+extern int db_connection_setup(db_connection_t* connection); - - /** - * Connect to the database. - * \param[in] connection a db_connection_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_connect(const db_connection_t* connection); -+extern int db_connection_connect(const db_connection_t* connection); - - /** - * Create an object in the database. The `object` refer to the database object -@@ -93,7 +93,7 @@ - * \param[in] value_set a db_value_set_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_create(const db_connection_t* connection, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); -+extern int db_connection_create(const db_connection_t* connection, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); - - /** - * Read an object or objects from the database. -@@ -104,7 +104,7 @@ - * \return a db_result_list_t pointer or NULL on error or if no objects where - * read. - */ --db_result_list_t* db_connection_read(const db_connection_t* connection, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); -+extern db_result_list_t* db_connection_read(const db_connection_t* connection, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); - - /** - * Update an object or objects in the database. -@@ -115,7 +115,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_update(const db_connection_t* connection, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); -+extern int db_connection_update(const db_connection_t* connection, const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); - - /** - * Delete an object or objects from the database. -@@ -124,7 +124,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_delete(const db_connection_t* connection, const db_object_t* object, const db_clause_list_t* clause_list); -+extern int db_connection_delete(const db_connection_t* connection, const db_object_t* object, const db_clause_list_t* clause_list); - - /** - * Count objects from the database. Return the count in `count`. -@@ -135,6 +135,6 @@ - * \param[out] count a size_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_connection_count(const db_connection_t* connection, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); -+extern int db_connection_count(const db_connection_t* connection, const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_join.h opendnssec-2.1.6/enforcer/src/db/db_join.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_join.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_join.h 2020-02-18 23:08:38.110360631 -0500 -@@ -54,7 +54,7 @@ - * \return a character pointer or NULL on error or if no from table name has - * been set. - */ --const char* db_join_from_table(const db_join_t* join); -+extern const char* db_join_from_table(const db_join_t* join); - - /** - * Get the from field name of a database join. -@@ -62,7 +62,7 @@ - * \return a character pointer or NULL on error or if no from field name has - * been set. - */ --const char* db_join_from_field(const db_join_t* join); -+extern const char* db_join_from_field(const db_join_t* join); - - /** - * Get the to table name of a database join. -@@ -70,7 +70,7 @@ - * \return a character pointer or NULL on error or if no to table name has been - * set. - */ --const char* db_join_to_table(const db_join_t* join); -+extern const char* db_join_to_table(const db_join_t* join); - - /** - * Get the to field name of a database join. -@@ -78,7 +78,7 @@ - * \return a character pointer or NULL on error or if no to field name has been - * set. - */ --const char* db_join_to_field(const db_join_t* join); -+extern const char* db_join_to_field(const db_join_t* join); - - /** - * Get the next database join connected in a database join list. -@@ -86,7 +86,7 @@ - * \return a db_join_t pointer or NULL on error or if there are no more database - * joins in the list. - */ --const db_join_t* db_join_next(const db_join_t* join); -+extern const db_join_t* db_join_next(const db_join_t* join); - - /** - * A list of database joins. -@@ -101,6 +101,6 @@ - * \param[in] join_list a db_join_list_t pointer. - * \return a db_join_t pointer or NULL on error or if the list is empty. - */ --const db_join_t* db_join_list_begin(const db_join_list_t* join_list); -+extern const db_join_t* db_join_list_begin(const db_join_list_t* join_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_object.h opendnssec-2.1.6/enforcer/src/db/db_object.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_object.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_object.h 2020-02-18 23:08:38.110360631 -0500 -@@ -60,20 +60,20 @@ - * Create a database object field. - * \return a db_object_field_t pointer or NULL on error. - */ --db_object_field_t* db_object_field_new(void); -+extern db_object_field_t* db_object_field_new(void); - - /** - * Create a database object field that is a copy of another. - * \param[in] from_object_field a db_object_field_t pointer. - * \return a db_object_field_t pointer or NULL on error. - */ --db_object_field_t* db_object_field_new_copy(const db_object_field_t* from_object_field); -+extern db_object_field_t* db_object_field_new_copy(const db_object_field_t* from_object_field); - - /** - * Delete a database object field. - * \param[in] object_field a db_object_field_t pointer. - */ --void db_object_field_free(db_object_field_t* object_field); -+extern void db_object_field_free(db_object_field_t* object_field); - - /** - * Copy the content of a database object field. -@@ -81,21 +81,21 @@ - * \param[in] from_object_field a db_object_field_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_copy(db_object_field_t* object_field, const db_object_field_t* from_object_field); -+extern int db_object_field_copy(db_object_field_t* object_field, const db_object_field_t* from_object_field); - - /** - * Get the name of a database object field. - * \param[in] object_field a db_object_field_t pointer. - * \return a character pointer or NULL on error or if no field name has been set. - */ --const char* db_object_field_name(const db_object_field_t* object_field); -+extern const char* db_object_field_name(const db_object_field_t* object_field); - - /** - * Get the type of a database object field. - * \param[in] object_field a db_object_field_t pointer. - * \return a db_type_t. - */ --db_type_t db_object_field_type(const db_object_field_t* object_field); -+extern db_type_t db_object_field_type(const db_object_field_t* object_field); - - /** - * Set the name of a database object field. -@@ -103,7 +103,7 @@ - * \param[in] name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_set_name(db_object_field_t* object_field, const char* name); -+extern int db_object_field_set_name(db_object_field_t* object_field, const char* name); - - /** - * Set the type of a database object field. -@@ -111,7 +111,7 @@ - * \param[in] type a db_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_set_type(db_object_field_t* object_field, db_type_t type); -+extern int db_object_field_set_type(db_object_field_t* object_field, db_type_t type); - - /** - * Set the enumerate set of a database object field. -@@ -119,14 +119,14 @@ - * \param[in] enum_set a NULL terminated db_enum_t list. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_set_enum_set(db_object_field_t* object_field, const db_enum_t* enum_set); -+extern int db_object_field_set_enum_set(db_object_field_t* object_field, const db_enum_t* enum_set); - - /** - * Check if the object field is not empty. - * \param[in] object_field a db_object_field_t pointer. - * \return DB_ERROR_* if empty, otherwise DB_OK. - */ --int db_object_field_not_empty(const db_object_field_t* object_field); -+extern int db_object_field_not_empty(const db_object_field_t* object_field); - - /** - * Get the next object field connected in a database object field list. -@@ -134,7 +134,7 @@ - * \return a db_object_field_t pointer or NULL on error or if there are no more - * object fields in the list. - */ --const db_object_field_t* db_object_field_next(const db_object_field_t* object_field); -+extern const db_object_field_t* db_object_field_next(const db_object_field_t* object_field); - - /** - * A list of object fields. -@@ -149,20 +149,20 @@ - * Create a new object field list. - * \return a db_object_field_list_t pointer or NULL on error. - */ --db_object_field_list_t* db_object_field_list_new(void); -+extern db_object_field_list_t* db_object_field_list_new(void); - - /** - * Create a new object field list that is a copy of another. - * \param[in] from_object_field_list a db_object_field_list_t pointer. - * \return a db_object_field_list_t pointer or NULL on error. - */ --db_object_field_list_t* db_object_field_list_new_copy(const db_object_field_list_t* from_object_field_list); -+extern db_object_field_list_t* db_object_field_list_new_copy(const db_object_field_list_t* from_object_field_list); - - /** - * Delete a object field list and all object fields within the list. - * \param[in] object_field_list a db_object_field_list_t pointer. - */ --void db_object_field_list_free(db_object_field_list_t* object_field_list); -+extern void db_object_field_list_free(db_object_field_list_t* object_field_list); - - /** - * Copy the content of a database object field list. -@@ -170,7 +170,7 @@ - * \param[in] from_object_field_list a db_object_field_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_list_copy(db_object_field_list_t* object_field_list, const db_object_field_list_t* from_object_field_list); -+extern int db_object_field_list_copy(db_object_field_list_t* object_field_list, const db_object_field_list_t* from_object_field_list); - - /** - * Add a database object field to a database object field list, this will takes -@@ -179,21 +179,21 @@ - * \param[in] object_field a db_object_field_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_field_list_add(db_object_field_list_t* object_field_list, db_object_field_t* object_field); -+extern int db_object_field_list_add(db_object_field_list_t* object_field_list, db_object_field_t* object_field); - - /** - * Return the first database object field in a database object field list. - * \param[in] object_field_list a db_object_field_list_t pointer. - * \return a db_object_field_t pointer or NULL on error or if the list is empty. - */ --const db_object_field_t* db_object_field_list_begin(const db_object_field_list_t* object_field_list); -+extern const db_object_field_t* db_object_field_list_begin(const db_object_field_list_t* object_field_list); - - /** - * Return the size of a object field list. - * \param[in] object_field_list a db_object_field_list_t pointer. - * \return a size_t, may be zero on error. - */ --size_t db_object_field_list_size(const db_object_field_list_t* object_field_list); -+extern size_t db_object_field_list_size(const db_object_field_list_t* object_field_list); - - /** - * A database object. -@@ -209,14 +209,14 @@ - * Create a new database object. - * \return a db_object_t pointer or NULL on error. - */ --db_object_t* db_object_new(void); -+extern db_object_t* db_object_new(void); - - /** - * Delete a database object and the object field list and backend meta data list - * if set. - * \param[in] object a db_object_t pointer. - */ --void db_object_free(db_object_t* object); -+extern void db_object_free(db_object_t* object); - - /** - * Get the database connection of a database object. -@@ -224,7 +224,7 @@ - * \return a db_connection_t pointer or NULL on error or if no connection has - * been set. - */ --const db_connection_t* db_object_connection(const db_object_t* object); -+extern const db_connection_t* db_object_connection(const db_object_t* object); - - /** - * Get the table name of a database object. -@@ -232,7 +232,7 @@ - * \return a character pointer or NULL on error or if no table name has been - * set. - */ --const char* db_object_table(const db_object_t* object); -+extern const char* db_object_table(const db_object_t* object); - - /** - * Get the object field list of a database object. -@@ -240,7 +240,7 @@ - * \return a db_object_field_list_t pointer or NULL on error or if no object - * field list has been set. - */ --const db_object_field_list_t* db_object_object_field_list(const db_object_t* object); -+extern const db_object_field_list_t* db_object_object_field_list(const db_object_t* object); - - /** - * Set the database connection of a database object. -@@ -248,7 +248,7 @@ - * \param[in] connection a db_connection_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_set_connection(db_object_t* object, const db_connection_t* connection); -+extern int db_object_set_connection(db_object_t* object, const db_connection_t* connection); - - /** - * Set the table name of a database object. -@@ -256,7 +256,7 @@ - * \param[in] table a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_set_table(db_object_t* object, const char* table); -+extern int db_object_set_table(db_object_t* object, const char* table); - - /** - * Set the primary key name of a database object. -@@ -264,7 +264,7 @@ - * \param[in] primary_key_name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_set_primary_key_name(db_object_t* object, const char* primary_key_name); -+extern int db_object_set_primary_key_name(db_object_t* object, const char* primary_key_name); - - /** - * Set the object field list of a database object, this takes over the ownership -@@ -273,7 +273,7 @@ - * \param[in] object_field_list a db_object_field_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_set_object_field_list(db_object_t* object, db_object_field_list_t* object_field_list); -+extern int db_object_set_object_field_list(db_object_t* object, db_object_field_list_t* object_field_list); - - /** - * Create an object in the database. The `object_field_list` describes the -@@ -284,7 +284,7 @@ - * \param[in] value_set a db_value_set_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_create(const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); -+extern int db_object_create(const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set); - - /** - * Read an object or objects from the database. -@@ -294,7 +294,7 @@ - * \return a db_result_list_t pointer or NULL on error or if no objects where - * read. - */ --db_result_list_t* db_object_read(const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); -+extern db_result_list_t* db_object_read(const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list); - - /** - * Update an object or objects in the database. -@@ -304,7 +304,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_update(const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); -+extern int db_object_update(const db_object_t* object, const db_object_field_list_t* object_field_list, const db_value_set_t* value_set, const db_clause_list_t* clause_list); - - /** - * Delete an object or objects from the database. -@@ -312,7 +312,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_delete(const db_object_t* object, const db_clause_list_t* clause_list); -+extern int db_object_delete(const db_object_t* object, const db_clause_list_t* clause_list); - - /** - * Count objects from the database. Return the count in `count`. -@@ -322,6 +322,6 @@ - * \param[out] count a size_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_object_count(const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); -+extern int db_object_count(const db_object_t* object, const db_join_list_t* join_list, const db_clause_list_t* clause_list, size_t* count); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_result.h opendnssec-2.1.6/enforcer/src/db/db_result.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_result.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_result.h 2020-02-18 23:08:38.110360631 -0500 -@@ -62,20 +62,20 @@ - * Create a new database result. - * \return a db_result_t pointer or NULL on error. - */ --db_result_t* db_result_new(void); -+extern db_result_t* db_result_new(void); - - /** - * Create a new database result that is a copy of another. - * \param[in] from_result a db_result_t pointer. - * \return a db_result_t pointer or NULL on error. - */ --db_result_t* db_result_new_copy(const db_result_t* from_result); -+extern db_result_t* db_result_new_copy(const db_result_t* from_result); - - /** - * Delete a database result and the backend meta data list if set. - * \param[in] result a db_result_t pointer. - */ --void db_result_free(db_result_t* result); -+extern void db_result_free(db_result_t* result); - - /** - * Copy the content of another database result. -@@ -83,7 +83,7 @@ - * \param[in] from_result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_copy(db_result_t* result, const db_result_t* from_result); -+extern int db_result_copy(db_result_t* result, const db_result_t* from_result); - - /** - * Get the value set of a database result. -@@ -91,7 +91,7 @@ - * \return a db_value_set_t pointer or NULL on error or if no value set has - * been set. - */ --const db_value_set_t* db_result_value_set(const db_result_t* result); -+extern const db_value_set_t* db_result_value_set(const db_result_t* result); - - /** - * Set the value set of a database result. -@@ -99,14 +99,14 @@ - * \param[in] value_set a db_value_set_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_set_value_set(db_result_t* result, db_value_set_t* value_set); -+extern int db_result_set_value_set(db_result_t* result, db_value_set_t* value_set); - - /** - * Check if a database result is not empty. - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* if empty, otherwise DB_OK. - */ --int db_result_not_empty(const db_result_t* result); -+extern int db_result_not_empty(const db_result_t* result); - - /** - * A list of database results. -@@ -125,20 +125,20 @@ - * Create a new database result list. - * \return a db_result_list_t pointer or NULL on error. - */ --db_result_list_t* db_result_list_new(void); -+extern db_result_list_t* db_result_list_new(void); - - /** - * Create a new database result list that is a copy of another. - * \param[in] from_result_list a db_result_list_t pointer. - * \return a db_result_list_t pointer or NULL on error. - */ --db_result_list_t* db_result_list_new_copy(const db_result_list_t* from_result_list); -+extern db_result_list_t* db_result_list_new_copy(const db_result_list_t* from_result_list); - - /** - * Delete a database result list and all database results within the list. - * \param[in] result_list a db_result_list_t pointer. - */ --void db_result_list_free(db_result_list_t* result_list); -+extern void db_result_list_free(db_result_list_t* result_list); - - /** - * free global allocator. -@@ -149,7 +149,7 @@ - * \param[in] result_list a db_result_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_list_copy(db_result_list_t* result_list, const db_result_list_t* from_result_list); -+extern int db_result_list_copy(db_result_list_t* result_list, const db_result_list_t* from_result_list); - - /** - * Set the function pointer for fetching the next database result for a database -@@ -161,7 +161,7 @@ - * \param[in] size a size_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_list_set_next(db_result_list_t* result_list, db_result_list_next_t next_function, void* next_data, size_t size); -+extern int db_result_list_set_next(db_result_list_t* result_list, db_result_list_next_t next_function, void* next_data, size_t size); - - /** - * Add a database result to a database result list, this will takes over the -@@ -170,7 +170,7 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_list_add(db_result_list_t* result_list, db_result_t* result); -+extern int db_result_list_add(db_result_list_t* result_list, db_result_t* result); - - /** - * Return the first database result in a database result list and reset the -@@ -178,7 +178,7 @@ - * \param[in] result_list a db_result_list_t pointer. - * \return a db_result_t pointer or NULL on error or if the list is empty. - */ --const db_result_t* db_result_list_begin(db_result_list_t* result_list); -+extern const db_result_t* db_result_list_begin(db_result_list_t* result_list); - - /** - * Return the next database result in a database result list. -@@ -186,7 +186,7 @@ - * \return a db_result_t pointer or NULL on error or if the end of the list has - * been reached. - */ --const db_result_t* db_result_list_next(db_result_list_t* result_list); -+extern const db_result_t* db_result_list_next(db_result_list_t* result_list); - - /** - * Return the size of the database result list. -@@ -195,7 +195,7 @@ - * , if the database result list is empty or if the backend does not support - * returning the size. - */ --size_t db_result_list_size(const db_result_list_t* result_list); -+extern size_t db_result_list_size(const db_result_list_t* result_list); - - /** - * Make sure that all objects in this database result list is loaded into memory -@@ -204,6 +204,6 @@ - * \param[in] result_list a db_result_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_result_list_fetch_all(db_result_list_t* result_list); -+extern int db_result_list_fetch_all(db_result_list_t* result_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/db_value.h opendnssec-2.1.6/enforcer/src/db/db_value.h ---- opendnssec-2.1.6-orig/enforcer/src/db/db_value.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/db_value.h 2020-02-18 23:08:38.111360644 -0500 -@@ -63,19 +63,19 @@ - * Create a new database value. - * \return a db_value_t pointer or NULL on error. - */ --db_value_t* db_value_new(void); -+extern db_value_t* db_value_new(void); - - /** - * Delete a database value. - * \param[in] value a db_value_t pointer. - */ --void db_value_free(db_value_t* value); -+extern void db_value_free(db_value_t* value); - - /** - * Reset a database value, releasing all interal resources and marking it empty. - * \param[in] value a db_value_t pointer. - */ --void db_value_reset(db_value_t* value); -+extern void db_value_reset(db_value_t* value); - - /** - * Copy the contant from one database value into another. -@@ -83,7 +83,7 @@ - * \param[in] from_value a db_value_t pointer to copy from. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_copy(db_value_t* value, const db_value_t* from_value); -+extern int db_value_copy(db_value_t* value, const db_value_t* from_value); - - /** - * Compare two database values A and B. Sets `result` with less than, equal to, -@@ -94,14 +94,14 @@ - * \param[out] result an integer pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_cmp(const db_value_t* value_a, const db_value_t* value_b, int* result); -+extern int db_value_cmp(const db_value_t* value_a, const db_value_t* value_b, int* result); - - /** - * Get the type of a database value. - * \param[in] value a db_value_t pointer. - * \return a db_type_t. - */ --db_type_t db_value_type(const db_value_t* value); -+extern db_type_t db_value_type(const db_value_t* value); - - /** - * Get a pointer for the 32bit integer in a database value. -@@ -110,7 +110,7 @@ - * integer value. - * TODO: unit test - */ --const db_type_int32_t* db_value_int32(const db_value_t* value); -+extern const db_type_int32_t* db_value_int32(const db_value_t* value); - - /** - * Get a pointer for the unsigned 32bit integer in a database value. -@@ -119,7 +119,7 @@ - * unsigned 32bit integer value. - * TODO: unit test - */ --const db_type_uint32_t* db_value_uint32(const db_value_t* value); -+extern const db_type_uint32_t* db_value_uint32(const db_value_t* value); - - /** - * Get a pointer for the 64bit integer in a database value. -@@ -128,7 +128,7 @@ - * integer value. - * TODO: unit test - */ --const db_type_int64_t* db_value_int64(const db_value_t* value); -+extern const db_type_int64_t* db_value_int64(const db_value_t* value); - - /** - * Get a pointer for the unsigned 64bit integer in a database value. -@@ -137,14 +137,14 @@ - * unsigned 64bit integer value. - * TODO: unit test - */ --const db_type_uint64_t* db_value_uint64(const db_value_t* value); -+extern const db_type_uint64_t* db_value_uint64(const db_value_t* value); - - /** - * Get a character pointer for the text in a database value. - * \param[in] value a db_value_t pointer. - * \return a character pointer or NULL on error, if empty or not a text value. - */ --const char* db_value_text(const db_value_t* value); -+extern const char* db_value_text(const db_value_t* value); - - /** - * Sets `enum_value` with the integer value of an enumeration database value. -@@ -152,14 +152,14 @@ - * \param[out] enum_value an integer pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_enum_value(const db_value_t* value, int* enum_value); -+extern int db_value_enum_value(const db_value_t* value, int* enum_value); - - /** - * Check if a database value is not empty. - * \param[in] value a db_value_t pointer. - * \return DB_ERROR_* if empty, otherwise DB_OK. - */ --int db_value_not_empty(const db_value_t* value); -+extern int db_value_not_empty(const db_value_t* value); - - /** - * Get the 32bit integer representation of the database value. -@@ -167,7 +167,7 @@ - * \param[out] to_int32 a db_type_int32_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_int32(const db_value_t* value, db_type_int32_t* to_int32); -+extern int db_value_to_int32(const db_value_t* value, db_type_int32_t* to_int32); - - /** - * Get the unsigned 32bit integer representation of the database value. -@@ -175,7 +175,7 @@ - * \param[out] to_uint32 a db_type_uint32_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_uint32(const db_value_t* value, db_type_uint32_t* to_uint32); -+extern int db_value_to_uint32(const db_value_t* value, db_type_uint32_t* to_uint32); - - /** - * Get the 64bit integer representation of the database value. -@@ -183,7 +183,7 @@ - * \param[out] to_int64 a db_type_int64_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_int64(const db_value_t* value, db_type_int64_t* to_int64); -+extern int db_value_to_int64(const db_value_t* value, db_type_int64_t* to_int64); - - /** - * Get the unsigned 64bit integer representation of the database value. -@@ -191,7 +191,7 @@ - * \param[out] to_uint64 a db_type_uint64_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_uint64(const db_value_t* value, db_type_uint64_t* to_uint64); -+extern int db_value_to_uint64(const db_value_t* value, db_type_uint64_t* to_uint64); - - /** - * Get the character representation of the database value. -@@ -199,7 +199,7 @@ - * \param[out] to_text a character pointer pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_text(const db_value_t* value, char** to_text); -+extern int db_value_to_text(const db_value_t* value, char** to_text); - - /** - * Get the integer enumeration representation of the database value. -@@ -208,7 +208,7 @@ - * \param[in] enum_set a db_enum_t array that MUST end with NULL. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_to_enum_value(const db_value_t* value, int* to_int, const db_enum_t* enum_set); -+extern int db_value_to_enum_value(const db_value_t* value, int* to_int, const db_enum_t* enum_set); - - /** - * Set the database value to a 32bit integer value. -@@ -216,7 +216,7 @@ - * \param[in] from_int32 a db_type_int32_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_int32(db_value_t* value, db_type_int32_t from_int32); -+extern int db_value_from_int32(db_value_t* value, db_type_int32_t from_int32); - - /** - * Set the database value to an unsigned 32bit integer value. -@@ -224,7 +224,7 @@ - * \param[in] from_uint32 a db_type_uint32_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_uint32(db_value_t* value, db_type_uint32_t from_uint32); -+extern int db_value_from_uint32(db_value_t* value, db_type_uint32_t from_uint32); - - /** - * Set the database value to a 64bit integer value. -@@ -232,7 +232,7 @@ - * \param[in] from_int64 a db_type_int64_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_int64(db_value_t* value, db_type_int64_t from_int64); -+extern int db_value_from_int64(db_value_t* value, db_type_int64_t from_int64); - - /** - * Set the database value to an unsigned 64bit integer value. -@@ -240,7 +240,7 @@ - * \param[in] from_uint64 a db_type_uint64_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_uint64(db_value_t* value, db_type_uint64_t from_uint64); -+extern int db_value_from_uint64(db_value_t* value, db_type_uint64_t from_uint64); - - /** - * Set the database value to a text value. -@@ -248,7 +248,7 @@ - * \param[in] from_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_text(db_value_t* value, const char* from_text); -+extern int db_value_from_text(db_value_t* value, const char* from_text); - - /** - * Set the database value to a text value. -@@ -257,7 +257,7 @@ - * \param[in] size a size_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_text2(db_value_t* value, const char* from_text, size_t size); -+extern int db_value_from_text2(db_value_t* value, const char* from_text, size_t size); - - /** - * Set the database value to an enumeration value based on an integer value. -@@ -266,14 +266,14 @@ - * \param[in] enum_set a db_enum_t array that MUST end with NULL. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_from_enum_value(db_value_t* value, int enum_value, const db_enum_t* enum_set); -+extern int db_value_from_enum_value(db_value_t* value, int enum_value, const db_enum_t* enum_set); - - /** - * Mark the database as a primary key. - * \param[in] value a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int db_value_set_primary_key(db_value_t* value); -+extern int db_value_set_primary_key(db_value_t* value); - - /** - * A container for a fixed set of database values. -@@ -288,27 +288,27 @@ - * \param[in] size a size_t. - * \return a db_value_set_t pointer or NULL on error. - */ --db_value_set_t* db_value_set_new(size_t size); -+extern db_value_set_t* db_value_set_new(size_t size); - - /** - * Create a new set of database value that is a copy of another. - * \param[in] from_value_set a db_value_set_t pointer. - * \return a db_value_set_t pointer or NULL on error. - */ --db_value_set_t* db_value_set_new_copy(const db_value_set_t* from_value_set); -+extern db_value_set_t* db_value_set_new_copy(const db_value_set_t* from_value_set); - - /** - * Delete a database value set and all values within the set. - * \param[in] value_set a db_value_set_t pointer. - */ --void db_value_set_free(db_value_set_t* value_set); -+extern void db_value_set_free(db_value_set_t* value_set); - - /** - * Get the size of database value set. - * \param[in] value_set a db_value_set_t pointer. - * \return a size_t. - */ --size_t db_value_set_size(const db_value_set_t* value_set); -+extern size_t db_value_set_size(const db_value_set_t* value_set); - - /** - * Get a read only database value at a position in a database value set. -@@ -316,7 +316,7 @@ - * \param[in] at a size_t. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* db_value_set_at(const db_value_set_t* value_set, size_t at); -+extern const db_value_t* db_value_set_at(const db_value_set_t* value_set, size_t at); - - /** - * Get a writable database value at a position in a database value set. -@@ -324,6 +324,6 @@ - * \param[in] at a size_t. - * \return a db_value_t pointer or NULL on error. - */ --db_value_t* db_value_set_get(db_value_set_t* value_set, size_t at); -+extern db_value_t* db_value_set_get(db_value_set_t* value_set, size_t at); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/hsm_key_ext.h opendnssec-2.1.6/enforcer/src/db/hsm_key_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/hsm_key_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/hsm_key_ext.h 2020-02-18 23:08:38.111360644 -0500 -@@ -35,13 +35,13 @@ - /** - * Return the human readable backup state of hsm_key as static string. - */ --char const * -+extern char const * - hsm_key_to_backup_state(hsm_key_t const *hsm_key); - - /** - * Get all HSM keys for policy/algorithm/bits/repository. - * NULL on failure - */ --hsm_key_list_t* hsm_key_list_new_get_by_policy_key(const policy_key_t *pkey); -+extern hsm_key_list_t* hsm_key_list_new_get_by_policy_key(const policy_key_t *pkey); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/hsm_key.h opendnssec-2.1.6/enforcer/src/db/hsm_key.h ---- opendnssec-2.1.6-orig/enforcer/src/db/hsm_key.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/hsm_key.h 2020-02-18 23:08:38.111360644 -0500 -@@ -98,20 +98,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a hsm_key_t pointer or NULL on error. - */ --hsm_key_t* hsm_key_new(const db_connection_t* connection); -+extern hsm_key_t* hsm_key_new(const db_connection_t* connection); - - /** - * Create a new hsm key object that is a copy of another hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a hsm_key_t pointer or NULL on error. - */ --hsm_key_t* hsm_key_new_copy(const hsm_key_t* hsm_key); -+extern hsm_key_t* hsm_key_new_copy(const hsm_key_t* hsm_key); - - /** - * Delete a hsm key object, this does not delete it from the database. - * \param[in] hsm_key a hsm_key_t pointer. - */ --void hsm_key_free(hsm_key_t* hsm_key); -+extern void hsm_key_free(hsm_key_t* hsm_key); - - /** - * Copy the content of a hsm key object. -@@ -119,7 +119,7 @@ - * \param[in] hsm_key_copy a hsm_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_copy(hsm_key_t* hsm_key, const hsm_key_t* hsm_key_copy); -+extern int hsm_key_copy(hsm_key_t* hsm_key, const hsm_key_t* hsm_key_copy); - - /** - * Set the content of a hsm key object based on a database result. -@@ -127,77 +127,77 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_from_result(hsm_key_t* hsm_key, const db_result_t* result); -+extern int hsm_key_from_result(hsm_key_t* hsm_key, const db_result_t* result); - - /** - * Get the id of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* hsm_key_id(const hsm_key_t* hsm_key); -+extern const db_value_t* hsm_key_id(const hsm_key_t* hsm_key); - - /** - * Get the policy_id of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* hsm_key_policy_id(const hsm_key_t* hsm_key); -+extern const db_value_t* hsm_key_policy_id(const hsm_key_t* hsm_key); - - /** - * Get the locator of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a character pointer or NULL on error or if no locator has been set. - */ --const char* hsm_key_locator(const hsm_key_t* hsm_key); -+extern const char* hsm_key_locator(const hsm_key_t* hsm_key); - - /** - * Get the state of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a hsm_key_state_t which may be HSM_KEY_STATE_INVALID on error or if no state has been set. - */ --hsm_key_state_t hsm_key_state(const hsm_key_t* hsm_key); -+extern hsm_key_state_t hsm_key_state(const hsm_key_t* hsm_key); - - /** - * Get the bits of a hsm key object. Undefined behavior if `hsm_key` is NULL. - * \param[in] hsm_key a hsm_key_t pointer. - * \return an unsigned integer. - */ --unsigned int hsm_key_bits(const hsm_key_t* hsm_key); -+extern unsigned int hsm_key_bits(const hsm_key_t* hsm_key); - - /** - * Get the algorithm of a hsm key object. Undefined behavior if `hsm_key` is NULL. - * \param[in] hsm_key a hsm_key_t pointer. - * \return an unsigned integer. - */ --unsigned int hsm_key_algorithm(const hsm_key_t* hsm_key); -+extern unsigned int hsm_key_algorithm(const hsm_key_t* hsm_key); - - /** - * Get the role of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a hsm_key_role_t which may be HSM_KEY_ROLE_INVALID on error or if no role has been set. - */ --hsm_key_role_t hsm_key_role(const hsm_key_t* hsm_key); -+extern hsm_key_role_t hsm_key_role(const hsm_key_t* hsm_key); - - /** - * Get the inception of a hsm key object. Undefined behavior if `hsm_key` is NULL. - * \param[in] hsm_key a hsm_key_t pointer. - * \return an unsigned integer. - */ --unsigned int hsm_key_inception(const hsm_key_t* hsm_key); -+extern unsigned int hsm_key_inception(const hsm_key_t* hsm_key); - - /** - * Get the repository of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a character pointer or NULL on error or if no repository has been set. - */ --const char* hsm_key_repository(const hsm_key_t* hsm_key); -+extern const char* hsm_key_repository(const hsm_key_t* hsm_key); - - /** - * Get the backup of a hsm key object. - * \param[in] hsm_key a hsm_key_t pointer. - * \return a hsm_key_backup_t which may be HSM_KEY_BACKUP_INVALID on error or if no backup has been set. - */ --hsm_key_backup_t hsm_key_backup(const hsm_key_t* hsm_key); -+extern hsm_key_backup_t hsm_key_backup(const hsm_key_t* hsm_key); - - /** - * Set the policy_id of a hsm key object. If this fails the original value may have been lost. -@@ -205,7 +205,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_policy_id(hsm_key_t* hsm_key, const db_value_t* policy_id); -+extern int hsm_key_set_policy_id(hsm_key_t* hsm_key, const db_value_t* policy_id); - - /** - * Set the locator of a hsm key object. -@@ -213,7 +213,7 @@ - * \param[in] locator_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_locator(hsm_key_t* hsm_key, const char* locator_text); -+extern int hsm_key_set_locator(hsm_key_t* hsm_key, const char* locator_text); - - /** - * Set the state of a hsm key object. -@@ -221,7 +221,7 @@ - * \param[in] state a hsm_key_state_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_state(hsm_key_t* hsm_key, hsm_key_state_t state); -+extern int hsm_key_set_state(hsm_key_t* hsm_key, hsm_key_state_t state); - - /** - * Set the bits of a hsm key object. -@@ -229,7 +229,7 @@ - * \param[in] bits an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_bits(hsm_key_t* hsm_key, unsigned int bits); -+extern int hsm_key_set_bits(hsm_key_t* hsm_key, unsigned int bits); - - /** - * Set the algorithm of a hsm key object. -@@ -237,7 +237,7 @@ - * \param[in] algorithm an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_algorithm(hsm_key_t* hsm_key, unsigned int algorithm); -+extern int hsm_key_set_algorithm(hsm_key_t* hsm_key, unsigned int algorithm); - - /** - * Set the role of a hsm key object. -@@ -245,7 +245,7 @@ - * \param[in] role a hsm_key_role_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_role(hsm_key_t* hsm_key, hsm_key_role_t role); -+extern int hsm_key_set_role(hsm_key_t* hsm_key, hsm_key_role_t role); - - /** - * Set the inception of a hsm key object. -@@ -253,7 +253,7 @@ - * \param[in] inception an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_inception(hsm_key_t* hsm_key, unsigned int inception); -+extern int hsm_key_set_inception(hsm_key_t* hsm_key, unsigned int inception); - - /** - * Set the key_type of a hsm key object. -@@ -261,7 +261,7 @@ - * \param[in] key_type a hsm_key_key_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_key_type(hsm_key_t* hsm_key, hsm_key_key_type_t key_type); -+extern int hsm_key_set_key_type(hsm_key_t* hsm_key, hsm_key_key_type_t key_type); - - /** - * Set the repository of a hsm key object. -@@ -269,7 +269,7 @@ - * \param[in] repository_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_repository(hsm_key_t* hsm_key, const char* repository_text); -+extern int hsm_key_set_repository(hsm_key_t* hsm_key, const char* repository_text); - - /** - * Set the backup of a hsm key object. -@@ -277,7 +277,7 @@ - * \param[in] backup a hsm_key_backup_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_set_backup(hsm_key_t* hsm_key, hsm_key_backup_t backup); -+extern int hsm_key_set_backup(hsm_key_t* hsm_key, hsm_key_backup_t backup); - - /** - * Create a clause for policy_id of a hsm key object and add it to a database clause list. -@@ -288,7 +288,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_policy_id_clause(db_clause_list_t* clause_list, const db_value_t* policy_id); -+extern db_clause_t* hsm_key_policy_id_clause(db_clause_list_t* clause_list, const db_value_t* policy_id); - - /** - * Create a clause for state of a hsm key object and add it to a database clause list. -@@ -299,7 +299,7 @@ - * \param[in] state a hsm_key_state_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_state_clause(db_clause_list_t* clause_list, hsm_key_state_t state); -+extern db_clause_t* hsm_key_state_clause(db_clause_list_t* clause_list, hsm_key_state_t state); - - /** - * Create a clause for bits of a hsm key object and add it to a database clause list. -@@ -310,7 +310,7 @@ - * \param[in] bits an unsigned integer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_bits_clause(db_clause_list_t* clause_list, unsigned int bits); -+extern db_clause_t* hsm_key_bits_clause(db_clause_list_t* clause_list, unsigned int bits); - - /** - * Create a clause for algorithm of a hsm key object and add it to a database clause list. -@@ -321,7 +321,7 @@ - * \param[in] algorithm an unsigned integer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_algorithm_clause(db_clause_list_t* clause_list, unsigned int algorithm); -+extern db_clause_t* hsm_key_algorithm_clause(db_clause_list_t* clause_list, unsigned int algorithm); - - /** - * Create a clause for role of a hsm key object and add it to a database clause list. -@@ -332,7 +332,7 @@ - * \param[in] role a hsm_key_role_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_role_clause(db_clause_list_t* clause_list, hsm_key_role_t role); -+extern db_clause_t* hsm_key_role_clause(db_clause_list_t* clause_list, hsm_key_role_t role); - - /** - * Create a clause for is_revoked of a hsm key object and add it to a database clause list. -@@ -343,7 +343,7 @@ - * \param[in] is_revoked an unsigned integer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_is_revoked_clause(db_clause_list_t* clause_list, unsigned int is_revoked); -+extern db_clause_t* hsm_key_is_revoked_clause(db_clause_list_t* clause_list, unsigned int is_revoked); - - /** - * Create a clause for key_type of a hsm key object and add it to a database clause list. -@@ -354,7 +354,7 @@ - * \param[in] key_type a hsm_key_key_type_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_key_type_clause(db_clause_list_t* clause_list, hsm_key_key_type_t key_type); -+extern db_clause_t* hsm_key_key_type_clause(db_clause_list_t* clause_list, hsm_key_key_type_t key_type); - - /** - * Create a clause for repository of a hsm key object and add it to a database clause list. -@@ -365,7 +365,7 @@ - * \param[in] repository_text a character pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_repository_clause(db_clause_list_t* clause_list, const char* repository_text); -+extern db_clause_t* hsm_key_repository_clause(db_clause_list_t* clause_list, const char* repository_text); - - /** - * Create a clause for backup of a hsm key object and add it to a database clause list. -@@ -376,14 +376,14 @@ - * \param[in] backup a hsm_key_backup_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* hsm_key_backup_clause(db_clause_list_t* clause_list, hsm_key_backup_t backup); -+extern db_clause_t* hsm_key_backup_clause(db_clause_list_t* clause_list, hsm_key_backup_t backup); - - /** - * Create a hsm key object in the database. - * \param[in] hsm_key a hsm_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_create(hsm_key_t* hsm_key); -+extern int hsm_key_create(hsm_key_t* hsm_key); - - /** - * Get a hsm key object from the database by a id specified in `id`. -@@ -391,7 +391,7 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_get_by_id(hsm_key_t* hsm_key, const db_value_t* id); -+extern int hsm_key_get_by_id(hsm_key_t* hsm_key, const db_value_t* id); - - /** - * Get a hsm key object from the database by a locator specified in `locator`. -@@ -399,7 +399,7 @@ - * \param[in] locator a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_get_by_locator(hsm_key_t* hsm_key, const char* locator); -+extern int hsm_key_get_by_locator(hsm_key_t* hsm_key, const char* locator); - - /** - * Get a new hsm key object from the database by a locator specified in `locator`. -@@ -407,14 +407,14 @@ - * \param[in] locator a character pointer. - * \return a hsm_key_t pointer or NULL on error or if it does not exist. - */ --hsm_key_t* hsm_key_new_get_by_locator(const db_connection_t* connection, const char* locator); -+extern hsm_key_t* hsm_key_new_get_by_locator(const db_connection_t* connection, const char* locator); - - /** - * Update a hsm key object in the database. - * \param[in] hsm_key a hsm_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_update(hsm_key_t* hsm_key); -+extern int hsm_key_update(hsm_key_t* hsm_key); - - /** - * Count the number of hsm key objects in the database, if a selection of -@@ -426,7 +426,7 @@ - * should be counted. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_count(hsm_key_t* hsm_key, db_clause_list_t* clause_list, size_t* count); -+extern int hsm_key_count(hsm_key_t* hsm_key, db_clause_list_t* clause_list, size_t* count); - - /** - * A list of hsm key objects. -@@ -450,14 +450,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a hsm_key_list_t pointer or NULL on error. - */ --hsm_key_list_t* hsm_key_list_new(const db_connection_t* connection); -+extern hsm_key_list_t* hsm_key_list_new(const db_connection_t* connection); - - /** - * Create a new hsm key object list that is a copy of another. - * \param[in] hsm_key_list a hsm_key_list_t pointer. - * \return a hsm_key_list_t pointer or NULL on error. - */ --hsm_key_list_t* hsm_key_list_new_copy(const hsm_key_list_t* hsm_key_copy); -+extern hsm_key_list_t* hsm_key_list_new_copy(const hsm_key_list_t* hsm_key_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -465,13 +465,13 @@ - * \param[in] hsm_key_list a hsm_key_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_list_object_store(hsm_key_list_t* hsm_key_list); -+extern int hsm_key_list_object_store(hsm_key_list_t* hsm_key_list); - - /** - * Delete a hsm key object list. - * \param[in] hsm_key_list a hsm_key_list_t pointer. - */ --void hsm_key_list_free(hsm_key_list_t* hsm_key_list); -+extern void hsm_key_list_free(hsm_key_list_t* hsm_key_list); - - /** - * free global allocator. -@@ -483,7 +483,7 @@ - * \param[in] from_hsm_key_list a hsm_key_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_list_copy(hsm_key_list_t* hsm_key_list, const hsm_key_list_t* from_hsm_key_list); -+extern int hsm_key_list_copy(hsm_key_list_t* hsm_key_list, const hsm_key_list_t* from_hsm_key_list); - - /** - * Get hsm key objects from the database by a clause list. -@@ -491,7 +491,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_list_get_by_clauses(hsm_key_list_t* hsm_key_list, const db_clause_list_t* clause_list); -+extern int hsm_key_list_get_by_clauses(hsm_key_list_t* hsm_key_list, const db_clause_list_t* clause_list); - - /** - * Get a new list of hsm key objects from the database by a clause list. -@@ -499,7 +499,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return a hsm_key_list_t pointer or NULL on error. - */ --hsm_key_list_t* hsm_key_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); -+extern hsm_key_list_t* hsm_key_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); - - /** - * Get hsm key objects from the database by a policy_id specified in `policy_id`. -@@ -507,7 +507,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int hsm_key_list_get_by_policy_id(hsm_key_list_t* hsm_key_list, const db_value_t* policy_id); -+extern int hsm_key_list_get_by_policy_id(hsm_key_list_t* hsm_key_list, const db_value_t* policy_id); - - /** - * Get a new list of hsm key objects from the database by a policy_id specified in `policy_id`. -@@ -515,7 +515,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return a hsm_key_list_t pointer or NULL on error. - */ --hsm_key_list_t* hsm_key_list_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); -+extern hsm_key_list_t* hsm_key_list_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); - - /** - * Get the first hsm key object in a hsm key object list and reset the -@@ -524,7 +524,7 @@ - * \return a hsm_key_t pointer or NULL on error or if there are no - * hsm key objects in the hsm key object list. - */ --const hsm_key_t* hsm_key_list_begin(hsm_key_list_t* hsm_key_list); -+extern const hsm_key_t* hsm_key_list_begin(hsm_key_list_t* hsm_key_list); - - /** - * Get the first hsm key object in a hsm key object list and reset the -@@ -534,7 +534,7 @@ - * \return a hsm_key_t pointer or NULL on error or if there are no - * hsm key objects in the hsm key object list. - */ --hsm_key_t* hsm_key_list_get_begin(hsm_key_list_t* hsm_key_list); -+extern hsm_key_t* hsm_key_list_get_begin(hsm_key_list_t* hsm_key_list); - - /** - * Get the next hsm key object in a hsm key object list. -@@ -544,7 +544,7 @@ - * \return a hsm_key_t pointer or NULL on error or if there are no more - * hsm key objects in the hsm key object list. - */ --const hsm_key_t* hsm_key_list_next(hsm_key_list_t* hsm_key_list); -+extern const hsm_key_t* hsm_key_list_next(hsm_key_list_t* hsm_key_list); - - /** - * Get the next hsm key object in a hsm key object list. -@@ -554,6 +554,6 @@ - * \return a hsm_key_t pointer or NULL on error or if there are no more - * hsm key objects in the hsm key object list. - */ --hsm_key_t* hsm_key_list_get_next(hsm_key_list_t* hsm_key_list); -+extern hsm_key_t* hsm_key_list_get_next(hsm_key_list_t* hsm_key_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/key_data_ext.h opendnssec-2.1.6/enforcer/src/db/key_data_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/key_data_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/key_data_ext.h 2020-02-18 23:08:38.111360644 -0500 -@@ -38,7 +38,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_cache_key_states(key_data_t* key_data); -+extern int key_data_cache_key_states(key_data_t* key_data); - - /** - * Get the cached DS key state object of a key data object. -@@ -46,7 +46,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --const key_state_t* key_data_cached_ds(key_data_t* key_data); -+extern const key_state_t* key_data_cached_ds(key_data_t* key_data); - - /** - * Get the cached RRSIG key state object of a key data object. -@@ -54,7 +54,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --const key_state_t* key_data_cached_rrsig(key_data_t* key_data); -+extern const key_state_t* key_data_cached_rrsig(key_data_t* key_data); - - /** - * Get the cached DNSKEY key state object of a key data object. -@@ -62,7 +62,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --const key_state_t* key_data_cached_dnskey(key_data_t* key_data); -+extern const key_state_t* key_data_cached_dnskey(key_data_t* key_data); - - /** - * Get the cached RRSIG DNSKEY key state object of a key data object. -@@ -70,7 +70,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --const key_state_t* key_data_cached_rrsigdnskey(key_data_t* key_data); -+extern const key_state_t* key_data_cached_rrsigdnskey(key_data_t* key_data); - - /** - * Get the cached DS key state object of a key data object. -@@ -78,7 +78,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --key_state_t* key_data_get_cached_ds(key_data_t* key_data); -+extern key_state_t* key_data_get_cached_ds(key_data_t* key_data); - - /** - * Get the cached RRSIG key state object of a key data object. -@@ -86,7 +86,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --key_state_t* key_data_get_cached_rrsig(key_data_t* key_data); -+extern key_state_t* key_data_get_cached_rrsig(key_data_t* key_data); - - /** - * Get the cached DNSKEY key state object of a key data object. -@@ -94,7 +94,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --key_state_t* key_data_get_cached_dnskey(key_data_t* key_data); -+extern key_state_t* key_data_get_cached_dnskey(key_data_t* key_data); - - /** - * Get the cached RRSIG DNSKEY key state object of a key data object. -@@ -102,7 +102,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --key_state_t* key_data_get_cached_rrsigdnskey(key_data_t* key_data); -+extern key_state_t* key_data_get_cached_rrsigdnskey(key_data_t* key_data); - - /** - * Get the cached hsm key object of a key data object. -@@ -110,6 +110,6 @@ - * \param[in] key_data a key_data_t pointer. - * \return a key_state_t pointer. - */ --const hsm_key_t* key_data_cached_hsm_key(const key_data_t* key_data); -+extern const hsm_key_t* key_data_cached_hsm_key(const key_data_t* key_data); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/key_data.h opendnssec-2.1.6/enforcer/src/db/key_data.h ---- opendnssec-2.1.6-orig/enforcer/src/db/key_data.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/key_data.h 2020-02-18 23:08:38.111360644 -0500 -@@ -93,20 +93,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_data_t pointer or NULL on error. - */ --key_data_t* key_data_new(const db_connection_t* connection); -+extern key_data_t* key_data_new(const db_connection_t* connection); - - /** - * Create a new key data object that is a copy of another key data object. - * \param[in] key_data a key_data_t pointer. - * \return a key_data_t pointer or NULL on error. - */ --key_data_t* key_data_new_copy(const key_data_t* key_data); -+extern key_data_t* key_data_new_copy(const key_data_t* key_data); - - /** - * Delete a key data object, this does not delete it from the database. - * \param[in] key_data a key_data_t pointer. - */ --void key_data_free(key_data_t* key_data); -+extern void key_data_free(key_data_t* key_data); - - /** - * Copy the content of a key data object. -@@ -114,7 +114,7 @@ - * \param[in] key_data_copy a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_copy(key_data_t* key_data, const key_data_t* key_data_copy); -+extern int key_data_copy(key_data_t* key_data, const key_data_t* key_data_copy); - - /** - * Compare two key data objects and return less than, equal to, -@@ -125,7 +125,7 @@ - * \return less than, equal to, or greater than zero if A is found, respectively, - * to be less than, to match, or be greater than B. - */ --int key_data_cmp(const key_data_t* key_data_a, const key_data_t* key_data_b); -+extern int key_data_cmp(const key_data_t* key_data_a, const key_data_t* key_data_b); - - /** - * Set the content of a key data object based on a database result. -@@ -133,21 +133,21 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_from_result(key_data_t* key_data, const db_result_t* result); -+extern int key_data_from_result(key_data_t* key_data, const db_result_t* result); - - /** - * Get the id of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_data_id(const key_data_t* key_data); -+extern const db_value_t* key_data_id(const key_data_t* key_data); - - /** - * Get the zone_id of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_data_zone_id(const key_data_t* key_data); -+extern const db_value_t* key_data_zone_id(const key_data_t* key_data); - - /** - * Get the zone_id object related to a key data object. -@@ -155,28 +155,28 @@ - * \param[in] key_data a key_data_t pointer. - * \return a zone_db_t pointer or NULL on error or if no object could be found. - */ --zone_db_t* key_data_get_zone(const key_data_t* key_data); -+extern zone_db_t* key_data_get_zone(const key_data_t* key_data); - - /** - * Get the hsm_key_id of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_data_hsm_key_id(const key_data_t* key_data); -+extern const db_value_t* key_data_hsm_key_id(const key_data_t* key_data); - - /** - * Cache the hsm_key_id object related to a key data object. - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_cache_hsm_key(key_data_t* key_data); -+extern int key_data_cache_hsm_key(key_data_t* key_data); - - /** - * Get the hsm_key_id object related to a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a hsm_key_t pointer or NULL on error or if no object could be found. - */ --const hsm_key_t* key_data_hsm_key(const key_data_t* key_data); -+extern const hsm_key_t* key_data_hsm_key(const key_data_t* key_data); - - /** - * Get the hsm_key_id object related to a key data object. -@@ -184,91 +184,91 @@ - * \param[in] key_data a key_data_t pointer. - * \return a hsm_key_t pointer or NULL on error or if no object could be found. - */ --hsm_key_t* key_data_get_hsm_key(const key_data_t* key_data); -+extern hsm_key_t* key_data_get_hsm_key(const key_data_t* key_data); - - /** - * Get the algorithm of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_algorithm(const key_data_t* key_data); -+extern unsigned int key_data_algorithm(const key_data_t* key_data); - - /** - * Get the inception of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_inception(const key_data_t* key_data); -+extern unsigned int key_data_inception(const key_data_t* key_data); - - /** - * Get the role of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a key_data_role_t which may be KEY_DATA_ROLE_INVALID on error or if no role has been set. - */ --key_data_role_t key_data_role(const key_data_t* key_data); -+extern key_data_role_t key_data_role(const key_data_t* key_data); - - /** - * Get the role as text of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a character pointer or NULL on error or if no role has been set. - */ --const char* key_data_role_text(const key_data_t* key_data); -+extern const char* key_data_role_text(const key_data_t* key_data); - - /** - * Get the introducing of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_introducing(const key_data_t* key_data); -+extern unsigned int key_data_introducing(const key_data_t* key_data); - - /** - * Get the active_zsk of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_active_zsk(const key_data_t* key_data); -+extern unsigned int key_data_active_zsk(const key_data_t* key_data); - - /** - * Get the publish of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_publish(const key_data_t* key_data); -+extern unsigned int key_data_publish(const key_data_t* key_data); - - /** - * Get the active_ksk of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_active_ksk(const key_data_t* key_data); -+extern unsigned int key_data_active_ksk(const key_data_t* key_data); - - /** - * Get the ds_at_parent of a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a key_data_ds_at_parent_t which may be KEY_DATA_DS_AT_PARENT_INVALID on error or if no ds_at_parent has been set. - */ --key_data_ds_at_parent_t key_data_ds_at_parent(const key_data_t* key_data); -+extern key_data_ds_at_parent_t key_data_ds_at_parent(const key_data_t* key_data); - - /** - * Get the keytag of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_keytag(const key_data_t* key_data); -+extern unsigned int key_data_keytag(const key_data_t* key_data); - - /** - * Get the minimize of a key data object. Undefined behavior if `key_data` is NULL. - * \param[in] key_data a key_data_t pointer. - * \return an unsigned integer. - */ --unsigned int key_data_minimize(const key_data_t* key_data); -+extern unsigned int key_data_minimize(const key_data_t* key_data); - - /** - * Get the key_state objects related to a key data object. - * \param[in] key_data a key_data_t pointer. - * \return a key_state_list_t pointer or NULL on error. - */ --key_state_list_t* key_data_key_state_list(key_data_t* key_data); -+extern key_state_list_t* key_data_key_state_list(key_data_t* key_data); - - /** - * Retrieve key_state objects related to a key data object. -@@ -277,7 +277,7 @@ - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_retrieve_key_state_list(key_data_t* key_data); -+extern int key_data_retrieve_key_state_list(key_data_t* key_data); - - /** - * Set the zone_id of a key data object. If this fails the original value may have been lost. -@@ -285,7 +285,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_zone_id(key_data_t* key_data, const db_value_t* zone_id); -+extern int key_data_set_zone_id(key_data_t* key_data, const db_value_t* zone_id); - - /** - * Set the hsm_key_id of a key data object. If this fails the original value may have been lost. -@@ -293,7 +293,7 @@ - * \param[in] hsm_key_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_hsm_key_id(key_data_t* key_data, const db_value_t* hsm_key_id); -+extern int key_data_set_hsm_key_id(key_data_t* key_data, const db_value_t* hsm_key_id); - - /** - * Set the algorithm of a key data object. -@@ -301,7 +301,7 @@ - * \param[in] algorithm an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_algorithm(key_data_t* key_data, unsigned int algorithm); -+extern int key_data_set_algorithm(key_data_t* key_data, unsigned int algorithm); - - /** - * Set the inception of a key data object. -@@ -309,7 +309,7 @@ - * \param[in] inception an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_inception(key_data_t* key_data, unsigned int inception); -+extern int key_data_set_inception(key_data_t* key_data, unsigned int inception); - - /** - * Set the role of a key data object. -@@ -317,7 +317,7 @@ - * \param[in] role a key_data_role_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_role(key_data_t* key_data, key_data_role_t role); -+extern int key_data_set_role(key_data_t* key_data, key_data_role_t role); - - /** - * Set the introducing of a key data object. -@@ -325,7 +325,7 @@ - * \param[in] introducing an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_introducing(key_data_t* key_data, unsigned int introducing); -+extern int key_data_set_introducing(key_data_t* key_data, unsigned int introducing); - - /** - * Set the active_zsk of a key data object. -@@ -333,7 +333,7 @@ - * \param[in] active_zsk an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_active_zsk(key_data_t* key_data, unsigned int active_zsk); -+extern int key_data_set_active_zsk(key_data_t* key_data, unsigned int active_zsk); - - /** - * Set the publish of a key data object. -@@ -341,7 +341,7 @@ - * \param[in] publish an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_publish(key_data_t* key_data, unsigned int publish); -+extern int key_data_set_publish(key_data_t* key_data, unsigned int publish); - - /** - * Set the active_ksk of a key data object. -@@ -349,7 +349,7 @@ - * \param[in] active_ksk an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_active_ksk(key_data_t* key_data, unsigned int active_ksk); -+extern int key_data_set_active_ksk(key_data_t* key_data, unsigned int active_ksk); - - /** - * Set the ds_at_parent of a key data object. -@@ -357,7 +357,7 @@ - * \param[in] ds_at_parent a key_data_ds_at_parent_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_ds_at_parent(key_data_t* key_data, key_data_ds_at_parent_t ds_at_parent); -+extern int key_data_set_ds_at_parent(key_data_t* key_data, key_data_ds_at_parent_t ds_at_parent); - - /** - * Set the keytag of a key data object. -@@ -365,7 +365,7 @@ - * \param[in] keytag an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_keytag(key_data_t* key_data, unsigned int keytag); -+extern int key_data_set_keytag(key_data_t* key_data, unsigned int keytag); - - /** - * Set the minimize of a key data object. -@@ -373,7 +373,7 @@ - * \param[in] minimize an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_set_minimize(key_data_t* key_data, unsigned int minimize); -+extern int key_data_set_minimize(key_data_t* key_data, unsigned int minimize); - - /** - * Create a clause for zone_id of a key data object and add it to a database clause list. -@@ -384,7 +384,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_data_zone_id_clause(db_clause_list_t* clause_list, const db_value_t* zone_id); -+extern db_clause_t* key_data_zone_id_clause(db_clause_list_t* clause_list, const db_value_t* zone_id); - - /** - * Create a clause for hsm_key_id of a key data object and add it to a database clause list. -@@ -395,7 +395,7 @@ - * \param[in] hsm_key_id a db_value_t pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_data_hsm_key_id_clause(db_clause_list_t* clause_list, const db_value_t* hsm_key_id); -+extern db_clause_t* key_data_hsm_key_id_clause(db_clause_list_t* clause_list, const db_value_t* hsm_key_id); - - /** - * Create a clause for role of a key data object and add it to a database clause list. -@@ -406,7 +406,7 @@ - * \param[in] role a key_data_role_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_data_role_clause(db_clause_list_t* clause_list, key_data_role_t role); -+extern db_clause_t* key_data_role_clause(db_clause_list_t* clause_list, key_data_role_t role); - - /** - * Create a clause for ds_at_parent of a key data object and add it to a database clause list. -@@ -417,7 +417,7 @@ - * \param[in] ds_at_parent a key_data_ds_at_parent_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_data_ds_at_parent_clause(db_clause_list_t* clause_list, key_data_ds_at_parent_t ds_at_parent); -+extern db_clause_t* key_data_ds_at_parent_clause(db_clause_list_t* clause_list, key_data_ds_at_parent_t ds_at_parent); - - /** - * Create a clause for keytag of a key data object and add it to a database clause list. -@@ -428,14 +428,14 @@ - * \param[in] keytag an unsigned integer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_data_keytag_clause(db_clause_list_t* clause_list, unsigned int keytag); -+extern db_clause_t* key_data_keytag_clause(db_clause_list_t* clause_list, unsigned int keytag); - - /** - * Create a key data object in the database. - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_create(key_data_t* key_data); -+extern int key_data_create(key_data_t* key_data); - - /** - * Get a key data object from the database by a id specified in `id`. -@@ -443,21 +443,21 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_get_by_id(key_data_t* key_data, const db_value_t* id); -+extern int key_data_get_by_id(key_data_t* key_data, const db_value_t* id); - - /** - * Update a key data object in the database. - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_update(key_data_t* key_data); -+extern int key_data_update(key_data_t* key_data); - - /** - * Delete a key data object from the database. - * \param[in] key_data a key_data_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_delete(key_data_t* key_data); -+extern int key_data_delete(key_data_t* key_data); - - /** - * Count the number of key data objects in the database, if a selection of -@@ -469,7 +469,7 @@ - * should be counted. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_count(key_data_t* key_data, db_clause_list_t* clause_list, size_t* count); -+extern int key_data_count(key_data_t* key_data, db_clause_list_t* clause_list, size_t* count); - - /** - * A list of key data objects. -@@ -494,14 +494,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* key_data_list_new(const db_connection_t* connection); -+extern key_data_list_t* key_data_list_new(const db_connection_t* connection); - - /** - * Create a new key data object list that is a copy of another. - * \param[in] key_data_list a key_data_list_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* key_data_list_new_copy(const key_data_list_t* key_data_copy); -+extern key_data_list_t* key_data_list_new_copy(const key_data_list_t* key_data_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -509,13 +509,13 @@ - * \param[in] key_data_list a key_data_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_list_object_store(key_data_list_t* key_data_list); -+extern int key_data_list_object_store(key_data_list_t* key_data_list); - - /** - * Delete a key data object list. - * \param[in] key_data_list a key_data_list_t pointer. - */ --void key_data_list_free(key_data_list_t* key_data_list); -+extern void key_data_list_free(key_data_list_t* key_data_list); - - /** - * Copy the content of another key data object list. -@@ -523,21 +523,21 @@ - * \param[in] from_key_data_list a key_data_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_list_copy(key_data_list_t* key_data_list, const key_data_list_t* from_key_data_list); -+extern int key_data_list_copy(key_data_list_t* key_data_list, const key_data_list_t* from_key_data_list); - - /** - * Get all key data objects. - * \param[in] key_data_list a key_data_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_list_get(key_data_list_t* key_data_list); -+extern int key_data_list_get(key_data_list_t* key_data_list); - - /** - * Get a new list with all key data objects. - * \param[in] connection a db_connection_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* key_data_list_new_get(const db_connection_t* connection); -+extern key_data_list_t* key_data_list_new_get(const db_connection_t* connection); - - /** - * Get key data objects from the database by a clause list. -@@ -545,7 +545,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_list_get_by_clauses(key_data_list_t* key_data_list, const db_clause_list_t* clause_list); -+extern int key_data_list_get_by_clauses(key_data_list_t* key_data_list, const db_clause_list_t* clause_list); - - /** - * Get a new list of key data objects from the database by a clause list. -@@ -553,7 +553,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* key_data_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); -+extern key_data_list_t* key_data_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); - - /** - * Get key data objects from the database by a zone_id specified in `zone_id`. -@@ -561,7 +561,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_data_list_get_by_zone_id(key_data_list_t* key_data_list, const db_value_t* zone_id); -+extern int key_data_list_get_by_zone_id(key_data_list_t* key_data_list, const db_value_t* zone_id); - - /** - * Get a new list of key data objects from the database by a zone_id specified in `zone_id`. -@@ -569,7 +569,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* key_data_list_new_get_by_zone_id(const db_connection_t* connection, const db_value_t* zone_id); -+extern key_data_list_t* key_data_list_new_get_by_zone_id(const db_connection_t* connection, const db_value_t* zone_id); - - /** - * Get the first key data object in a key data object list and reset the -@@ -578,7 +578,7 @@ - * \return a key_data_t pointer or NULL on error or if there are no - * key data objects in the key data object list. - */ --const key_data_t* key_data_list_begin(key_data_list_t* key_data_list); -+extern const key_data_t* key_data_list_begin(key_data_list_t* key_data_list); - - /** - * Get the first key data object in a key data object list and reset the -@@ -588,7 +588,7 @@ - * \return a key_data_t pointer or NULL on error or if there are no - * key data objects in the key data object list. - */ --key_data_t* key_data_list_get_begin(key_data_list_t* key_data_list); -+extern key_data_t* key_data_list_get_begin(key_data_list_t* key_data_list); - - /** - * Get the next key data object in a key data object list. -@@ -598,7 +598,7 @@ - * \return a key_data_t pointer or NULL on error or if there are no more - * key data objects in the key data object list. - */ --const key_data_t* key_data_list_next(key_data_list_t* key_data_list); -+extern const key_data_t* key_data_list_next(key_data_list_t* key_data_list); - - /** - * Get the next key data object in a key data object list. -@@ -608,7 +608,7 @@ - * \return a key_data_t pointer or NULL on error or if there are no more - * key data objects in the key data object list. - */ --key_data_t* key_data_list_get_next(key_data_list_t* key_data_list); -+extern key_data_t* key_data_list_get_next(key_data_list_t* key_data_list); - - /** - * Get the size of a key data object list. -@@ -616,9 +616,9 @@ - * \return a size_t with the size of the list or zero on error, if the list is - * empty or if the backend does not support returning the size. - */ --size_t key_data_list_size(key_data_list_t* key_data_list); -+extern size_t key_data_list_size(key_data_list_t* key_data_list); - --key_data_t* key_data_new_get_by_hsm_key_id (const db_connection_t* connection, const db_value_t* hsm_key_id); -+extern key_data_t* key_data_new_get_by_hsm_key_id (const db_connection_t* connection, const db_value_t* hsm_key_id); - --int key_data_get_by_hsm_key_id (key_data_t* key_data, const db_value_t* hsm_key_id); -+extern int key_data_get_by_hsm_key_id (key_data_t* key_data, const db_value_t* hsm_key_id); - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/key_dependency.h opendnssec-2.1.6/enforcer/src/db/key_dependency.h ---- opendnssec-2.1.6-orig/enforcer/src/db/key_dependency.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/key_dependency.h 2020-02-18 23:08:38.112360658 -0500 -@@ -74,20 +74,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_dependency_t pointer or NULL on error. - */ --key_dependency_t* key_dependency_new(const db_connection_t* connection); -+extern key_dependency_t* key_dependency_new(const db_connection_t* connection); - - /** - * Create a new key dependency object that is a copy of another key dependency object. - * \param[in] key_dependency a key_dependency_t pointer. - * \return a key_dependency_t pointer or NULL on error. - */ --key_dependency_t* key_dependency_new_copy(const key_dependency_t* key_dependency); -+extern key_dependency_t* key_dependency_new_copy(const key_dependency_t* key_dependency); - - /** - * Delete a key dependency object, this does not delete it from the database. - * \param[in] key_dependency a key_dependency_t pointer. - */ --void key_dependency_free(key_dependency_t* key_dependency); -+extern void key_dependency_free(key_dependency_t* key_dependency); - - /** - * Copy the content of a key dependency object. -@@ -95,7 +95,7 @@ - * \param[in] key_dependency_copy a key_dependency_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_copy(key_dependency_t* key_dependency, const key_dependency_t* key_dependency_copy); -+extern int key_dependency_copy(key_dependency_t* key_dependency, const key_dependency_t* key_dependency_copy); - - /** - * Set the content of a key dependency object based on a database result. -@@ -103,21 +103,21 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_from_result(key_dependency_t* key_dependency, const db_result_t* result); -+extern int key_dependency_from_result(key_dependency_t* key_dependency, const db_result_t* result); - - /** - * Get the zone_id of a key dependency object. - * \param[in] key_dependency a key_dependency_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_dependency_zone_id(const key_dependency_t* key_dependency); -+extern const db_value_t* key_dependency_zone_id(const key_dependency_t* key_dependency); - - /** - * Get the from_key_data_id of a key dependency object. - * \param[in] key_dependency a key_dependency_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_dependency_from_key_data_id(const key_dependency_t* key_dependency); -+extern const db_value_t* key_dependency_from_key_data_id(const key_dependency_t* key_dependency); - - /** - * Get the from_key_data_id object related to a key dependency object. -@@ -125,21 +125,21 @@ - * \param[in] key_dependency a key_dependency_t pointer. - * \return a key_data_t pointer or NULL on error or if no object could be found. - */ --key_data_t* key_dependency_get_from_key_data(const key_dependency_t* key_dependency); -+extern key_data_t* key_dependency_get_from_key_data(const key_dependency_t* key_dependency); - - /** - * Get the to_key_data_id of a key dependency object. - * \param[in] key_dependency a key_dependency_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_dependency_to_key_data_id(const key_dependency_t* key_dependency); -+extern const db_value_t* key_dependency_to_key_data_id(const key_dependency_t* key_dependency); - - /** - * Get the type of a key dependency object. - * \param[in] key_dependency a key_dependency_t pointer. - * \return a key_dependency_type_t which may be KEY_DEPENDENCY_TYPE_INVALID on error or if no type has been set. - */ --key_dependency_type_t key_dependency_type(const key_dependency_t* key_dependency); -+extern key_dependency_type_t key_dependency_type(const key_dependency_t* key_dependency); - - /** - * Set the zone_id of a key dependency object. If this fails the original value may have been lost. -@@ -147,7 +147,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_set_zone_id(key_dependency_t* key_dependency, const db_value_t* zone_id); -+extern int key_dependency_set_zone_id(key_dependency_t* key_dependency, const db_value_t* zone_id); - - /** - * Set the from_key_data_id of a key dependency object. If this fails the original value may have been lost. -@@ -155,7 +155,7 @@ - * \param[in] from_key_data_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_set_from_key_data_id(key_dependency_t* key_dependency, const db_value_t* from_key_data_id); -+extern int key_dependency_set_from_key_data_id(key_dependency_t* key_dependency, const db_value_t* from_key_data_id); - - /** - * Set the to_key_data_id of a key dependency object. If this fails the original value may have been lost. -@@ -163,7 +163,7 @@ - * \param[in] to_key_data_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_set_to_key_data_id(key_dependency_t* key_dependency, const db_value_t* to_key_data_id); -+extern int key_dependency_set_to_key_data_id(key_dependency_t* key_dependency, const db_value_t* to_key_data_id); - - /** - * Set the type of a key dependency object. -@@ -171,14 +171,14 @@ - * \param[in] type a key_dependency_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_set_type(key_dependency_t* key_dependency, key_dependency_type_t type); -+extern int key_dependency_set_type(key_dependency_t* key_dependency, key_dependency_type_t type); - - /** - * Create a key dependency object in the database. - * \param[in] key_dependency a key_dependency_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_create(key_dependency_t* key_dependency); -+extern int key_dependency_create(key_dependency_t* key_dependency); - - /** - * Get a key dependency object from the database by a id specified in `id`. -@@ -186,14 +186,14 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_get_by_id(key_dependency_t* key_dependency, const db_value_t* id); -+extern int key_dependency_get_by_id(key_dependency_t* key_dependency, const db_value_t* id); - - /** - * Delete a key dependency object from the database. - * \param[in] key_dependency a key_dependency_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_delete(key_dependency_t* key_dependency); -+extern int key_dependency_delete(key_dependency_t* key_dependency); - - /** - * A list of key dependency objects. -@@ -219,14 +219,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_dependency_list_t pointer or NULL on error. - */ --key_dependency_list_t* key_dependency_list_new(const db_connection_t* connection); -+extern key_dependency_list_t* key_dependency_list_new(const db_connection_t* connection); - - /** - * Create a new key dependency object list that is a copy of another. - * \param[in] key_dependency_list a key_dependency_list_t pointer. - * \return a key_dependency_list_t pointer or NULL on error. - */ --key_dependency_list_t* key_dependency_list_new_copy(const key_dependency_list_t* key_dependency_copy); -+extern key_dependency_list_t* key_dependency_list_new_copy(const key_dependency_list_t* key_dependency_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -234,13 +234,13 @@ - * \param[in] key_dependency_list a key_dependency_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_list_object_store(key_dependency_list_t* key_dependency_list); -+extern int key_dependency_list_object_store(key_dependency_list_t* key_dependency_list); - - /** - * Delete a key dependency object list. - * \param[in] key_dependency_list a key_dependency_list_t pointer. - */ --void key_dependency_list_free(key_dependency_list_t* key_dependency_list); -+extern void key_dependency_list_free(key_dependency_list_t* key_dependency_list); - - /** - * Copy the content of another key dependency object list. -@@ -248,7 +248,7 @@ - * \param[in] from_key_dependency_list a key_dependency_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_list_copy(key_dependency_list_t* key_dependency_list, const key_dependency_list_t* from_key_dependency_list); -+extern int key_dependency_list_copy(key_dependency_list_t* key_dependency_list, const key_dependency_list_t* from_key_dependency_list); - - /** - * Get key dependency objects from the database by a clause list. -@@ -256,7 +256,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_list_get_by_clauses(key_dependency_list_t* key_dependency_list, const db_clause_list_t* clause_list); -+extern int key_dependency_list_get_by_clauses(key_dependency_list_t* key_dependency_list, const db_clause_list_t* clause_list); - - /** - * Get key dependency objects from the database by a zone_id specified in `zone_id`. -@@ -264,7 +264,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_dependency_list_get_by_zone_id(key_dependency_list_t* key_dependency_list, const db_value_t* zone_id); -+extern int key_dependency_list_get_by_zone_id(key_dependency_list_t* key_dependency_list, const db_value_t* zone_id); - - /** - * Get a new list of key dependency objects from the database by a zone_id specified in `zone_id`. -@@ -272,7 +272,7 @@ - * \param[in] zone_id a db_value_t pointer. - * \return a key_dependency_list_t pointer or NULL on error. - */ --key_dependency_list_t* key_dependency_list_new_get_by_zone_id(const db_connection_t* connection, const db_value_t* zone_id); -+extern key_dependency_list_t* key_dependency_list_new_get_by_zone_id(const db_connection_t* connection, const db_value_t* zone_id); - - /** - * Get the first key dependency object in a key dependency object list and reset the -@@ -281,7 +281,7 @@ - * \return a key_dependency_t pointer or NULL on error or if there are no - * key dependency objects in the key dependency object list. - */ --const key_dependency_t* key_dependency_list_begin(key_dependency_list_t* key_dependency_list); -+extern const key_dependency_t* key_dependency_list_begin(key_dependency_list_t* key_dependency_list); - - /** - * Get the first key dependency object in a key dependency object list and reset the -@@ -291,7 +291,7 @@ - * \return a key_dependency_t pointer or NULL on error or if there are no - * key dependency objects in the key dependency object list. - */ --key_dependency_t* key_dependency_list_get_begin(key_dependency_list_t* key_dependency_list); -+extern key_dependency_t* key_dependency_list_get_begin(key_dependency_list_t* key_dependency_list); - - /** - * Get the next key dependency object in a key dependency object list. -@@ -301,7 +301,7 @@ - * \return a key_dependency_t pointer or NULL on error or if there are no more - * key dependency objects in the key dependency object list. - */ --const key_dependency_t* key_dependency_list_next(key_dependency_list_t* key_dependency_list); -+extern const key_dependency_t* key_dependency_list_next(key_dependency_list_t* key_dependency_list); - - /** - * Get the next key dependency object in a key dependency object list. -@@ -311,7 +311,7 @@ - * \return a key_dependency_t pointer or NULL on error or if there are no more - * key dependency objects in the key dependency object list. - */ --key_dependency_t* key_dependency_list_get_next(key_dependency_list_t* key_dependency_list); -+extern key_dependency_t* key_dependency_list_get_next(key_dependency_list_t* key_dependency_list); - - /** - * Get the size of a key dependency object list. -@@ -319,6 +319,6 @@ - * \return a size_t with the size of the list or zero on error, if the list is - * empty or if the backend does not support returning the size. - */ --size_t key_dependency_list_size(key_dependency_list_t* key_dependency_list); -+extern size_t key_dependency_list_size(key_dependency_list_t* key_dependency_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/key_state.h opendnssec-2.1.6/enforcer/src/db/key_state.h ---- opendnssec-2.1.6-orig/enforcer/src/db/key_state.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/key_state.h 2020-02-18 23:08:38.112360658 -0500 -@@ -81,20 +81,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_state_t pointer or NULL on error. - */ --key_state_t* key_state_new(const db_connection_t* connection); -+extern key_state_t* key_state_new(const db_connection_t* connection); - - /** - * Create a new key state object that is a copy of another key state object. - * \param[in] key_state a key_state_t pointer. - * \return a key_state_t pointer or NULL on error. - */ --key_state_t* key_state_new_copy(const key_state_t* key_state); -+extern key_state_t* key_state_new_copy(const key_state_t* key_state); - - /** - * Delete a key state object, this does not delete it from the database. - * \param[in] key_state a key_state_t pointer. - */ --void key_state_free(key_state_t* key_state); -+extern void key_state_free(key_state_t* key_state); - - /** - * Copy the content of a key state object. -@@ -102,7 +102,7 @@ - * \param[in] key_state_copy a key_state_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_copy(key_state_t* key_state, const key_state_t* key_state_copy); -+extern int key_state_copy(key_state_t* key_state, const key_state_t* key_state_copy); - - /** - * Set the content of a key state object based on a database result. -@@ -110,63 +110,63 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_from_result(key_state_t* key_state, const db_result_t* result); -+extern int key_state_from_result(key_state_t* key_state, const db_result_t* result); - - /** - * Get the key_data_id of a key state object. - * \param[in] key_state a key_state_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* key_state_key_data_id(const key_state_t* key_state); -+extern const db_value_t* key_state_key_data_id(const key_state_t* key_state); - - /** - * Get the type of a key state object. - * \param[in] key_state a key_state_t pointer. - * \return a key_state_type_t which may be KEY_STATE_TYPE_INVALID on error or if no type has been set. - */ --key_state_type_t key_state_type(const key_state_t* key_state); -+extern key_state_type_t key_state_type(const key_state_t* key_state); - - /** - * Get the type as text of a key state object. - * \param[in] key_state a key_state_t pointer. - * \return a character pointer or NULL on error or if no type has been set. - */ --const char* key_state_type_text(const key_state_t* key_state); -+extern const char* key_state_type_text(const key_state_t* key_state); - - /** - * Get the state of a key state object. - * \param[in] key_state a key_state_t pointer. - * \return a key_state_state_t which may be KEY_STATE_STATE_INVALID on error or if no state has been set. - */ --key_state_state_t key_state_state(const key_state_t* key_state); -+extern key_state_state_t key_state_state(const key_state_t* key_state); - - /** - * Get the state as text of a key state object. - * \param[in] key_state a key_state_t pointer. - * \return a character pointer or NULL on error or if no state has been set. - */ --const char* key_state_state_text(const key_state_t* key_state); -+extern const char* key_state_state_text(const key_state_t* key_state); - - /** - * Get the last_change of a key state object. Undefined behavior if `key_state` is NULL. - * \param[in] key_state a key_state_t pointer. - * \return an unsigned integer. - */ --unsigned int key_state_last_change(const key_state_t* key_state); -+extern unsigned int key_state_last_change(const key_state_t* key_state); - - /** - * Get the minimize of a key state object. Undefined behavior if `key_state` is NULL. - * \param[in] key_state a key_state_t pointer. - * \return an unsigned integer. - */ --unsigned int key_state_minimize(const key_state_t* key_state); -+extern unsigned int key_state_minimize(const key_state_t* key_state); - - /** - * Get the ttl of a key state object. Undefined behavior if `key_state` is NULL. - * \param[in] key_state a key_state_t pointer. - * \return an unsigned integer. - */ --unsigned int key_state_ttl(const key_state_t* key_state); -+extern unsigned int key_state_ttl(const key_state_t* key_state); - - /** - * Set the key_data_id of a key state object. If this fails the original value may have been lost. -@@ -174,7 +174,7 @@ - * \param[in] key_data_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_key_data_id(key_state_t* key_state, const db_value_t* key_data_id); -+extern int key_state_set_key_data_id(key_state_t* key_state, const db_value_t* key_data_id); - - /** - * Set the type of a key state object. -@@ -182,7 +182,7 @@ - * \param[in] type a key_state_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_type(key_state_t* key_state, key_state_type_t type); -+extern int key_state_set_type(key_state_t* key_state, key_state_type_t type); - - /** - * Set the state of a key state object. -@@ -190,7 +190,7 @@ - * \param[in] state a key_state_state_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_state(key_state_t* key_state, key_state_state_t state); -+extern int key_state_set_state(key_state_t* key_state, key_state_state_t state); - - /** - * Set the last_change of a key state object. -@@ -198,7 +198,7 @@ - * \param[in] last_change an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_last_change(key_state_t* key_state, unsigned int last_change); -+extern int key_state_set_last_change(key_state_t* key_state, unsigned int last_change); - - /** - * Set the minimize of a key state object. -@@ -206,7 +206,7 @@ - * \param[in] minimize an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_minimize(key_state_t* key_state, unsigned int minimize); -+extern int key_state_set_minimize(key_state_t* key_state, unsigned int minimize); - - /** - * Set the ttl of a key state object. -@@ -214,7 +214,7 @@ - * \param[in] ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_set_ttl(key_state_t* key_state, unsigned int ttl); -+extern int key_state_set_ttl(key_state_t* key_state, unsigned int ttl); - - /** - * Create a clause for key_data_id of a key state object and add it to a database clause list. -@@ -225,14 +225,14 @@ - * \param[in] key_data_id a db_value_t pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* key_state_key_data_id_clause(db_clause_list_t* clause_list, const db_value_t* key_data_id); -+extern db_clause_t* key_state_key_data_id_clause(db_clause_list_t* clause_list, const db_value_t* key_data_id); - - /** - * Create a key state object in the database. - * \param[in] key_state a key_state_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_create(key_state_t* key_state); -+extern int key_state_create(key_state_t* key_state); - - /** - * Get a key state object from the database by a id specified in `id`. -@@ -240,21 +240,21 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_get_by_id(key_state_t* key_state, const db_value_t* id); -+extern int key_state_get_by_id(key_state_t* key_state, const db_value_t* id); - - /** - * Update a key state object in the database. - * \param[in] key_state a key_state_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_update(key_state_t* key_state); -+extern int key_state_update(key_state_t* key_state); - - /** - * Delete a key state object from the database. - * \param[in] key_state a key_state_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_delete(const key_state_t* key_state); -+extern int key_state_delete(const key_state_t* key_state); - - /** - * A list of key state objects. -@@ -278,14 +278,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a key_state_list_t pointer or NULL on error. - */ --key_state_list_t* key_state_list_new(const db_connection_t* connection); -+extern key_state_list_t* key_state_list_new(const db_connection_t* connection); - - /** - * Create a new key state object list that is a copy of another. - * \param[in] key_state_list a key_state_list_t pointer. - * \return a key_state_list_t pointer or NULL on error. - */ --key_state_list_t* key_state_list_new_copy(const key_state_list_t* key_state_copy); -+extern key_state_list_t* key_state_list_new_copy(const key_state_list_t* key_state_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -293,13 +293,13 @@ - * \param[in] key_state_list a key_state_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_list_object_store(key_state_list_t* key_state_list); -+extern int key_state_list_object_store(key_state_list_t* key_state_list); - - /** - * Delete a key state object list. - * \param[in] key_state_list a key_state_list_t pointer. - */ --void key_state_list_free(key_state_list_t* key_state_list); -+extern void key_state_list_free(key_state_list_t* key_state_list); - - /** - * Copy the content of another key state object list. -@@ -307,7 +307,7 @@ - * \param[in] from_key_state_list a key_state_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_list_copy(key_state_list_t* key_state_list, const key_state_list_t* from_key_state_list); -+extern int key_state_list_copy(key_state_list_t* key_state_list, const key_state_list_t* from_key_state_list); - - - /** -@@ -316,7 +316,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_list_get_by_clauses(key_state_list_t* key_state_list, const db_clause_list_t* clause_list); -+extern int key_state_list_get_by_clauses(key_state_list_t* key_state_list, const db_clause_list_t* clause_list); - - /** - * Get key state objects from the database by a key_data_id specified in `key_data_id`. -@@ -324,7 +324,7 @@ - * \param[in] key_data_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int key_state_list_get_by_key_data_id(key_state_list_t* key_state_list, const db_value_t* key_data_id); -+extern int key_state_list_get_by_key_data_id(key_state_list_t* key_state_list, const db_value_t* key_data_id); - - /** - * Get a new list of key state objects from the database by a key_data_id specified in `key_data_id`. -@@ -332,7 +332,7 @@ - * \param[in] key_data_id a db_value_t pointer. - * \return a key_state_list_t pointer or NULL on error. - */ --key_state_list_t* key_state_list_new_get_by_key_data_id(const db_connection_t* connection, const db_value_t* key_data_id); -+extern key_state_list_t* key_state_list_new_get_by_key_data_id(const db_connection_t* connection, const db_value_t* key_data_id); - - /** - * Get the first key state object in a key state object list and reset the -@@ -341,7 +341,7 @@ - * \return a key_state_t pointer or NULL on error or if there are no - * key state objects in the key state object list. - */ --const key_state_t* key_state_list_begin(key_state_list_t* key_state_list); -+extern const key_state_t* key_state_list_begin(key_state_list_t* key_state_list); - - /** - * Get the first key state object in a key state object list and reset the -@@ -351,7 +351,7 @@ - * \return a key_state_t pointer or NULL on error or if there are no - * key state objects in the key state object list. - */ --key_state_t* key_state_list_get_begin(key_state_list_t* key_state_list); -+extern key_state_t* key_state_list_get_begin(key_state_list_t* key_state_list); - - /** - * Get the next key state object in a key state object list. -@@ -361,7 +361,7 @@ - * \return a key_state_t pointer or NULL on error or if there are no more - * key state objects in the key state object list. - */ --const key_state_t* key_state_list_next(key_state_list_t* key_state_list); -+extern const key_state_t* key_state_list_next(key_state_list_t* key_state_list); - - /** - * Get the next key state object in a key state object list. -@@ -371,6 +371,6 @@ - * \return a key_state_t pointer or NULL on error or if there are no more - * key state objects in the key state object list. - */ --key_state_t* key_state_list_get_next(key_state_list_t* key_state_list); -+extern key_state_t* key_state_list_get_next(key_state_list_t* key_state_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/policy_ext.h opendnssec-2.1.6/enforcer/src/db/policy_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/policy_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/policy_ext.h 2020-02-18 23:08:38.112360658 -0500 -@@ -41,7 +41,7 @@ - * \param[in] policy_node a xmlNodePtr to the XML for the policy. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_create_from_xml(policy_t* policy, xmlNodePtr policy_node); -+extern int policy_create_from_xml(policy_t* policy, xmlNodePtr policy_node); - - /** - * Update a policy object from XML. -@@ -51,13 +51,13 @@ - * values in the policy was updated. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_update_from_xml(policy_t* policy, xmlNodePtr policy_node, int* updated); -+extern int policy_update_from_xml(policy_t* policy, xmlNodePtr policy_node, int* updated); - - /** - * Get the policy keys for a policy. - * \param[in] policy a policy_t object. - * \return a policy_key_list_t pointer or NULL on error. - */ --policy_key_list_t* policy_get_policy_keys(const policy_t* policy); -+extern policy_key_list_t* policy_get_policy_keys(const policy_t* policy); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/policy.h opendnssec-2.1.6/enforcer/src/db/policy.h ---- opendnssec-2.1.6-orig/enforcer/src/db/policy.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/policy.h 2020-02-18 23:08:38.112360658 -0500 -@@ -107,20 +107,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a policy_t pointer or NULL on error. - */ --policy_t* policy_new(const db_connection_t* connection); -+extern policy_t* policy_new(const db_connection_t* connection); - - /** - * Create a new policy object that is a copy of another policy object. - * \param[in] policy a policy_t pointer. - * \return a policy_t pointer or NULL on error. - */ --policy_t* policy_new_copy(const policy_t* policy); -+extern policy_t* policy_new_copy(const policy_t* policy); - - /** - * Delete a policy object, this does not delete it from the database. - * \param[in] policy a policy_t pointer. - */ --void policy_free(policy_t* policy); -+extern void policy_free(policy_t* policy); - - /** - * Copy the content of a policy object. -@@ -128,7 +128,7 @@ - * \param[in] policy_copy a policy_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_copy(policy_t* policy, const policy_t* policy_copy); -+extern int policy_copy(policy_t* policy, const policy_t* policy_copy); - - /** - * Set the content of a policy object based on a database result. -@@ -136,259 +136,259 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_from_result(policy_t* policy, const db_result_t* result); -+extern int policy_from_result(policy_t* policy, const db_result_t* result); - - /** - * Get the id of a policy object. - * \param[in] policy a policy_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* policy_id(const policy_t* policy); -+extern const db_value_t* policy_id(const policy_t* policy); - - /** - * Get the name of a policy object. - * \param[in] policy a policy_t pointer. - * \return a character pointer or NULL on error or if no name has been set. - */ --const char* policy_name(const policy_t* policy); -+extern const char* policy_name(const policy_t* policy); - - /** - * Get the passthrough of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_passthrough(const policy_t* policy); -+extern unsigned int policy_passthrough(const policy_t* policy); - - /** - * Get the description of a policy object. - * \param[in] policy a policy_t pointer. - * \return a character pointer or NULL on error or if no description has been set. - */ --const char* policy_description(const policy_t* policy); -+extern const char* policy_description(const policy_t* policy); - - /** - * Get the signatures_resign of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_resign(const policy_t* policy); -+extern unsigned int policy_signatures_resign(const policy_t* policy); - - /** - * Get the signatures_refresh of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_refresh(const policy_t* policy); -+extern unsigned int policy_signatures_refresh(const policy_t* policy); - - /** - * Get the signatures_jitter of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_jitter(const policy_t* policy); -+extern unsigned int policy_signatures_jitter(const policy_t* policy); - - /** - * Get the signatures_inception_offset of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_inception_offset(const policy_t* policy); -+extern unsigned int policy_signatures_inception_offset(const policy_t* policy); - - /** - * Get the signatures_validity_default of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_validity_default(const policy_t* policy); -+extern unsigned int policy_signatures_validity_default(const policy_t* policy); - - /** - * Get the signatures_validity_denial of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_validity_denial(const policy_t* policy); -+extern unsigned int policy_signatures_validity_denial(const policy_t* policy); - - /** - * Get the signatures_validity_keyset of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_validity_keyset(const policy_t* policy); -+extern unsigned int policy_signatures_validity_keyset(const policy_t* policy); - - /** - * Get the signatures_max_zone_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_signatures_max_zone_ttl(const policy_t* policy); -+extern unsigned int policy_signatures_max_zone_ttl(const policy_t* policy); - - /** - * Get the denial_type of a policy object. - * \param[in] policy a policy_t pointer. - * \return a policy_denial_type_t which may be POLICY_DENIAL_TYPE_INVALID on error or if no denial_type has been set. - */ --policy_denial_type_t policy_denial_type(const policy_t* policy); -+extern policy_denial_type_t policy_denial_type(const policy_t* policy); - - /** - * Get the denial_optout of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_optout(const policy_t* policy); -+extern unsigned int policy_denial_optout(const policy_t* policy); - - /** - * Get the denial_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_ttl(const policy_t* policy); -+extern unsigned int policy_denial_ttl(const policy_t* policy); - - /** - * Get the denial_resalt of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_resalt(const policy_t* policy); -+extern unsigned int policy_denial_resalt(const policy_t* policy); - - /** - * Get the denial_algorithm of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_algorithm(const policy_t* policy); -+extern unsigned int policy_denial_algorithm(const policy_t* policy); - - /** - * Get the denial_iterations of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_iterations(const policy_t* policy); -+extern unsigned int policy_denial_iterations(const policy_t* policy); - - /** - * Get the denial_salt_length of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_salt_length(const policy_t* policy); -+extern unsigned int policy_denial_salt_length(const policy_t* policy); - - /** - * Get the denial_salt of a policy object. - * \param[in] policy a policy_t pointer. - * \return a character pointer or NULL on error or if no denial_salt has been set. - */ --const char* policy_denial_salt(const policy_t* policy); -+extern const char* policy_denial_salt(const policy_t* policy); - - /** - * Get the denial_salt_last_change of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_denial_salt_last_change(const policy_t* policy); -+extern unsigned int policy_denial_salt_last_change(const policy_t* policy); - - /** - * Get the keys_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_keys_ttl(const policy_t* policy); -+extern unsigned int policy_keys_ttl(const policy_t* policy); - - /** - * Get the keys_retire_safety of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_keys_retire_safety(const policy_t* policy); -+extern unsigned int policy_keys_retire_safety(const policy_t* policy); - - /** - * Get the keys_publish_safety of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_keys_publish_safety(const policy_t* policy); -+extern unsigned int policy_keys_publish_safety(const policy_t* policy); - - /** - * Get the keys_shared of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_keys_shared(const policy_t* policy); -+extern unsigned int policy_keys_shared(const policy_t* policy); - - /** - * Get the keys_purge_after of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_keys_purge_after(const policy_t* policy); -+extern unsigned int policy_keys_purge_after(const policy_t* policy); - - /** - * Get the zone_propagation_delay of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_zone_propagation_delay(const policy_t* policy); -+extern unsigned int policy_zone_propagation_delay(const policy_t* policy); - - /** - * Get the zone_soa_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_zone_soa_ttl(const policy_t* policy); -+extern unsigned int policy_zone_soa_ttl(const policy_t* policy); - - /** - * Get the zone_soa_minimum of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_zone_soa_minimum(const policy_t* policy); -+extern unsigned int policy_zone_soa_minimum(const policy_t* policy); - - /** - * Get the zone_soa_serial as text of a policy object. - * \param[in] policy a policy_t pointer. - * \return a character pointer or NULL on error or if no zone_soa_serial has been set. - */ --const char* policy_zone_soa_serial_text(const policy_t* policy); -+extern const char* policy_zone_soa_serial_text(const policy_t* policy); - - /** - * Get the parent_registration_delay of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_parent_registration_delay(const policy_t* policy); -+extern unsigned int policy_parent_registration_delay(const policy_t* policy); - - /** - * Get the parent_propagation_delay of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_parent_propagation_delay(const policy_t* policy); -+extern unsigned int policy_parent_propagation_delay(const policy_t* policy); - - /** - * Get the parent_ds_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_parent_ds_ttl(const policy_t* policy); -+extern unsigned int policy_parent_ds_ttl(const policy_t* policy); - - /** - * Get the parent_soa_ttl of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_parent_soa_ttl(const policy_t* policy); -+extern unsigned int policy_parent_soa_ttl(const policy_t* policy); - - /** - * Get the parent_soa_minimum of a policy object. Undefined behavior if `policy` is NULL. - * \param[in] policy a policy_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_parent_soa_minimum(const policy_t* policy); -+extern unsigned int policy_parent_soa_minimum(const policy_t* policy); - - /** - * Get the zone objects related to a policy object. - * \param[in] policy a policy_t pointer. - * \return a zone_list_db_t pointer or NULL on error. - */ --zone_list_db_t* policy_zone_list(policy_t* policy); -+extern zone_list_db_t* policy_zone_list(policy_t* policy); - - /** - * Retrieve zone objects related to a policy object. -@@ -397,7 +397,7 @@ - * \param[in] policy a policy_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_retrieve_zone_list(policy_t* policy); -+extern int policy_retrieve_zone_list(policy_t* policy); - - /** - * Set the name of a policy object. -@@ -405,7 +405,7 @@ - * \param[in] name_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_name(policy_t* policy, const char* name_text); -+extern int policy_set_name(policy_t* policy, const char* name_text); - - /** - * Set the passthrough of a policy object. -@@ -413,7 +413,7 @@ - * \param[in] passthrough an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_passthrough(policy_t* policy, unsigned int passthrough); -+extern int policy_set_passthrough(policy_t* policy, unsigned int passthrough); - - /** - * Set the description of a policy object. -@@ -421,7 +421,7 @@ - * \param[in] description_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_description(policy_t* policy, const char* description_text); -+extern int policy_set_description(policy_t* policy, const char* description_text); - - /** - * Set the signatures_resign of a policy object. -@@ -429,7 +429,7 @@ - * \param[in] signatures_resign an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_resign(policy_t* policy, unsigned int signatures_resign); -+extern int policy_set_signatures_resign(policy_t* policy, unsigned int signatures_resign); - - /** - * Set the signatures_refresh of a policy object. -@@ -437,7 +437,7 @@ - * \param[in] signatures_refresh an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_refresh(policy_t* policy, unsigned int signatures_refresh); -+extern int policy_set_signatures_refresh(policy_t* policy, unsigned int signatures_refresh); - - /** - * Set the signatures_jitter of a policy object. -@@ -445,7 +445,7 @@ - * \param[in] signatures_jitter an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_jitter(policy_t* policy, unsigned int signatures_jitter); -+extern int policy_set_signatures_jitter(policy_t* policy, unsigned int signatures_jitter); - - /** - * Set the signatures_inception_offset of a policy object. -@@ -453,7 +453,7 @@ - * \param[in] signatures_inception_offset an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_inception_offset(policy_t* policy, unsigned int signatures_inception_offset); -+extern int policy_set_signatures_inception_offset(policy_t* policy, unsigned int signatures_inception_offset); - - /** - * Set the signatures_validity_default of a policy object. -@@ -461,7 +461,7 @@ - * \param[in] signatures_validity_default an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_validity_default(policy_t* policy, unsigned int signatures_validity_default); -+extern int policy_set_signatures_validity_default(policy_t* policy, unsigned int signatures_validity_default); - - /** - * Set the signatures_validity_denial of a policy object. -@@ -469,7 +469,7 @@ - * \param[in] signatures_validity_denial an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_validity_denial(policy_t* policy, unsigned int signatures_validity_denial); -+extern int policy_set_signatures_validity_denial(policy_t* policy, unsigned int signatures_validity_denial); - - /** - * Set the signatures_validity_keyset of a policy object. -@@ -477,7 +477,7 @@ - * \param[in] signatures_validity_keyset an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_validity_keyset(policy_t* policy, unsigned int signatures_validity_keyset); -+extern int policy_set_signatures_validity_keyset(policy_t* policy, unsigned int signatures_validity_keyset); - - /** - * Set the signatures_max_zone_ttl of a policy object. -@@ -485,7 +485,7 @@ - * \param[in] signatures_max_zone_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_signatures_max_zone_ttl(policy_t* policy, unsigned int signatures_max_zone_ttl); -+extern int policy_set_signatures_max_zone_ttl(policy_t* policy, unsigned int signatures_max_zone_ttl); - - /** - * Set the denial_type of a policy object. -@@ -493,7 +493,7 @@ - * \param[in] denial_type a policy_denial_type_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_type(policy_t* policy, policy_denial_type_t denial_type); -+extern int policy_set_denial_type(policy_t* policy, policy_denial_type_t denial_type); - - /** - * Set the denial_optout of a policy object. -@@ -501,7 +501,7 @@ - * \param[in] denial_optout an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_optout(policy_t* policy, unsigned int denial_optout); -+extern int policy_set_denial_optout(policy_t* policy, unsigned int denial_optout); - - /** - * Set the denial_ttl of a policy object. -@@ -509,7 +509,7 @@ - * \param[in] denial_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_ttl(policy_t* policy, unsigned int denial_ttl); -+extern int policy_set_denial_ttl(policy_t* policy, unsigned int denial_ttl); - - /** - * Set the denial_resalt of a policy object. -@@ -517,7 +517,7 @@ - * \param[in] denial_resalt an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_resalt(policy_t* policy, unsigned int denial_resalt); -+extern int policy_set_denial_resalt(policy_t* policy, unsigned int denial_resalt); - - /** - * Set the denial_algorithm of a policy object. -@@ -525,7 +525,7 @@ - * \param[in] denial_algorithm an unsigned integer with a maximum value of 255. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_algorithm(policy_t* policy, unsigned int denial_algorithm); -+extern int policy_set_denial_algorithm(policy_t* policy, unsigned int denial_algorithm); - - /** - * Set the denial_iterations of a policy object. -@@ -533,7 +533,7 @@ - * \param[in] denial_iterations an unsigned integer with a maximum value of 65535. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_iterations(policy_t* policy, unsigned int denial_iterations); -+extern int policy_set_denial_iterations(policy_t* policy, unsigned int denial_iterations); - - /** - * Set the denial_salt_length of a policy object. -@@ -541,7 +541,7 @@ - * \param[in] denial_salt_length an unsigned integer with a maximum value of 255. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_salt_length(policy_t* policy, unsigned int denial_salt_length); -+extern int policy_set_denial_salt_length(policy_t* policy, unsigned int denial_salt_length); - - /** - * Set the denial_salt of a policy object. -@@ -549,7 +549,7 @@ - * \param[in] denial_salt_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_salt(policy_t* policy, const char* denial_salt_text); -+extern int policy_set_denial_salt(policy_t* policy, const char* denial_salt_text); - - /** - * Set the denial_salt_last_change of a policy object. -@@ -557,7 +557,7 @@ - * \param[in] denial_salt_last_change an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_denial_salt_last_change(policy_t* policy, unsigned int denial_salt_last_change); -+extern int policy_set_denial_salt_last_change(policy_t* policy, unsigned int denial_salt_last_change); - - /** - * Set the keys_ttl of a policy object. -@@ -565,7 +565,7 @@ - * \param[in] keys_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_keys_ttl(policy_t* policy, unsigned int keys_ttl); -+extern int policy_set_keys_ttl(policy_t* policy, unsigned int keys_ttl); - - /** - * Set the keys_retire_safety of a policy object. -@@ -573,7 +573,7 @@ - * \param[in] keys_retire_safety an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_keys_retire_safety(policy_t* policy, unsigned int keys_retire_safety); -+extern int policy_set_keys_retire_safety(policy_t* policy, unsigned int keys_retire_safety); - - /** - * Set the keys_publish_safety of a policy object. -@@ -581,7 +581,7 @@ - * \param[in] keys_publish_safety an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_keys_publish_safety(policy_t* policy, unsigned int keys_publish_safety); -+extern int policy_set_keys_publish_safety(policy_t* policy, unsigned int keys_publish_safety); - - /** - * Set the keys_shared of a policy object. -@@ -589,7 +589,7 @@ - * \param[in] keys_shared an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_keys_shared(policy_t* policy, unsigned int keys_shared); -+extern int policy_set_keys_shared(policy_t* policy, unsigned int keys_shared); - - /** - * Set the keys_purge_after of a policy object. -@@ -597,7 +597,7 @@ - * \param[in] keys_purge_after an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_keys_purge_after(policy_t* policy, unsigned int keys_purge_after); -+extern int policy_set_keys_purge_after(policy_t* policy, unsigned int keys_purge_after); - - /** - * Set the zone_propagation_delay of a policy object. -@@ -605,7 +605,7 @@ - * \param[in] zone_propagation_delay an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_zone_propagation_delay(policy_t* policy, unsigned int zone_propagation_delay); -+extern int policy_set_zone_propagation_delay(policy_t* policy, unsigned int zone_propagation_delay); - - /** - * Set the zone_soa_ttl of a policy object. -@@ -613,7 +613,7 @@ - * \param[in] zone_soa_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_zone_soa_ttl(policy_t* policy, unsigned int zone_soa_ttl); -+extern int policy_set_zone_soa_ttl(policy_t* policy, unsigned int zone_soa_ttl); - - /** - * Set the zone_soa_minimum of a policy object. -@@ -621,7 +621,7 @@ - * \param[in] zone_soa_minimum an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_zone_soa_minimum(policy_t* policy, unsigned int zone_soa_minimum); -+extern int policy_set_zone_soa_minimum(policy_t* policy, unsigned int zone_soa_minimum); - - /** - * Set the zone_soa_serial of a policy object from text. -@@ -629,7 +629,7 @@ - * \param[in] zone_soa_serial a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_zone_soa_serial_text(policy_t* policy, const char* zone_soa_serial); -+extern int policy_set_zone_soa_serial_text(policy_t* policy, const char* zone_soa_serial); - - /** - * Set the parent_registration_delay of a policy object. -@@ -637,7 +637,7 @@ - * \param[in] parent_registration_delay an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_parent_registration_delay(policy_t* policy, unsigned int parent_registration_delay); -+extern int policy_set_parent_registration_delay(policy_t* policy, unsigned int parent_registration_delay); - - /** - * Set the parent_propagation_delay of a policy object. -@@ -645,7 +645,7 @@ - * \param[in] parent_propagation_delay an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_parent_propagation_delay(policy_t* policy, unsigned int parent_propagation_delay); -+extern int policy_set_parent_propagation_delay(policy_t* policy, unsigned int parent_propagation_delay); - - /** - * Set the parent_ds_ttl of a policy object. -@@ -653,7 +653,7 @@ - * \param[in] parent_ds_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_parent_ds_ttl(policy_t* policy, unsigned int parent_ds_ttl); -+extern int policy_set_parent_ds_ttl(policy_t* policy, unsigned int parent_ds_ttl); - - /** - * Set the parent_soa_ttl of a policy object. -@@ -661,7 +661,7 @@ - * \param[in] parent_soa_ttl an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_parent_soa_ttl(policy_t* policy, unsigned int parent_soa_ttl); -+extern int policy_set_parent_soa_ttl(policy_t* policy, unsigned int parent_soa_ttl); - - /** - * Set the parent_soa_minimum of a policy object. -@@ -669,7 +669,7 @@ - * \param[in] parent_soa_minimum an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_set_parent_soa_minimum(policy_t* policy, unsigned int parent_soa_minimum); -+extern int policy_set_parent_soa_minimum(policy_t* policy, unsigned int parent_soa_minimum); - - /** - * Create a clause for denial_type of a policy object and add it to a database clause list. -@@ -680,14 +680,14 @@ - * \param[in] denial_type a policy_denial_type_t. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* policy_denial_type_clause(db_clause_list_t* clause_list, policy_denial_type_t denial_type); -+extern db_clause_t* policy_denial_type_clause(db_clause_list_t* clause_list, policy_denial_type_t denial_type); - - /** - * Create a policy object in the database. - * \param[in] policy a policy_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_create(policy_t* policy); -+extern int policy_create(policy_t* policy); - - /** - * Get a policy object from the database by a id specified in `id`. -@@ -695,7 +695,7 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_get_by_id(policy_t* policy, const db_value_t* id); -+extern int policy_get_by_id(policy_t* policy, const db_value_t* id); - - /** - * Get a policy object from the database by a name specified in `name`. -@@ -703,7 +703,7 @@ - * \param[in] name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_get_by_name(policy_t* policy, const char* name); -+extern int policy_get_by_name(policy_t* policy, const char* name); - - /** - * Get a new policy object from the database by a name specified in `name`. -@@ -711,21 +711,21 @@ - * \param[in] name a character pointer. - * \return a policy_t pointer or NULL on error or if it does not exist. - */ --policy_t* policy_new_get_by_name(const db_connection_t* connection, const char* name); -+extern policy_t* policy_new_get_by_name(const db_connection_t* connection, const char* name); - - /** - * Update a policy object in the database. - * \param[in] policy a policy_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_update(policy_t* policy); -+extern int policy_update(policy_t* policy); - - /** - * Delete a policy object from the database. - * \param[in] policy a policy_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_delete(policy_t* policy); -+extern int policy_delete(policy_t* policy); - - /** - * A list of policy objects. -@@ -748,14 +748,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a policy_list_t pointer or NULL on error. - */ --policy_list_t* policy_list_new(const db_connection_t* connection); -+extern policy_list_t* policy_list_new(const db_connection_t* connection); - - /** - * Create a new policy object list that is a copy of another. - * \param[in] policy_list a policy_list_t pointer. - * \return a policy_list_t pointer or NULL on error. - */ --policy_list_t* policy_list_new_copy(const policy_list_t* policy_copy); -+extern policy_list_t* policy_list_new_copy(const policy_list_t* policy_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -763,13 +763,13 @@ - * \param[in] policy_list a policy_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_list_object_store(policy_list_t* policy_list); -+extern int policy_list_object_store(policy_list_t* policy_list); - - /** - * Delete a policy object list. - * \param[in] policy_list a policy_list_t pointer. - */ --void policy_list_free(policy_list_t* policy_list); -+extern void policy_list_free(policy_list_t* policy_list); - - /** - * Copy the content of another policy object list. -@@ -777,21 +777,21 @@ - * \param[in] from_policy_list a policy_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_list_copy(policy_list_t* policy_list, const policy_list_t* from_policy_list); -+extern int policy_list_copy(policy_list_t* policy_list, const policy_list_t* from_policy_list); - - /** - * Get all policy objects. - * \param[in] policy_list a policy_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_list_get(policy_list_t* policy_list); -+extern int policy_list_get(policy_list_t* policy_list); - - /** - * Get a new list with all policy objects. - * \param[in] connection a db_connection_t pointer. - * \return a policy_list_t pointer or NULL on error. - */ --policy_list_t* policy_list_new_get(const db_connection_t* connection); -+extern policy_list_t* policy_list_new_get(const db_connection_t* connection); - - /** - * Get policy objects from the database by a clause list. -@@ -799,7 +799,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_list_get_by_clauses(policy_list_t* policy_list, const db_clause_list_t* clause_list); -+extern int policy_list_get_by_clauses(policy_list_t* policy_list, const db_clause_list_t* clause_list); - - /** - * Get a new list of policy objects from the database by a clause list. -@@ -807,7 +807,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return a policy_list_t pointer or NULL on error. - */ --policy_list_t* policy_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); -+extern policy_list_t* policy_list_new_get_by_clauses(const db_connection_t* connection, const db_clause_list_t* clause_list); - - /** - * Get the first policy object in a policy object list and reset the -@@ -816,7 +816,7 @@ - * \return a policy_t pointer or NULL on error or if there are no - * policy objects in the policy object list. - */ --const policy_t* policy_list_begin(policy_list_t* policy_list); -+extern const policy_t* policy_list_begin(policy_list_t* policy_list); - - /** - * Get the next policy object in a policy object list. -@@ -826,7 +826,7 @@ - * \return a policy_t pointer or NULL on error or if there are no more - * policy objects in the policy object list. - */ --const policy_t* policy_list_next(policy_list_t* policy_list); -+extern const policy_t* policy_list_next(policy_list_t* policy_list); - - /** - * Get the next policy object in a policy object list. -@@ -836,6 +836,6 @@ - * \return a policy_t pointer or NULL on error or if there are no more - * policy objects in the policy object list. - */ --policy_t* policy_list_get_next(policy_list_t* policy_list); -+extern policy_t* policy_list_get_next(policy_list_t* policy_list); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/policy_key_ext.h opendnssec-2.1.6/enforcer/src/db/policy_key_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/policy_key_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/policy_key_ext.h 2020-02-18 23:08:38.113360672 -0500 -@@ -44,6 +44,6 @@ - * \param[in] key_node a xmlNodePtr to the XML for the policy key. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_create_from_xml(policy_key_t* policy_key, xmlNodePtr key_node); -+extern int policy_key_create_from_xml(policy_key_t* policy_key, xmlNodePtr key_node); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/policy_key.h opendnssec-2.1.6/enforcer/src/db/policy_key.h ---- opendnssec-2.1.6-orig/enforcer/src/db/policy_key.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/policy_key.h 2020-02-18 23:08:38.113360672 -0500 -@@ -74,26 +74,26 @@ - * \param[in] connection a db_connection_t pointer. - * \return a policy_key_t pointer or NULL on error. - */ --policy_key_t* policy_key_new(const db_connection_t* connection); -+extern policy_key_t* policy_key_new(const db_connection_t* connection); - - /** - * Create a new policy key object that is a copy of another policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a policy_key_t pointer or NULL on error. - */ --policy_key_t* policy_key_new_copy(const policy_key_t* policy_key); -+extern policy_key_t* policy_key_new_copy(const policy_key_t* policy_key); - - /** - * Delete a policy key object, this does not delete it from the database. - * \param[in] policy_key a policy_key_t pointer. - */ --void policy_key_free(policy_key_t* policy_key); -+extern void policy_key_free(policy_key_t* policy_key); - - /** - * Reset the content of a policy key object making it as if its new. This does not change anything in the database. - * \param[in] policy_key a policy_key_t pointer. - */ --void policy_key_reset(policy_key_t* policy_key); -+extern void policy_key_reset(policy_key_t* policy_key); - - /** - * Copy the content of a policy key object. -@@ -101,7 +101,7 @@ - * \param[in] policy_key_copy a policy_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_copy(policy_key_t* policy_key, const policy_key_t* policy_key_copy); -+extern int policy_key_copy(policy_key_t* policy_key, const policy_key_t* policy_key_copy); - - /** - * Compare two policy key objects and return less than, equal to, -@@ -112,7 +112,7 @@ - * \return less than, equal to, or greater than zero if A is found, respectively, - * to be less than, to match, or be greater than B. - */ --int policy_key_cmp(const policy_key_t* policy_key_a, const policy_key_t* policy_key_b); -+extern int policy_key_cmp(const policy_key_t* policy_key_a, const policy_key_t* policy_key_b); - - /** - * Set the content of a policy key object based on a database result. -@@ -120,21 +120,21 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_from_result(policy_key_t* policy_key, const db_result_t* result); -+extern int policy_key_from_result(policy_key_t* policy_key, const db_result_t* result); - - /** - * Get the policy_id of a policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* policy_key_policy_id(const policy_key_t* policy_key); -+extern const db_value_t* policy_key_policy_id(const policy_key_t* policy_key); - - /** - * Get the policy_id object related to a policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a policy_t pointer or NULL on error or if no object could be found. - */ --const policy_t* policy_key_policy(const policy_key_t* policy_key); -+extern const policy_t* policy_key_policy(const policy_key_t* policy_key); - - /** - * Get the policy_id object related to a policy key object. -@@ -142,77 +142,77 @@ - * \param[in] policy_key a policy_key_t pointer. - * \return a policy_t pointer or NULL on error or if no object could be found. - */ --policy_t* policy_key_get_policy(const policy_key_t* policy_key); -+extern policy_t* policy_key_get_policy(const policy_key_t* policy_key); - - /** - * Get the role of a policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a policy_key_role_t which may be POLICY_KEY_ROLE_INVALID on error or if no role has been set. - */ --policy_key_role_t policy_key_role(const policy_key_t* policy_key); -+extern policy_key_role_t policy_key_role(const policy_key_t* policy_key); - - /** - * Get the role as text of a policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a character pointer or NULL on error or if no role has been set. - */ --const char* policy_key_role_text(const policy_key_t* policy_key); -+extern const char* policy_key_role_text(const policy_key_t* policy_key); - - /** - * Get the algorithm of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_algorithm(const policy_key_t* policy_key); -+extern unsigned int policy_key_algorithm(const policy_key_t* policy_key); - - /** - * Get the bits of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_bits(const policy_key_t* policy_key); -+extern unsigned int policy_key_bits(const policy_key_t* policy_key); - - /** - * Get the lifetime of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_lifetime(const policy_key_t* policy_key); -+extern unsigned int policy_key_lifetime(const policy_key_t* policy_key); - - /** - * Get the repository of a policy key object. - * \param[in] policy_key a policy_key_t pointer. - * \return a character pointer or NULL on error or if no repository has been set. - */ --const char* policy_key_repository(const policy_key_t* policy_key); -+extern const char* policy_key_repository(const policy_key_t* policy_key); - - /** - * Get the standby of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an integer. - */ --int policy_key_standby(const policy_key_t* policy_key); -+extern int policy_key_standby(const policy_key_t* policy_key); - - /** - * Get the manual_rollover of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_manual_rollover(const policy_key_t* policy_key); -+extern unsigned int policy_key_manual_rollover(const policy_key_t* policy_key); - - /** - * Get the rfc5011 of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_rfc5011(const policy_key_t* policy_key); -+extern unsigned int policy_key_rfc5011(const policy_key_t* policy_key); - - /** - * Get the minimize of a policy key object. Undefined behavior if `policy_key` is NULL. - * \param[in] policy_key a policy_key_t pointer. - * \return an unsigned integer. - */ --unsigned int policy_key_minimize(const policy_key_t* policy_key); -+extern unsigned int policy_key_minimize(const policy_key_t* policy_key); - - /** - * Set the policy_id of a policy key object. If this fails the original value may have been lost. -@@ -220,7 +220,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_policy_id(policy_key_t* policy_key, const db_value_t* policy_id); -+extern int policy_key_set_policy_id(policy_key_t* policy_key, const db_value_t* policy_id); - - /** - * Set the role of a policy key object. -@@ -228,7 +228,7 @@ - * \param[in] role a policy_key_role_t. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_role(policy_key_t* policy_key, policy_key_role_t role); -+extern int policy_key_set_role(policy_key_t* policy_key, policy_key_role_t role); - - /** - * Set the algorithm of a policy key object. -@@ -236,7 +236,7 @@ - * \param[in] algorithm an unsigned integer with a maximum value of 255. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_algorithm(policy_key_t* policy_key, unsigned int algorithm); -+extern int policy_key_set_algorithm(policy_key_t* policy_key, unsigned int algorithm); - - /** - * Set the bits of a policy key object. -@@ -244,7 +244,7 @@ - * \param[in] bits an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_bits(policy_key_t* policy_key, unsigned int bits); -+extern int policy_key_set_bits(policy_key_t* policy_key, unsigned int bits); - - /** - * Set the lifetime of a policy key object. -@@ -252,7 +252,7 @@ - * \param[in] lifetime an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_lifetime(policy_key_t* policy_key, unsigned int lifetime); -+extern int policy_key_set_lifetime(policy_key_t* policy_key, unsigned int lifetime); - - /** - * Set the repository of a policy key object. -@@ -260,7 +260,7 @@ - * \param[in] repository_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_repository(policy_key_t* policy_key, const char* repository_text); -+extern int policy_key_set_repository(policy_key_t* policy_key, const char* repository_text); - - /** - * Set the standby of a policy key object. -@@ -268,7 +268,7 @@ - * \param[in] standby an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_standby(policy_key_t* policy_key, unsigned int standby); -+extern int policy_key_set_standby(policy_key_t* policy_key, unsigned int standby); - - /** - * Set the manual_rollover of a policy key object. -@@ -276,7 +276,7 @@ - * \param[in] manual_rollover an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_manual_rollover(policy_key_t* policy_key, unsigned int manual_rollover); -+extern int policy_key_set_manual_rollover(policy_key_t* policy_key, unsigned int manual_rollover); - - /** - * Set the rfc5011 of a policy key object. -@@ -284,7 +284,7 @@ - * \param[in] rfc5011 an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_rfc5011(policy_key_t* policy_key, unsigned int rfc5011); -+extern int policy_key_set_rfc5011(policy_key_t* policy_key, unsigned int rfc5011); - - /** - * Set the minimize of a policy key object. -@@ -292,14 +292,14 @@ - * \param[in] minimize an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_set_minimize(policy_key_t* policy_key, unsigned int minimize); -+extern int policy_key_set_minimize(policy_key_t* policy_key, unsigned int minimize); - - /** - * Create a policy key object in the database. - * \param[in] policy_key a policy_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_create(policy_key_t* policy_key); -+extern int policy_key_create(policy_key_t* policy_key); - - /** - * Get a policy key object from the database by a id specified in `id`. -@@ -307,14 +307,14 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_get_by_id(policy_key_t* policy_key, const db_value_t* id); -+extern int policy_key_get_by_id(policy_key_t* policy_key, const db_value_t* id); - - /** - * Delete a policy key object from the database. - * \param[in] policy_key a policy_key_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_delete(policy_key_t* policy_key); -+extern int policy_key_delete(policy_key_t* policy_key); - - /** - * A list of policy key objects. -@@ -338,14 +338,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a policy_key_list_t pointer or NULL on error. - */ --policy_key_list_t* policy_key_list_new(const db_connection_t* connection); -+extern policy_key_list_t* policy_key_list_new(const db_connection_t* connection); - - /** - * Create a new policy key object list that is a copy of another. - * \param[in] policy_key_list a policy_key_list_t pointer. - * \return a policy_key_list_t pointer or NULL on error. - */ --policy_key_list_t* policy_key_list_new_copy(const policy_key_list_t* policy_key_copy); -+extern policy_key_list_t* policy_key_list_new_copy(const policy_key_list_t* policy_key_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -353,13 +353,13 @@ - * \param[in] policy_key_list a policy_key_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_list_object_store(policy_key_list_t* policy_key_list); -+extern int policy_key_list_object_store(policy_key_list_t* policy_key_list); - - /** - * Delete a policy key object list. - * \param[in] policy_key_list a policy_key_list_t pointer. - */ --void policy_key_list_free(policy_key_list_t* policy_key_list); -+extern void policy_key_list_free(policy_key_list_t* policy_key_list); - - /** - * Copy the content of another policy key object list. -@@ -367,7 +367,7 @@ - * \param[in] from_policy_key_list a policy_key_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_list_copy(policy_key_list_t* policy_key_list, const policy_key_list_t* from_policy_key_list); -+extern int policy_key_list_copy(policy_key_list_t* policy_key_list, const policy_key_list_t* from_policy_key_list); - - /** - * Get policy key objects from the database by a clause list. -@@ -375,7 +375,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_list_get_by_clauses(policy_key_list_t* policy_key_list, const db_clause_list_t* clause_list); -+extern int policy_key_list_get_by_clauses(policy_key_list_t* policy_key_list, const db_clause_list_t* clause_list); - - /** - * Get policy key objects from the database by a policy_id specified in `policy_id`. -@@ -383,7 +383,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int policy_key_list_get_by_policy_id(policy_key_list_t* policy_key_list, const db_value_t* policy_id); -+extern int policy_key_list_get_by_policy_id(policy_key_list_t* policy_key_list, const db_value_t* policy_id); - - /** - * Get a new list of policy key objects from the database by a policy_id specified in `policy_id`. -@@ -391,7 +391,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return a policy_key_list_t pointer or NULL on error. - */ --policy_key_list_t* policy_key_list_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); -+extern policy_key_list_t* policy_key_list_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); - - /** - * Get the first policy key object in a policy key object list and reset the -@@ -400,7 +400,7 @@ - * \return a policy_key_t pointer or NULL on error or if there are no - * policy key objects in the policy key object list. - */ --const policy_key_t* policy_key_list_begin(policy_key_list_t* policy_key_list); -+extern const policy_key_t* policy_key_list_begin(policy_key_list_t* policy_key_list); - - /** - * Get the next policy key object in a policy key object list. -@@ -410,7 +410,7 @@ - * \return a policy_key_t pointer or NULL on error or if there are no more - * policy key objects in the policy key object list. - */ --const policy_key_t* policy_key_list_next(policy_key_list_t* policy_key_list); -+extern const policy_key_t* policy_key_list_next(policy_key_list_t* policy_key_list); - - /** - * Get the next policy key object in a policy key object list. -@@ -420,7 +420,7 @@ - * \return a policy_key_t pointer or NULL on error or if there are no more - * policy key objects in the policy key object list. - */ --policy_key_t* policy_key_list_get_next(policy_key_list_t* policy_key_list); -+extern policy_key_t* policy_key_list_get_next(policy_key_list_t* policy_key_list); - - /** - * Get the size of a policy key object list. -@@ -428,9 +428,9 @@ - * \return a size_t with the size of the list or zero on error, if the list is - * empty or if the backend does not support returning the size. - */ --size_t policy_key_list_size(policy_key_list_t* policy_key_list); -+extern size_t policy_key_list_size(policy_key_list_t* policy_key_list); - --policy_key_t * policy_key_new_get_by_policyid_and_role (const db_connection_t* connection, const db_value_t* policyid, const policy_key_role_t role); -+extern policy_key_t * policy_key_new_get_by_policyid_and_role (const db_connection_t* connection, const db_value_t* policyid, const policy_key_role_t role); - --int policy_key_get_by_policyid_and_role(policy_key_t* policy_key, const db_value_t* policyid , const policy_key_role_t role); -+extern int policy_key_get_by_policyid_and_role(policy_key_t* policy_key, const db_value_t* policyid , const policy_key_role_t role); - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_database_version.h opendnssec-2.1.6/enforcer/src/db/test/test_database_version.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_database_version.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_database_version.h 2020-02-18 23:08:38.113360672 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_database_version_h - #define __test_database_version_h - --int test_database_version_add_suite(void); -+extern int test_database_version_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test.h opendnssec-2.1.6/enforcer/src/db/test/test.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test.h 2020-02-18 23:08:38.113360672 -0500 -@@ -32,53 +32,53 @@ - #ifndef __test_test_h - #define __test_test_h - --int init_suite_classes(void); --int clean_suite_classes(void); --void test_class_db_backend_handle(void); --void test_class_db_backend(void); --void test_class_db_clause(void); --void test_class_db_clause_list(void); --void test_class_db_configuration(void); --void test_class_db_configuration_list(void); --void test_class_db_connection(void); --void test_class_db_join(void); --void test_class_db_join_list(void); --void test_class_db_object_field(void); --void test_class_db_object_field_list(void); --void test_class_db_object(void); --void test_class_db_value_set(void); --void test_class_db_result(void); --void test_class_db_result_list(void); --void test_class_db_value(void); --void test_class_end(void); -+extern int init_suite_classes(void); -+extern int clean_suite_classes(void); -+extern void test_class_db_backend_handle(void); -+extern void test_class_db_backend(void); -+extern void test_class_db_clause(void); -+extern void test_class_db_clause_list(void); -+extern void test_class_db_configuration(void); -+extern void test_class_db_configuration_list(void); -+extern void test_class_db_connection(void); -+extern void test_class_db_join(void); -+extern void test_class_db_join_list(void); -+extern void test_class_db_object_field(void); -+extern void test_class_db_object_field_list(void); -+extern void test_class_db_object(void); -+extern void test_class_db_value_set(void); -+extern void test_class_db_result(void); -+extern void test_class_db_result_list(void); -+extern void test_class_db_value(void); -+extern void test_class_end(void); - --int init_suite_initialization(void); --int clean_suite_initialization(void); --void test_initialization_configuration(void); --void test_initialization_connection(void); -+extern int init_suite_initialization(void); -+extern int clean_suite_initialization(void); -+extern void test_initialization_configuration(void); -+extern void test_initialization_connection(void); - - #if defined(ENFORCER_DATABASE_SQLITE3) --int init_suite_database_operations_sqlite(void); -+extern int init_suite_database_operations_sqlite(void); - #endif --int init_suite_database_operations_mysql(void); --int clean_suite_database_operations(void); --void test_database_operations_read_object1(void); --void test_database_operations_create_object2(void); --void test_database_operations_read_object2(void); --void test_database_operations_update_object2(void); --void test_database_operations_delete_object2(void); --void test_database_operations_create_object3(void); --void test_database_operations_delete_object3(void); --void test_database_operations_read_all(void); --void test_database_operations_count(void); -+extern int init_suite_database_operations_mysql(void); -+extern int clean_suite_database_operations(void); -+extern void test_database_operations_read_object1(void); -+extern void test_database_operations_create_object2(void); -+extern void test_database_operations_read_object2(void); -+extern void test_database_operations_update_object2(void); -+extern void test_database_operations_delete_object2(void); -+extern void test_database_operations_create_object3(void); -+extern void test_database_operations_delete_object3(void); -+extern void test_database_operations_read_all(void); -+extern void test_database_operations_count(void); - --void test_database_operations_read_object1_2(void); --void test_database_operations_create_object2_2(void); --void test_database_operations_read_object2_2(void); --void test_database_operations_update_object2_2(void); --void test_database_operations_delete_object2_2(void); --void test_database_operations_create_object3_2(void); --void test_database_operations_delete_object3_2(void); --void test_database_operations_update_objects_revisions(void); -+extern void test_database_operations_read_object1_2(void); -+extern void test_database_operations_create_object2_2(void); -+extern void test_database_operations_read_object2_2(void); -+extern void test_database_operations_update_object2_2(void); -+extern void test_database_operations_delete_object2_2(void); -+extern void test_database_operations_create_object3_2(void); -+extern void test_database_operations_delete_object3_2(void); -+extern void test_database_operations_update_objects_revisions(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_hsm_key.h opendnssec-2.1.6/enforcer/src/db/test/test_hsm_key.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_hsm_key.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_hsm_key.h 2020-02-18 23:08:38.113360672 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_hsm_key_h - #define __test_hsm_key_h - --int test_hsm_key_add_suite(void); -+extern int test_hsm_key_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_data.h opendnssec-2.1.6/enforcer/src/db/test/test_key_data.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_data.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_key_data.h 2020-02-18 23:08:38.113360672 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_key_data_h - #define __test_key_data_h - --int test_key_data_add_suite(void); -+extern int test_key_data_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_dependency.h opendnssec-2.1.6/enforcer/src/db/test/test_key_dependency.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_dependency.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_key_dependency.h 2020-02-18 23:08:38.113360672 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_key_dependency_h - #define __test_key_dependency_h - --int test_key_dependency_add_suite(void); -+extern int test_key_dependency_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_state.h opendnssec-2.1.6/enforcer/src/db/test/test_key_state.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_key_state.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_key_state.h 2020-02-18 23:08:38.113360672 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_key_state_h - #define __test_key_state_h - --int test_key_state_add_suite(void); -+extern int test_key_state_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_policy.h opendnssec-2.1.6/enforcer/src/db/test/test_policy.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_policy.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_policy.h 2020-02-18 23:08:38.114360685 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_policy_h - #define __test_policy_h - --int test_policy_add_suite(void); -+extern int test_policy_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_policy_key.h opendnssec-2.1.6/enforcer/src/db/test/test_policy_key.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_policy_key.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_policy_key.h 2020-02-18 23:08:38.114360685 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_policy_key_h - #define __test_policy_key_h - --int test_policy_key_add_suite(void); -+extern int test_policy_key_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/test/test_zone.h opendnssec-2.1.6/enforcer/src/db/test/test_zone.h ---- opendnssec-2.1.6-orig/enforcer/src/db/test/test_zone.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/test/test_zone.h 2020-02-18 23:08:38.114360685 -0500 -@@ -30,6 +30,6 @@ - #ifndef __test_zone_h - #define __test_zone_h - --int test_zone_add_suite(void); -+extern int test_zone_add_suite(void); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/zone_db_ext.h opendnssec-2.1.6/enforcer/src/db/zone_db_ext.h ---- opendnssec-2.1.6-orig/enforcer/src/db/zone_db_ext.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/zone_db_ext.h 2020-02-18 23:08:38.114360685 -0500 -@@ -39,7 +39,7 @@ - * Convert zone ID to name, caller must free resulting string. - * return NULL on error - */ --char * -+extern char * - zone_db_ext_zonename_from_id(const db_connection_t* connection, - const db_value_t* id); - -@@ -48,14 +48,14 @@ - * \param[in] zone an zone_db_t pointer. - * \return a key_data_list_t pointer or NULL on error. - */ --key_data_list_t* zone_db_get_keys(const zone_db_t* zone); -+extern key_data_list_t* zone_db_get_keys(const zone_db_t* zone); - - /** - * Get a list of key dependencies for an enforcer zone object. - * \param[in] zone an zone_db_t pointer. - * \return a key_dependency_list_t pointer or NULL on error. - */ --key_dependency_list_t* zone_db_get_key_dependencies(const zone_db_t* zone); -+extern key_dependency_list_t* zone_db_get_key_dependencies(const zone_db_t* zone); - - /** - * Create a zone object from XML. -@@ -63,7 +63,7 @@ - * \param[in] zone_node a xmlNodePtr to the XML for the zone. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_create_from_xml(zone_db_t* zone, xmlNodePtr zone_node); -+extern int zone_db_create_from_xml(zone_db_t* zone, xmlNodePtr zone_node); - - /** - * Update a zone object from XML. -@@ -73,6 +73,6 @@ - * values in the zone was updated. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_update_from_xml(zone_db_t* zone, xmlNodePtr zone_node, int* updated); -+extern int zone_db_update_from_xml(zone_db_t* zone, xmlNodePtr zone_node, int* updated); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/db/zone_db.h opendnssec-2.1.6/enforcer/src/db/zone_db.h ---- opendnssec-2.1.6-orig/enforcer/src/db/zone_db.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/db/zone_db.h 2020-02-18 23:08:38.114360685 -0500 -@@ -76,20 +76,20 @@ - * \param[in] connection a db_connection_t pointer. - * \return a zone_db_t pointer or NULL on error. - */ --zone_db_t* zone_db_new(const db_connection_t* connection); -+extern zone_db_t* zone_db_new(const db_connection_t* connection); - - /** - * Create a new zone object that is a copy of another zone object. - * \param[in] zone a zone_db_t pointer. - * \return a zone_db_t pointer or NULL on error. - */ --zone_db_t* zone_db_new_copy(const zone_db_t* zone); -+extern zone_db_t* zone_db_new_copy(const zone_db_t* zone); - - /** - * Delete a zone object, this does not delete it from the database. - * \param[in] zone a zone_db_t pointer. - */ --void zone_db_free(zone_db_t* zone); -+extern void zone_db_free(zone_db_t* zone); - - /** - * Copy the content of a zone object. -@@ -97,7 +97,7 @@ - * \param[in] zone_copy a zone_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_copy(zone_db_t* zone, const zone_db_t* zone_copy); -+extern int zone_db_copy(zone_db_t* zone, const zone_db_t* zone_copy); - - /** - * Set the content of a zone object based on a database result. -@@ -105,21 +105,21 @@ - * \param[in] result a db_result_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_from_result(zone_db_t* zone, const db_result_t* result); -+extern int zone_db_from_result(zone_db_t* zone, const db_result_t* result); - - /** - * Get the id of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* zone_db_id(const zone_db_t* zone); -+extern const db_value_t* zone_db_id(const zone_db_t* zone); - - /** - * Get the policy_id of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a db_value_t pointer or NULL on error. - */ --const db_value_t* zone_db_policy_id(const zone_db_t* zone); -+extern const db_value_t* zone_db_policy_id(const zone_db_t* zone); - - /** - * Get the policy_id object related to a zone object. -@@ -127,126 +127,126 @@ - * \param[in] zone a zone_db_t pointer. - * \return a policy_t pointer or NULL on error or if no object could be found. - */ --policy_t* zone_db_get_policy(const zone_db_t* zone); -+extern policy_t* zone_db_get_policy(const zone_db_t* zone); - - /** - * Get the name of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no name has been set. - */ --const char* zone_db_name(const zone_db_t* zone); -+extern const char* zone_db_name(const zone_db_t* zone); - - /** - * Get the signconf_needs_writing of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_signconf_needs_writing(const zone_db_t* zone); -+extern unsigned int zone_db_signconf_needs_writing(const zone_db_t* zone); - - /** - * Get the signconf_path of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no signconf_path has been set. - */ --const char* zone_db_signconf_path(const zone_db_t* zone); -+extern const char* zone_db_signconf_path(const zone_db_t* zone); - - /** - * Get the next_change of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an integer. - */ --int zone_db_next_change(const zone_db_t* zone); -+extern int zone_db_next_change(const zone_db_t* zone); - - /** - * Get the ttl_end_ds of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_ttl_end_ds(const zone_db_t* zone); -+extern unsigned int zone_db_ttl_end_ds(const zone_db_t* zone); - - /** - * Get the ttl_end_dk of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_ttl_end_dk(const zone_db_t* zone); -+extern unsigned int zone_db_ttl_end_dk(const zone_db_t* zone); - - /** - * Get the ttl_end_rs of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_ttl_end_rs(const zone_db_t* zone); -+extern unsigned int zone_db_ttl_end_rs(const zone_db_t* zone); - - /** - * Get the roll_ksk_now of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_roll_ksk_now(const zone_db_t* zone); -+extern unsigned int zone_db_roll_ksk_now(const zone_db_t* zone); - - /** - * Get the roll_zsk_now of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_roll_zsk_now(const zone_db_t* zone); -+extern unsigned int zone_db_roll_zsk_now(const zone_db_t* zone); - - /** - * Get the roll_csk_now of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_roll_csk_now(const zone_db_t* zone); -+extern unsigned int zone_db_roll_csk_now(const zone_db_t* zone); - - /** - * Get the input_adapter_type of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no input_adapter_type has been set. - */ --const char* zone_db_input_adapter_type(const zone_db_t* zone); -+extern const char* zone_db_input_adapter_type(const zone_db_t* zone); - - /** - * Get the input_adapter_uri of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no input_adapter_uri has been set. - */ --const char* zone_db_input_adapter_uri(const zone_db_t* zone); -+extern const char* zone_db_input_adapter_uri(const zone_db_t* zone); - - /** - * Get the output_adapter_type of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no output_adapter_type has been set. - */ --const char* zone_db_output_adapter_type(const zone_db_t* zone); -+extern const char* zone_db_output_adapter_type(const zone_db_t* zone); - - /** - * Get the output_adapter_uri of a zone object. - * \param[in] zone a zone_db_t pointer. - * \return a character pointer or NULL on error or if no output_adapter_uri has been set. - */ --const char* zone_db_output_adapter_uri(const zone_db_t* zone); -+extern const char* zone_db_output_adapter_uri(const zone_db_t* zone); - - /** - * Get the next_ksk_roll of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_next_ksk_roll(const zone_db_t* zone); -+extern unsigned int zone_db_next_ksk_roll(const zone_db_t* zone); - - /** - * Get the next_zsk_roll of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_next_zsk_roll(const zone_db_t* zone); -+extern unsigned int zone_db_next_zsk_roll(const zone_db_t* zone); - - /** - * Get the next_csk_roll of a zone object. Undefined behavior if `zone` is NULL. - * \param[in] zone a zone_db_t pointer. - * \return an unsigned integer. - */ --unsigned int zone_db_next_csk_roll(const zone_db_t* zone); -+extern unsigned int zone_db_next_csk_roll(const zone_db_t* zone); - - /** - * Set the policy_id of a zone object. If this fails the original value may have been lost. -@@ -254,7 +254,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_policy_id(zone_db_t* zone, const db_value_t* policy_id); -+extern int zone_db_set_policy_id(zone_db_t* zone, const db_value_t* policy_id); - - /** - * Set the name of a zone object. -@@ -262,7 +262,7 @@ - * \param[in] name_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_name(zone_db_t* zone, const char* name_text); -+extern int zone_db_set_name(zone_db_t* zone, const char* name_text); - - /** - * Set the signconf_needs_writing of a zone object. -@@ -270,7 +270,7 @@ - * \param[in] signconf_needs_writing an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_signconf_needs_writing(zone_db_t* zone, unsigned int signconf_needs_writing); -+extern int zone_db_set_signconf_needs_writing(zone_db_t* zone, unsigned int signconf_needs_writing); - - /** - * Set the signconf_path of a zone object. -@@ -278,7 +278,7 @@ - * \param[in] signconf_path_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_signconf_path(zone_db_t* zone, const char* signconf_path_text); -+extern int zone_db_set_signconf_path(zone_db_t* zone, const char* signconf_path_text); - - /** - * Set the next_change of a zone object. -@@ -286,7 +286,7 @@ - * \param[in] next_change an integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_next_change(zone_db_t* zone, int next_change); -+extern int zone_db_set_next_change(zone_db_t* zone, int next_change); - - /** - * Set the ttl_end_ds of a zone object. -@@ -294,7 +294,7 @@ - * \param[in] ttl_end_ds an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_ttl_end_ds(zone_db_t* zone, unsigned int ttl_end_ds); -+extern int zone_db_set_ttl_end_ds(zone_db_t* zone, unsigned int ttl_end_ds); - - /** - * Set the ttl_end_dk of a zone object. -@@ -302,7 +302,7 @@ - * \param[in] ttl_end_dk an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_ttl_end_dk(zone_db_t* zone, unsigned int ttl_end_dk); -+extern int zone_db_set_ttl_end_dk(zone_db_t* zone, unsigned int ttl_end_dk); - - /** - * Set the ttl_end_rs of a zone object. -@@ -310,7 +310,7 @@ - * \param[in] ttl_end_rs an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_ttl_end_rs(zone_db_t* zone, unsigned int ttl_end_rs); -+extern int zone_db_set_ttl_end_rs(zone_db_t* zone, unsigned int ttl_end_rs); - - /** - * Set the roll_ksk_now of a zone object. -@@ -318,7 +318,7 @@ - * \param[in] roll_ksk_now an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_roll_ksk_now(zone_db_t* zone, unsigned int roll_ksk_now); -+extern int zone_db_set_roll_ksk_now(zone_db_t* zone, unsigned int roll_ksk_now); - - /** - * Set the roll_zsk_now of a zone object. -@@ -326,7 +326,7 @@ - * \param[in] roll_zsk_now an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_roll_zsk_now(zone_db_t* zone, unsigned int roll_zsk_now); -+extern int zone_db_set_roll_zsk_now(zone_db_t* zone, unsigned int roll_zsk_now); - - /** - * Set the roll_csk_now of a zone object. -@@ -334,7 +334,7 @@ - * \param[in] roll_csk_now an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_roll_csk_now(zone_db_t* zone, unsigned int roll_csk_now); -+extern int zone_db_set_roll_csk_now(zone_db_t* zone, unsigned int roll_csk_now); - - /** - * Set the input_adapter_type of a zone object. -@@ -342,7 +342,7 @@ - * \param[in] input_adapter_type_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_input_adapter_type(zone_db_t* zone, const char* input_adapter_type_text); -+extern int zone_db_set_input_adapter_type(zone_db_t* zone, const char* input_adapter_type_text); - - /** - * Set the input_adapter_uri of a zone object. -@@ -350,7 +350,7 @@ - * \param[in] input_adapter_uri_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_input_adapter_uri(zone_db_t* zone, const char* input_adapter_uri_text); -+extern int zone_db_set_input_adapter_uri(zone_db_t* zone, const char* input_adapter_uri_text); - - /** - * Set the output_adapter_type of a zone object. -@@ -358,7 +358,7 @@ - * \param[in] output_adapter_type_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_output_adapter_type(zone_db_t* zone, const char* output_adapter_type_text); -+extern int zone_db_set_output_adapter_type(zone_db_t* zone, const char* output_adapter_type_text); - - /** - * Set the output_adapter_uri of a zone object. -@@ -366,7 +366,7 @@ - * \param[in] output_adapter_uri_text a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_output_adapter_uri(zone_db_t* zone, const char* output_adapter_uri_text); -+extern int zone_db_set_output_adapter_uri(zone_db_t* zone, const char* output_adapter_uri_text); - - /** - * Set the next_ksk_roll of a zone object. -@@ -374,7 +374,7 @@ - * \param[in] next_ksk_roll an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_next_ksk_roll(zone_db_t* zone, unsigned int next_ksk_roll); -+extern int zone_db_set_next_ksk_roll(zone_db_t* zone, unsigned int next_ksk_roll); - - /** - * Set the next_zsk_roll of a zone object. -@@ -382,7 +382,7 @@ - * \param[in] next_zsk_roll an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_next_zsk_roll(zone_db_t* zone, unsigned int next_zsk_roll); -+extern int zone_db_set_next_zsk_roll(zone_db_t* zone, unsigned int next_zsk_roll); - - /** - * Set the next_csk_roll of a zone object. -@@ -390,7 +390,7 @@ - * \param[in] next_csk_roll an unsigned integer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_set_next_csk_roll(zone_db_t* zone, unsigned int next_csk_roll); -+extern int zone_db_set_next_csk_roll(zone_db_t* zone, unsigned int next_csk_roll); - - /** - * Create a clause for policy_id of a zone object and add it to a database clause list. -@@ -401,14 +401,14 @@ - * \param[in] policy_id a db_value_t pointer. - * \return a db_clause_t pointer to the added clause or NULL on error. - */ --db_clause_t* zone_db_policy_id_clause(db_clause_list_t* clause_list, const db_value_t* policy_id); -+extern db_clause_t* zone_db_policy_id_clause(db_clause_list_t* clause_list, const db_value_t* policy_id); - - /** - * Create a zone object in the database. - * \param[in] zone a zone_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_create(zone_db_t* zone); -+extern int zone_db_create(zone_db_t* zone); - - /** - * Get a zone object from the database by a id specified in `id`. -@@ -416,7 +416,7 @@ - * \param[in] id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_get_by_id(zone_db_t* zone, const db_value_t* id); -+extern int zone_db_get_by_id(zone_db_t* zone, const db_value_t* id); - - /** - * Get a zone object from the database by a name specified in `name`. -@@ -424,7 +424,7 @@ - * \param[in] name a character pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_get_by_name(zone_db_t* zone, const char* name); -+extern int zone_db_get_by_name(zone_db_t* zone, const char* name); - - /** - * Get a new zone object from the database by a name specified in `name`. -@@ -432,21 +432,21 @@ - * \param[in] name a character pointer. - * \return a zone_db_t pointer or NULL on error or if it does not exist. - */ --zone_db_t* zone_db_new_get_by_name(const db_connection_t* connection, const char* name); -+extern zone_db_t* zone_db_new_get_by_name(const db_connection_t* connection, const char* name); - - /** - * Update a zone object in the database. - * \param[in] zone a zone_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_update(zone_db_t* zone); -+extern int zone_db_update(zone_db_t* zone); - - /** - * Delete a zone object from the database. - * \param[in] zone a zone_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_delete(zone_db_t* zone); -+extern int zone_db_delete(zone_db_t* zone); - - /** - * Count the number of zone objects in the database, if a selection of -@@ -458,7 +458,7 @@ - * should be counted. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_db_count(zone_db_t* zone, db_clause_list_t* clause_list, size_t* count); -+extern int zone_db_count(zone_db_t* zone, db_clause_list_t* clause_list, size_t* count); - - /** - * A list of zone objects. -@@ -482,14 +482,14 @@ - * \param[in] connection a db_connection_t pointer. - * \return a zone_list_db_t pointer or NULL on error. - */ --zone_list_db_t* zone_list_db_new(const db_connection_t* connection); -+extern zone_list_db_t* zone_list_db_new(const db_connection_t* connection); - - /** - * Create a new zone object list that is a copy of another. - * \param[in] zone_list_db a zone_list_db_t pointer. - * \return a zone_list_db_t pointer or NULL on error. - */ --zone_list_db_t* zone_list_db_new_copy(const zone_list_db_t* zone_copy); -+extern zone_list_db_t* zone_list_db_new_copy(const zone_list_db_t* zone_copy); - - /** - * Specify that objects should be stored within the list as they are fetch, -@@ -497,13 +497,13 @@ - * \param[in] zone_list_db a zone_list_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_list_db_object_store(zone_list_db_t* zone_list_db); -+extern int zone_list_db_object_store(zone_list_db_t* zone_list_db); - - /** - * Delete a zone object list. - * \param[in] zone_list_db a zone_list_db_t pointer. - */ --void zone_list_db_free(zone_list_db_t* zone_list_db); -+extern void zone_list_db_free(zone_list_db_t* zone_list_db); - - /** - * Copy the content of another zone object list. -@@ -511,21 +511,21 @@ - * \param[in] from_zone_list_db a zone_list_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_list_db_copy(zone_list_db_t* zone_list_db, const zone_list_db_t* from_zone_list_db); -+extern int zone_list_db_copy(zone_list_db_t* zone_list_db, const zone_list_db_t* from_zone_list_db); - - /** - * Get all zone objects. - * \param[in] zone_list_db a zone_list_db_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_list_db_get(zone_list_db_t* zone_list_db); -+extern int zone_list_db_get(zone_list_db_t* zone_list_db); - - /** - * Get a new list with all zone objects. - * \param[in] connection a db_connection_t pointer. - * \return a zone_list_db_t pointer or NULL on error. - */ --zone_list_db_t* zone_list_db_new_get(const db_connection_t* connection); -+extern zone_list_db_t* zone_list_db_new_get(const db_connection_t* connection); - - /** - * Get zone objects from the database by a clause list. -@@ -533,7 +533,7 @@ - * \param[in] clause_list a db_clause_list_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_list_db_get_by_clauses(zone_list_db_t* zone_list_db, const db_clause_list_t* clause_list); -+extern int zone_list_db_get_by_clauses(zone_list_db_t* zone_list_db, const db_clause_list_t* clause_list); - - /** - * Get zone objects from the database by a policy_id specified in `policy_id`. -@@ -541,7 +541,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return DB_ERROR_* on failure, otherwise DB_OK. - */ --int zone_list_db_get_by_policy_id(zone_list_db_t* zone_list_db, const db_value_t* policy_id); -+extern int zone_list_db_get_by_policy_id(zone_list_db_t* zone_list_db, const db_value_t* policy_id); - - /** - * Get a new list of zone objects from the database by a policy_id specified in `policy_id`. -@@ -549,7 +549,7 @@ - * \param[in] policy_id a db_value_t pointer. - * \return a zone_list_db_t pointer or NULL on error. - */ --zone_list_db_t* zone_list_db_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); -+extern zone_list_db_t* zone_list_db_new_get_by_policy_id(const db_connection_t* connection, const db_value_t* policy_id); - - /** - * Get the first zone object in a zone object list and reset the -@@ -558,7 +558,7 @@ - * \return a zone_db_t pointer or NULL on error or if there are no - * zone objects in the zone object list. - */ --const zone_db_t* zone_list_db_begin(zone_list_db_t* zone_list_db); -+extern const zone_db_t* zone_list_db_begin(zone_list_db_t* zone_list_db); - - /** - * Get the next zone object in a zone object list. -@@ -568,7 +568,7 @@ - * \return a zone_db_t pointer or NULL on error or if there are no more - * zone objects in the zone object list. - */ --const zone_db_t* zone_list_db_next(zone_list_db_t* zone_list_db); -+extern const zone_db_t* zone_list_db_next(zone_list_db_t* zone_list_db); - - /** - * Get the next zone object in a zone object list. -@@ -578,7 +578,7 @@ - * \return a zone_db_t pointer or NULL on error or if there are no more - * zone objects in the zone object list. - */ --zone_db_t* zone_list_db_get_next(zone_list_db_t* zone_list_db); -+extern zone_db_t* zone_list_db_get_next(zone_list_db_t* zone_list_db); - - /** - * Get the size of a zone object list. -@@ -586,6 +586,6 @@ - * \return a size_t with the size of the list or zero on error, if the list is - * empty or if the backend does not support returning the size. - */ --size_t zone_list_db_size(zone_list_db_t* zone_list_db); -+extern size_t zone_list_db_size(zone_list_db_t* zone_list_db); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/autostart_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/autostart_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/autostart_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/autostart_cmd.h 2020-02-18 23:08:38.114360685 -0500 -@@ -32,6 +32,6 @@ - - #include "daemon/engine.h" - --void autostart(engine_type* engine); -+extern void autostart(engine_type* engine); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/enforce_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/enforce_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/enforce_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/enforce_cmd.h 2020-02-18 23:08:38.114360685 -0500 -@@ -30,6 +30,6 @@ - #ifndef _ENFORCER_ENFORCE_CMD_H_ - #define _ENFORCER_ENFORCE_CMD_H_ - --struct cmd_func_block enforce_funcblock; -+extern struct cmd_func_block enforce_funcblock; - - #endif /* _ENFORCER_ENFORCE_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/enforcer.h opendnssec-2.1.6/enforcer/src/enforcer/enforcer.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/enforcer.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/enforcer.h 2020-02-18 23:08:38.114360685 -0500 -@@ -47,7 +47,7 @@ - * @param[in] keyfactory - * @return time_t Time the function wishes to be called again. - * */ --time_t -+extern time_t - update(engine_type *engine, db_connection_t *dbconn, zone_db_t *zone, policy_t const *policy, time_t now, int *zone_updated); - - #endif /* _ENFORCER_ENFORCER_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/enforce_task.h opendnssec-2.1.6/enforcer/src/enforcer/enforce_task.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/enforce_task.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/enforce_task.h 2020-02-18 23:08:38.115360699 -0500 -@@ -35,19 +35,19 @@ - #include "scheduler/task.h" - #include "db/policy.h" - --task_type *enforce_task(engine_type *engine, char const *owner); -+extern task_type *enforce_task(engine_type *engine, char const *owner); - --time_t enforce_task_perform(task_type* task, char const *owner, void *context, -+extern time_t enforce_task_perform(task_type* task, char const *owner, void *context, - void *dbconn); - - /* Schedule enforce tasks for *now* for zone. */ --void enforce_task_flush_zone(engine_type *engine, char const *zonename); -+extern void enforce_task_flush_zone(engine_type *engine, char const *zonename); - - /* Schedule enforce tasks for *now* for ALL zones of policy. */ --void enforce_task_flush_policy(engine_type *engine, db_connection_t *dbconn, -+extern void enforce_task_flush_policy(engine_type *engine, db_connection_t *dbconn, - policy_t const *policy); - - /* Schedule enforce tasks for *now* for ALL zones. */ --void enforce_task_flush_all(engine_type *engine, db_connection_t *dbconn); -+extern void enforce_task_flush_all(engine_type *engine, db_connection_t *dbconn); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/repositorylist_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/repositorylist_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/repositorylist_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/repositorylist_cmd.h 2020-02-18 23:18:13.218838340 -0500 -@@ -28,6 +28,6 @@ - #ifndef _ENFORCER_REPOSITORYLIST_CMD_H_ - #define _ENFORCER_REPOSITORYLIST_CMD_H_ - --struct cmd_func_block repositorylist_funcblock; -+extern struct cmd_func_block repositorylist_funcblock; - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/update_all_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/update_all_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/update_all_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/update_all_cmd.h 2020-02-18 23:18:15.366865499 -0500 -@@ -30,6 +30,6 @@ - #ifndef UPDATE_ALL_CMD_H_ - #define UPDATE_ALL_CMD_H_ - --struct cmd_func_block update_all_funcblock; -+extern struct cmd_func_block update_all_funcblock; - - #endif /* UPDATE_ALL_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/update_conf_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/update_conf_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/update_conf_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/update_conf_cmd.h 2020-02-18 23:18:18.125900384 -0500 -@@ -29,6 +29,6 @@ - #ifndef UPDATE_CONF_CMD_H_ - #define UPDATE_CONF_CMD_H_ - --struct cmd_func_block update_conf_funcblock; -+extern struct cmd_func_block update_conf_funcblock; - - #endif /* UPDATE_CONF_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/enforcer/update_repositorylist_cmd.h opendnssec-2.1.6/enforcer/src/enforcer/update_repositorylist_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/enforcer/update_repositorylist_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/enforcer/update_repositorylist_cmd.h 2020-02-18 23:18:09.930796767 -0500 -@@ -30,6 +30,6 @@ - #ifndef UPDATE_REPOSITORYLIST_CMD_H_ - #define UPDATE_REPOSITORYLIST_CMD_H_ - --struct cmd_func_block update_repositorylist_funcblock; -+extern struct cmd_func_block update_repositorylist_funcblock; - - #endif /* UPDATE_REPOSITORYLIST_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/hsmkey/backup_hsmkeys_cmd.h opendnssec-2.1.6/enforcer/src/hsmkey/backup_hsmkeys_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/hsmkey/backup_hsmkeys_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/hsmkey/backup_hsmkeys_cmd.h 2020-02-18 23:11:50.156968800 -0500 -@@ -30,6 +30,6 @@ - #ifndef _HSMKEY_BACKUP_CMD_H_ - #define _HSMKEY_BACKUP_CMD_H_ - --struct cmd_func_block backup_funcblock; -+extern struct cmd_func_block backup_funcblock; - - #endif /* _HSMKEY_BACKUP_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/hsmkey/hsm_key_factory.h opendnssec-2.1.6/enforcer/src/hsmkey/hsm_key_factory.h ---- opendnssec-2.1.6-orig/enforcer/src/hsmkey/hsm_key_factory.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/hsmkey/hsm_key_factory.h 2020-02-18 23:08:38.115360699 -0500 -@@ -35,12 +35,12 @@ - - #include - --void hsm_key_factory_deinit(void); -+extern void hsm_key_factory_deinit(void); - /** - * TODO - * \return 0 success, 1 error - */ --int hsm_key_factory_generate(engine_type* engine, -+extern int hsm_key_factory_generate(engine_type* engine, - const db_connection_t* connection, const policy_t* policy, const policy_key_t* policy_key, - time_t duration); - -@@ -55,7 +55,7 @@ - * TODO - * \return 0 success, 1 error - */ --int hsm_key_factory_generate_all(engine_type* engine, -+extern int hsm_key_factory_generate_all(engine_type* engine, - const db_connection_t* connection, time_t duration); - - -@@ -68,7 +68,7 @@ - * if its zero then the duration from conf.xml is taken. - * \return non-zero on error. - */ --int hsm_key_factory_schedule_generate_policy(engine_type* engine, -+extern int hsm_key_factory_schedule_generate_policy(engine_type* engine, - const policy_t* policy_orig, time_t duration); - - /** -@@ -79,7 +79,7 @@ - * if its zero then the duration from conf.xml is taken. - * \return non-zero on error. - */ --int hsm_key_factory_schedule_generate_all(engine_type* engine, time_t duration); -+extern int hsm_key_factory_schedule_generate_all(engine_type* engine, time_t duration); - - /** - * Allocate a private or shared HSM key for the policy key provided. This will -@@ -92,7 +92,7 @@ - * \return an allocated HSM key or NULL on error or if there are no unused keys - * available for allocation right now. - */ --hsm_key_t* hsm_key_factory_get_key(engine_type* engine, -+extern hsm_key_t* hsm_key_factory_get_key(engine_type* engine, - const db_connection_t* connection, const policy_key_t* policy_key, - hsm_key_state_t hsm_key_state); - -@@ -101,7 +101,7 @@ - * \param[in] hsm_key_id a db_value_t pointer with the hsm_key database id. - * \return non-zero on error. - */ --int hsm_key_factory_release_key_id(const db_value_t* hsm_key_id, -+extern int hsm_key_factory_release_key_id(const db_value_t* hsm_key_id, - const db_connection_t* connection); - - /** -@@ -109,7 +109,7 @@ - * \param[in] hsm_key a hsm_key_t pointer with the hsm_key to release. - * \return non-zero on error. - */ --int hsm_key_factory_release_key(hsm_key_t* hsm_key, -+extern int hsm_key_factory_release_key(hsm_key_t* hsm_key, - const db_connection_t* connection); - - #endif /* _HSM_KEY_FACTORY_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/hsmkey/key_generate_cmd.h opendnssec-2.1.6/enforcer/src/hsmkey/key_generate_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/hsmkey/key_generate_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/hsmkey/key_generate_cmd.h 2020-02-18 23:12:13.673288174 -0500 -@@ -29,6 +29,6 @@ - #ifndef HSMKEY_KEY_GENERATE_CMD_H_ - #define HSMKEY_KEY_GENERATE_CMD_H_ - --struct cmd_func_block key_generate_funcblock; -+extern struct cmd_func_block key_generate_funcblock; - - #endif /* HSMKEY_KEY_GENERATE_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/key_purge_cmd.h opendnssec-2.1.6/enforcer/src/keystate/key_purge_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/key_purge_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/key_purge_cmd.h 2020-02-18 23:17:59.806668762 -0500 -@@ -1,7 +1,7 @@ - #ifndef _KEYSTATE_KEY_PURGE_CMD_H_ - #define _KEYSTATE_KEY_PURGE_CMD_H_ - --struct cmd_func_block key_purge_funcblock; -+extern struct cmd_func_block key_purge_funcblock; - - #endif /* _KEYSTATE_KEY_PURGE_CMD_H_ */ - -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/key_purge.h opendnssec-2.1.6/enforcer/src/keystate/key_purge.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/key_purge.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/key_purge.h 2020-02-18 23:08:38.115360699 -0500 -@@ -6,7 +6,7 @@ - #include "db/zone_db.h" - #include "db/policy.h" - --int removeDeadKeysNow(int sockfd, db_connection_t *dbconn, policy_t *policy, zone_db_t *rzone); -+extern int removeDeadKeysNow(int sockfd, db_connection_t *dbconn, policy_t *policy, zone_db_t *rzone); - - #endif - -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_gone_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_gone_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_gone_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_gone_cmd.h 2020-02-18 23:17:54.732604608 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_DS_GONE_CMD_H_ - #define _KEYSTATE_DS_GONE_CMD_H_ - --struct cmd_func_block key_ds_gone_funcblock; -+extern struct cmd_func_block key_ds_gone_funcblock; - - #endif /* _KEYSTATE_DS_GONE_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds.h 2020-02-18 23:08:38.115360699 -0500 -@@ -30,13 +30,13 @@ - - #include "db/key_data.h" - --int -+extern int - change_keys_from_to(db_connection_t *dbconn, int sockfd, - const char *zonename, const hsm_key_t* hsmkey, int keytag, - key_data_ds_at_parent_t state_from, - key_data_ds_at_parent_t state_to, engine_type* engine); - --int run_ds_cmd(int sockfd, const char *cmd, -+extern int run_ds_cmd(int sockfd, const char *cmd, - db_connection_t *dbconn, key_data_ds_at_parent_t state_from, - key_data_ds_at_parent_t state_to, engine_type* engine); - -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_retract_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_retract_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_retract_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_retract_cmd.h 2020-02-18 23:17:52.621577917 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_DS_RETRACT_CMD_H_ - #define _KEYSTATE_DS_RETRACT_CMD_H_ - --struct cmd_func_block key_ds_retract_funcblock; -+extern struct cmd_func_block key_ds_retract_funcblock; - - #endif /* _KEYSTATE_DS_RETRACT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_retract_task.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_retract_task.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_retract_task.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_retract_task.h 2020-02-18 23:08:38.115360699 -0500 -@@ -30,7 +30,7 @@ - #ifndef _KEYSTATE_DS_RETRACT_TASK_H_ - #define _KEYSTATE_DS_RETRACT_TASK_H_ - --task_type * -+extern task_type * - keystate_ds_retract_task(engine_type *engine, char const *owner); - - #endif /*_KEYSTATE_DS_RETRACT_TASK_H_*/ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_seen_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_seen_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_seen_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_seen_cmd.h 2020-02-18 23:17:50.392549734 -0500 -@@ -32,6 +32,6 @@ - - #include "daemon/engine.h" - --struct cmd_func_block key_ds_seen_funcblock; -+extern struct cmd_func_block key_ds_seen_funcblock; - - #endif /* _KEYSTATE_DS_SEEN_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_submit_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_submit_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_submit_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_submit_cmd.h 2020-02-18 23:17:48.185521829 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_DS_SUBMIT_CMD_H_ - #define _KEYSTATE_DS_SUBMIT_CMD_H_ - --struct cmd_func_block key_ds_submit_funcblock; -+extern struct cmd_func_block key_ds_submit_funcblock; - - #endif /* _KEYSTATE_DS_SUBMIT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_submit_task.h opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_submit_task.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_ds_submit_task.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_ds_submit_task.h 2020-02-18 23:08:38.115360699 -0500 -@@ -30,7 +30,7 @@ - #ifndef _KEYSTATE_DS_SUBMIT_TASK_H_ - #define _KEYSTATE_DS_SUBMIT_TASK_H_ - --task_type * -+extern task_type * - keystate_ds_submit_task(engine_type *engine, char const *owner); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_export_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_export_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_export_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_export_cmd.h 2020-02-18 23:16:09.403272877 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_EXPORT_CMD_H_ - #define _KEYSTATE_EXPORT_CMD_H_ - --struct cmd_func_block key_export_funcblock; -+extern struct cmd_func_block key_export_funcblock; - - #endif /* _KEYSTATE_EXPORT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_import_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_import_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_import_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_import_cmd.h 2020-02-18 23:17:42.005443692 -0500 -@@ -28,7 +28,7 @@ - #ifndef _KEYSTATE_IMPORT_CMD_H_ - #define _KEYSTATE_IMPORT_CMD_H_ - --struct cmd_func_block key_import_funcblock; -+extern struct cmd_func_block key_import_funcblock; - - #endif /* _KEYSTATE_IMPORT_CMD_H_ */ - -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_list_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_list_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_list_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_list_cmd.h 2020-02-18 23:16:03.363196509 -0500 -@@ -32,8 +32,8 @@ - - #include "db/key_data.h" - --struct cmd_func_block key_list_funcblock; -+extern struct cmd_func_block key_list_funcblock; - --const char* map_keystate(key_data_t *key); -+extern const char* map_keystate(key_data_t *key); - - #endif /* _KEYSTATE_LIST_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_rollover_cmd.h opendnssec-2.1.6/enforcer/src/keystate/keystate_rollover_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/keystate_rollover_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/keystate_rollover_cmd.h 2020-02-18 23:17:57.082634320 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_ROLLOVER_CMD_H_ - #define _KEYSTATE_ROLLOVER_CMD_H_ - --struct cmd_func_block key_rollover_funcblock; -+extern struct cmd_func_block key_rollover_funcblock; - - #endif /* _KEYSTATE_ROLLOVER_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/rollover_list_cmd.h opendnssec-2.1.6/enforcer/src/keystate/rollover_list_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/rollover_list_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/rollover_list_cmd.h 2020-02-18 23:16:06.639237929 -0500 -@@ -30,6 +30,6 @@ - #ifndef _ROLLOVER_LIST_CMD_H_ - #define _ROLLOVER_LIST_CMD_H_ - --struct cmd_func_block rollover_list_funcblock; -+extern struct cmd_func_block rollover_list_funcblock; - - #endif /* _ROLLOVER_LIST_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zone_add_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zone_add_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zone_add_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zone_add_cmd.h 2020-02-18 23:13:08.797989394 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_ZONE_ADD_CMD_H_ - #define _KEYSTATE_ZONE_ADD_CMD_H_ - --struct cmd_func_block zone_add_funcblock; -+extern struct cmd_func_block zone_add_funcblock; - - #endif /* _KEYSTATE_ZONE_ADD_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zone_del_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zone_del_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zone_del_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zone_del_cmd.h 2020-02-18 23:15:39.850899231 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_ZONE_DEL_CMD_H_ - #define _KEYSTATE_ZONE_DEL_CMD_H_ - --struct cmd_func_block zone_del_funcblock; -+extern struct cmd_func_block zone_del_funcblock; - - #endif /* _KEYSTATE_ZONE_DEL_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zone_list_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zone_list_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zone_list_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zone_list_cmd.h 2020-02-18 23:12:32.216526873 -0500 -@@ -30,6 +30,6 @@ - #ifndef _KEYSTATE_ZONE_LIST_CMD_H_ - #define _KEYSTATE_ZONE_LIST_CMD_H_ - --struct cmd_func_block zone_list_funcblock; -+extern struct cmd_func_block zone_list_funcblock; - - #endif /* _KEYSTATE_ZONE_LIST_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_export_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zonelist_export_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_export_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zonelist_export_cmd.h 2020-02-18 23:18:07.869770709 -0500 -@@ -29,6 +29,6 @@ - #ifndef _KEYSTATE_ZONELIST_EXPORT_CMD_H_ - #define _KEYSTATE_ZONELIST_EXPORT_CMD_H_ - --struct cmd_func_block zonelist_export_funcblock; -+extern struct cmd_func_block zonelist_export_funcblock; - - #endif /* _KEYSTATE_ZONELIST_EXPORT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_export.h opendnssec-2.1.6/enforcer/src/keystate/zonelist_export.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_export.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zonelist_export.h 2020-02-18 23:08:38.115360699 -0500 -@@ -64,6 +64,6 @@ - * \param[in] comment if non-zero include a comment about the zonelist file. - * \return ZONELIST_EXPORT_ERR_* on error otherwise ZONELIST_EXPORT_OK. - */ --int zonelist_export(int sockfd, db_connection_t* connection, const char* filename, int comment); -+extern int zonelist_export(int sockfd, db_connection_t* connection, const char* filename, int comment); - - #endif /* _KEYSTATE_ZONELIST_EXPORT_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_import_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zonelist_import_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_import_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zonelist_import_cmd.h 2020-02-18 23:18:02.925708198 -0500 -@@ -29,6 +29,6 @@ - #ifndef _KEYSTATE_ZONELIST_IMPORT_CMD_H_ - #define _KEYSTATE_ZONELIST_IMPORT_CMD_H_ - --struct cmd_func_block zonelist_import_funcblock; -+extern struct cmd_func_block zonelist_import_funcblock; - - #endif /* _KEYSTATE_ZONELIST_IMPORT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_import.h opendnssec-2.1.6/enforcer/src/keystate/zonelist_import.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_import.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zonelist_import.h 2020-02-18 23:08:38.115360699 -0500 -@@ -68,7 +68,7 @@ - * \return ZONELIST_IMPORT_ERR_* on error otherwise ZONELIST_IMPORT_OK or - * ZONELIST_IMPORT_NO_CHANGE. - */ --int zonelist_import(int sockfd, engine_type* engine, db_connection_t *dbconn, -+extern int zonelist_import(int sockfd, engine_type* engine, db_connection_t *dbconn, - int do_delete, const char* zonelist_path); - - #endif /* _KEYSTATE_ZONELIST_IMPORT_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_update.h opendnssec-2.1.6/enforcer/src/keystate/zonelist_update.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zonelist_update.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zonelist_update.h 2020-02-18 23:08:38.115360699 -0500 -@@ -64,7 +64,7 @@ - * \param[in] comment if non-zero include a comment about the zonelist file. - * \return ZONELIST_UPDATE_ERR_* on error otherwise ZONELIST_UPDATE_OK. - */ --int zonelist_update_add(int sockfd, const char* filename, const zone_db_t* zone, int comment); -+extern int zonelist_update_add(int sockfd, const char* filename, const zone_db_t* zone, int comment); - - /** - * Update a zonelist and remove the supplied zone from it. -@@ -74,6 +74,6 @@ - * \param[in] comment if non-zero include a comment about the zonelist file. - * \return ZONELIST_UPDATE_ERR_* on error otherwise ZONELIST_UPDATE_OK. - */ --int zonelist_update_delete(int sockfd, const char* filename, const zone_db_t* zone, int comment); -+extern int zonelist_update_delete(int sockfd, const char* filename, const zone_db_t* zone, int comment); - - #endif /* _KEYSTATE_ZONELIST_UPDATE_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/keystate/zone_set_policy_cmd.h opendnssec-2.1.6/enforcer/src/keystate/zone_set_policy_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/keystate/zone_set_policy_cmd.h 2020-02-10 12:25:12.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/keystate/zone_set_policy_cmd.h 2020-02-18 23:15:47.325993743 -0500 -@@ -29,6 +29,6 @@ - #ifndef _KEYSTATE_ZONE_SET_POLICY_CMD_H_ - #define _KEYSTATE_ZONE_SET_POLICY_CMD_H_ - --struct cmd_func_block zone_set_policy_funcblock; -+extern struct cmd_func_block zone_set_policy_funcblock; - - #endif /* _KEYSTATE_ZONE_SET_POLICY_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/parser/confparser.h opendnssec-2.1.6/enforcer/src/parser/confparser.h ---- opendnssec-2.1.6-orig/enforcer/src/parser/confparser.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/parser/confparser.h 2020-02-18 23:08:38.115360699 -0500 -@@ -44,7 +44,7 @@ - * \return ods_status status - * - */ --ods_status parse_file_check(const char* cfgfile, const char* rngfile); -+extern ods_status parse_file_check(const char* cfgfile, const char* rngfile); - - /** - * Parse elements from the configuration file. -@@ -54,7 +54,7 @@ - * \return const char* string value - * - */ --const char* parse_conf_string(const char* cfgfile, const char* expr, -+extern const char* parse_conf_string(const char* cfgfile, const char* expr, - int required); - - /** -@@ -66,25 +66,25 @@ - */ - - /** Common */ --const char* parse_conf_policy_filename(const char* cfgfile); --const char* parse_conf_zonelist_filename(const char* cfgfile); --const char* parse_conf_zonefetch_filename(const char* cfgfile); --const char* parse_conf_log_filename(const char* cfgfile); -+extern const char* parse_conf_policy_filename(const char* cfgfile); -+extern const char* parse_conf_zonelist_filename(const char* cfgfile); -+extern const char* parse_conf_zonefetch_filename(const char* cfgfile); -+extern const char* parse_conf_log_filename(const char* cfgfile); - - /** Enforcer specific */ --const char* parse_conf_pid_filename(const char* cfgfile); --const char* parse_conf_delegation_signer_submit_command(const char* cfgfile); --const char* parse_conf_delegation_signer_retract_command(const char* cfgfile); --const char* parse_conf_clisock_filename(const char* cfgfile); --const char* parse_conf_working_dir(const char* cfgfile); --const char* parse_conf_username(const char* cfgfile); --const char* parse_conf_group(const char* cfgfile); --const char* parse_conf_chroot(const char* cfgfile); --const char* parse_conf_datastore(const char* cfgfile); --const char* parse_conf_db_host(const char* cfgfile); --const char* parse_conf_db_username(const char* cfgfile); --const char* parse_conf_db_password(const char* cfgfile); --engineconfig_database_type_t parse_conf_db_type(const char *cfgfile); -+extern const char* parse_conf_pid_filename(const char* cfgfile); -+extern const char* parse_conf_delegation_signer_submit_command(const char* cfgfile); -+extern const char* parse_conf_delegation_signer_retract_command(const char* cfgfile); -+extern const char* parse_conf_clisock_filename(const char* cfgfile); -+extern const char* parse_conf_working_dir(const char* cfgfile); -+extern const char* parse_conf_username(const char* cfgfile); -+extern const char* parse_conf_group(const char* cfgfile); -+extern const char* parse_conf_chroot(const char* cfgfile); -+extern const char* parse_conf_datastore(const char* cfgfile); -+extern const char* parse_conf_db_host(const char* cfgfile); -+extern const char* parse_conf_db_username(const char* cfgfile); -+extern const char* parse_conf_db_password(const char* cfgfile); -+extern engineconfig_database_type_t parse_conf_db_type(const char *cfgfile); - - /** - * Parse elements from the configuration file. -@@ -94,15 +94,15 @@ - */ - - /** Common */ --int parse_conf_use_syslog(const char* cfgfile); --int parse_conf_verbosity(const char* cfgfile); -+extern int parse_conf_use_syslog(const char* cfgfile); -+extern int parse_conf_verbosity(const char* cfgfile); - - /** Enforcer specific */ --int parse_conf_worker_threads(const char* cfgfile); --int parse_conf_manual_keygen(const char* cfgfile); --int parse_conf_db_port(const char *cfgfile); --time_t parse_conf_automatic_keygen_period(const char* cfgfile); --time_t parse_conf_rollover_notification(const char* cfgfile); --hsm_repository_t* parse_conf_repositories(const char* cfgfile); -+extern int parse_conf_worker_threads(const char* cfgfile); -+extern int parse_conf_manual_keygen(const char* cfgfile); -+extern int parse_conf_db_port(const char *cfgfile); -+extern time_t parse_conf_automatic_keygen_period(const char* cfgfile); -+extern time_t parse_conf_rollover_notification(const char* cfgfile); -+extern hsm_repository_t* parse_conf_repositories(const char* cfgfile); - - #endif /* PARSE_CONFPARSER_H */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_export_cmd.h opendnssec-2.1.6/enforcer/src/policy/policy_export_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_export_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_export_cmd.h 2020-02-18 23:10:40.656024915 -0500 -@@ -30,6 +30,6 @@ - #ifndef _POLICY_POLICY_EXPORT_CMD_H_ - #define _POLICY_POLICY_EXPORT_CMD_H_ - --struct cmd_func_block policy_export_funcblock; -+extern struct cmd_func_block policy_export_funcblock; - - #endif /* _POLICY_POLICY_EXPORT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_export.h opendnssec-2.1.6/enforcer/src/policy/policy_export.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_export.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_export.h 2020-02-18 23:08:38.116360712 -0500 -@@ -64,7 +64,7 @@ - * \param[in] filename the filename to write to, if NULL write to stdout. - * \return POLICY_EXPORT_ERR_* on error otherwise POLICY_EXPORT_OK. - */ --int policy_export_all(int sockfd, const db_connection_t* connection, const char* filename); -+extern int policy_export_all(int sockfd, const db_connection_t* connection, const char* filename); - - /** - * Export the policy from the database to XML. -@@ -73,6 +73,6 @@ - * \param[in] filename the filename to write to, if NULL write to stdout. - * \return POLICY_EXPORT_ERR_* on error otherwise POLICY_EXPORT_OK. - */ --int policy_export(int sockfd, const policy_t* policy, const char* filename); -+extern int policy_export(int sockfd, const policy_t* policy, const char* filename); - - #endif /* _POLICY_POLICY_EXPORT_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_import_cmd.h opendnssec-2.1.6/enforcer/src/policy/policy_import_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_import_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_import_cmd.h 2020-02-18 23:11:07.911395068 -0500 -@@ -30,6 +30,6 @@ - #ifndef _POLICY_POLICY_IMPORT_CMD_H_ - #define _POLICY_POLICY_IMPORT_CMD_H_ - --struct cmd_func_block policy_import_funcblock; -+extern struct cmd_func_block policy_import_funcblock; - - #endif /* _POLICY_POLICY_IMPORT_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_import.h opendnssec-2.1.6/enforcer/src/policy/policy_import.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_import.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_import.h 2020-02-18 23:08:38.116360712 -0500 -@@ -62,7 +62,7 @@ - * in the KASP if non-zero. - * \return POLICY_IMPORT_ERR_* on error otherwise POLICY_IMPORT_OK. - */ --int policy_import(int sockfd, engine_type* engine, db_connection_t *dbconn, -+extern int policy_import(int sockfd, engine_type* engine, db_connection_t *dbconn, - int do_delete); - - #endif /* _POLICY_POLICY_IMPORT_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_list_cmd.h opendnssec-2.1.6/enforcer/src/policy/policy_list_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_list_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_list_cmd.h 2020-02-18 23:11:22.168588694 -0500 -@@ -30,6 +30,6 @@ - #ifndef _POLICY_POLICY_LIST_CMD_H_ - #define _POLICY_POLICY_LIST_CMD_H_ - --struct cmd_func_block policy_list_funcblock; -+extern struct cmd_func_block policy_list_funcblock; - - #endif /* _POLICY_POLICY_LIST_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_purge_cmd.h opendnssec-2.1.6/enforcer/src/policy/policy_purge_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_purge_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_purge_cmd.h 2020-02-18 23:10:56.045233914 -0500 -@@ -1,6 +1,6 @@ - #ifndef _POLICY_POLICY_PURGE_CMD_H_ - #define _POLICY_POLICY_PURGE_CMD_H_ - --struct cmd_func_block policy_purge_funcblock; -+extern struct cmd_func_block policy_purge_funcblock; - - #endif /* _POLICY_POLICY_PURGE_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_resalt_cmd.h opendnssec-2.1.6/enforcer/src/policy/policy_resalt_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_resalt_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_resalt_cmd.h 2020-02-18 23:11:35.034763428 -0500 -@@ -30,6 +30,6 @@ - #ifndef _POLICY_POLICY_RESALT_CMD_H_ - #define _POLICY_POLICY_RESALT_CMD_H_ - --struct cmd_func_block resalt_funcblock; -+extern struct cmd_func_block resalt_funcblock; - - #endif /*_POLICY_POLICY_RESALT_CMD_H_*/ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/policy/policy_resalt_task.h opendnssec-2.1.6/enforcer/src/policy/policy_resalt_task.h ---- opendnssec-2.1.6-orig/enforcer/src/policy/policy_resalt_task.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/policy/policy_resalt_task.h 2020-02-18 23:08:38.116360712 -0500 -@@ -33,6 +33,6 @@ - #include "daemon/engine.h" - #include "scheduler/task.h" - --int flush_resalt_task_all(engine_type *engine, db_connection_t *dbconn); -+extern int flush_resalt_task_all(engine_type *engine, db_connection_t *dbconn); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_cmd.h opendnssec-2.1.6/enforcer/src/signconf/signconf_cmd.h ---- opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_cmd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/signconf/signconf_cmd.h 2020-02-18 23:08:38.116360712 -0500 -@@ -30,6 +30,6 @@ - #ifndef _SIGNCONF_SIGNCONF_CMD_H_ - #define _SIGNCONF_SIGNCONF_CMD_H_ - --struct cmd_func_block signconf_funcblock; -+extern struct cmd_func_block signconf_funcblock; - - #endif /* _SIGNCONF_SIGNCONF_CMD_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_task.h opendnssec-2.1.6/enforcer/src/signconf/signconf_task.h ---- opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_task.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/signconf/signconf_task.h 2020-02-18 23:08:38.116360712 -0500 -@@ -33,12 +33,12 @@ - #include "db/db_connection.h" - #include "db/policy.h" - --void signconf_task_flush_zone(engine_type *engine, db_connection_t *dbconn, -+extern void signconf_task_flush_zone(engine_type *engine, db_connection_t *dbconn, - const char* zonename); - --void signconf_task_flush_policy(engine_type *engine, db_connection_t *dbconn, -+extern void signconf_task_flush_policy(engine_type *engine, db_connection_t *dbconn, - policy_t const *policy); - --void signconf_task_flush_all(engine_type *engine, db_connection_t *dbconn); -+extern void signconf_task_flush_all(engine_type *engine, db_connection_t *dbconn); - - #endif -diff -Naur opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_xml.h opendnssec-2.1.6/enforcer/src/signconf/signconf_xml.h ---- opendnssec-2.1.6-orig/enforcer/src/signconf/signconf_xml.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/signconf/signconf_xml.h 2020-02-18 23:08:38.116360712 -0500 -@@ -72,7 +72,7 @@ - * \return SIGNCONF_EXPORT_ERR_* on error, otherwise SIGNCONF_EXPORT_OK or - * SIGNCONF_EXPORT_NO_CHANGE. - */ --int signconf_export_all(int sockfd, const db_connection_t* connection, int force); -+extern int signconf_export_all(int sockfd, const db_connection_t* connection, int force); - - /** - * Export the signconf XML for zone. -@@ -81,7 +81,7 @@ - * \return SIGNCONF_EXPORT_ERR_* on error, otherwise SIGNCONF_EXPORT_OK or - * SIGNCONF_EXPORT_NO_CHANGE. - */ --int -+extern int - signconf_export_zone(char const *zonename, db_connection_t* dbconn); - - /** -@@ -94,6 +94,6 @@ - * \return SIGNCONF_EXPORT_ERR_* on error, otherwise SIGNCONF_EXPORT_OK or - * SIGNCONF_EXPORT_NO_CHANGE. - */ --int signconf_export_policy(int sockfd, const db_connection_t* connection, const policy_t* policy, int force); -+extern int signconf_export_policy(int sockfd, const db_connection_t* connection, const policy_t* policy, int force); - - #endif /* SIGNCONF_SIGNCONF_H_ */ -diff -Naur opendnssec-2.1.6-orig/enforcer/src/utils/kc_helper.h opendnssec-2.1.6/enforcer/src/utils/kc_helper.h ---- opendnssec-2.1.6-orig/enforcer/src/utils/kc_helper.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/enforcer/src/utils/kc_helper.h 2020-02-18 23:08:38.116360712 -0500 -@@ -45,44 +45,44 @@ - char *TokenLabel; - } KC_REPO; - --int check_conf(const char *conf, char **kasp, char **zonelist, -+extern int check_conf(const char *conf, char **kasp, char **zonelist, - char ***repo_listout, int *repo_countout, int verbose); --int check_kasp(const char *kasp, char **repo_list, int repo_count, int verbose, -+extern int check_kasp(const char *kasp, char **repo_list, int repo_count, int verbose, - char ***policy_names_out, int *policy_count_out); --int check_zonelist(const char *zonelist, int verbose, char **policy_names, -+extern int check_zonelist(const char *zonelist, int verbose, char **policy_names, - int policy_count); - --void log_init(int facility, const char *program_name); --void log_switch(int facility, const char *program_name); --void dual_log(const char *format, ...) -+extern void log_init(int facility, const char *program_name); -+extern void log_switch(int facility, const char *program_name); -+extern void dual_log(const char *format, ...) - #ifdef HAVE___ATTRIBUTE__ - __attribute__ ((format (printf, 1, 2))) - #endif - ; - - --int check_rng(const char *filename, const char *rngfilename, int verbose); -+extern int check_rng(const char *filename, const char *rngfilename, int verbose); - --int check_file(const char *filename, const char *log_string); --int check_file_from_xpath(xmlXPathContextPtr xpath_ctx, const char *log_string, const xmlChar *file_xexpr); -+extern int check_file(const char *filename, const char *log_string); -+extern int check_file_from_xpath(xmlXPathContextPtr xpath_ctx, const char *log_string, const xmlChar *file_xexpr); - --int check_path(const char *pathname, const char *log_string); --int check_path_from_xpath(xmlXPathContextPtr xpath_ctx, const char *log_string, const xmlChar *path_xexpr); -+extern int check_path(const char *pathname, const char *log_string); -+extern int check_path_from_xpath(xmlXPathContextPtr xpath_ctx, const char *log_string, const xmlChar *path_xexpr); - --int check_user_group(xmlXPathContextPtr xpath_ctx, const xmlChar *user_xexpr, const xmlChar *group_xexpr); -+extern int check_user_group(xmlXPathContextPtr xpath_ctx, const xmlChar *user_xexpr, const xmlChar *group_xexpr); - --int check_time_def(const char *time_expr, const char *location, const char *field, const char *filename, int* interval); --int check_time_def_from_xpath(xmlXPathContextPtr xpath_ctx, const xmlChar *time_xexpr, const char *location, const char *field, const char *filename); -+extern int check_time_def(const char *time_expr, const char *location, const char *field, const char *filename, int* interval); -+extern int check_time_def_from_xpath(xmlXPathContextPtr xpath_ctx, const xmlChar *time_xexpr, const char *location, const char *field, const char *filename); - - /* if repo_list NULL, will skip the check to see all repositories in kasp are available in conf */ --int check_policy(xmlNode *curNode, const char *policy_name, char **repo_list, int repo_count, const char *kasp); -+extern int check_policy(xmlNode *curNode, const char *policy_name, char **repo_list, int repo_count, const char *kasp); - --int DtXMLIntervalSeconds(const char* text, int* interval); --int StrStrtoi(const char* string, int* value); --int StrStrtol(const char* string, long* value); --char* StrStrdup(const char* string); --void StrTrimR(char *text); --char* StrTrimL(char* text); --void* MemCalloc(size_t nmemb, size_t size); -+extern int DtXMLIntervalSeconds(const char* text, int* interval); -+extern int StrStrtoi(const char* string, int* value); -+extern int StrStrtol(const char* string, long* value); -+extern char* StrStrdup(const char* string); -+extern void StrTrimR(char *text); -+extern char* StrTrimL(char* text); -+extern void* MemCalloc(size_t nmemb, size_t size); - - #endif /* KC_HELPER_H */ -diff -Naur opendnssec-2.1.6-orig/libhsm/src/lib/libhsmdns.h opendnssec-2.1.6/libhsm/src/lib/libhsmdns.h ---- opendnssec-2.1.6-orig/libhsm/src/lib/libhsmdns.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/libhsm/src/lib/libhsmdns.h 2020-02-18 23:08:38.116360712 -0500 -@@ -50,7 +50,7 @@ - /*! - * Returns an allocated hsm_sign_params_t with some defaults - */ --hsm_sign_params_t * hsm_sign_params_new(void); -+extern hsm_sign_params_t * hsm_sign_params_new(void); - - - /*! -@@ -61,7 +61,7 @@ - - \param params The signer parameters to free - */ --void -+extern void - hsm_sign_params_free(hsm_sign_params_t *params); - - -@@ -74,7 +74,7 @@ - \param key Key pair used to sign - \return ldns_rr* Signed RRset - */ --ldns_rr* -+extern ldns_rr* - hsm_sign_rrset(hsm_ctx_t *ctx, - const ldns_rr_list* rrset, - const libhsm_key_t *key, -@@ -90,7 +90,7 @@ - \param sign_params the signing parameters (flags, algorithm, etc) - \return ldns_rr* - */ --ldns_rr* -+extern ldns_rr* - hsm_get_dnskey(hsm_ctx_t *ctx, - const libhsm_key_t *key, - const hsm_sign_params_t *sign_params); -@@ -103,6 +103,6 @@ - * @param[out] keytag: the calculated keytag - * return: non-zero in case of failure - */ --int hsm_keytag(const char* loc, int alg, int ksk, uint16_t* keytag); -+extern int hsm_keytag(const char* loc, int alg, int ksk, uint16_t* keytag); - - #endif /* HSMDNS_H */ -diff -Naur opendnssec-2.1.6-orig/libhsm/src/lib/libhsm.h opendnssec-2.1.6/libhsm/src/lib/libhsm.h ---- opendnssec-2.1.6-orig/libhsm/src/lib/libhsm.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/libhsm/src/lib/libhsm.h 2020-02-18 23:08:38.117360726 -0500 -@@ -158,7 +158,7 @@ - \param action action for which the error occured - \param message error message format string - */ --void -+extern void - hsm_ctx_set_error(hsm_ctx_t *ctx, int error, const char *action, - const char *message, ...) - #ifdef HAVE___ATTRIBUTE__ -@@ -181,7 +181,7 @@ - function that takes a context can be passed NULL, in which case the - global context will be used) and log into each HSM. - */ --int -+extern int - hsm_open2(hsm_repository_t* rlist, - char *(pin_callback)(unsigned int, const char *, unsigned int)); - -@@ -195,7 +195,7 @@ - \param use_pubkey Whether to store the public key in the HSM. - \return The created repository. - */ --hsm_repository_t * -+extern hsm_repository_t * - hsm_repository_new(char* name, char* module, char* tokenlabel, char* pin, - uint8_t use_pubkey, uint8_t allowextract, uint8_t require_backup); - -@@ -203,7 +203,7 @@ - - \param r Repository list. - */ --void -+extern void - hsm_repository_free(hsm_repository_t* r); - - /*! Function that queries for a PIN, can be used as callback -@@ -215,7 +215,7 @@ - \param mode The type of mode the function should run in. - \return The string the user enters - */ --char * -+extern char * - hsm_prompt_pin(unsigned int id, const char *repository, unsigned int mode); - - -@@ -227,7 +227,7 @@ - \param mode The type of mode the function should run in. - \return The string the user enters - */ --char * -+extern char * - hsm_check_pin(unsigned int id, const char *repository, unsigned int mode); - - -@@ -237,7 +237,7 @@ - semaphore. Any authenticated process will still be able to interact - with the HSM. - */ --int -+extern int - hsm_logout_pin(void); - - -@@ -247,7 +247,7 @@ - This cleans up all data for libhsm, and should be the last function - called. - */ --void -+extern void - hsm_close(void); - - -@@ -256,7 +256,7 @@ - Creates a new session for each attached HSM. The returned hsm_ctx_t * - can be freed with hsm_destroy_context() - */ --hsm_ctx_t * -+extern hsm_ctx_t * - hsm_create_context(void); - - -@@ -268,7 +268,7 @@ - \param context HSM context - \return 0 if successful, !0 if failed - */ --int -+extern int - hsm_check_context(); - - -@@ -278,10 +278,10 @@ - - Also destroys any associated sessions. - */ --void -+extern void - hsm_destroy_context(hsm_ctx_t *context); - --void -+extern void - libhsm_key_free(libhsm_key_t *key); - - /*! List all known keys in all attached HSMs -@@ -296,7 +296,7 @@ - \param context HSM context - \param count location to store the number of keys found - */ --libhsm_key_t ** -+extern libhsm_key_t ** - hsm_list_keys(hsm_ctx_t *context, size_t *count); - - -@@ -313,7 +313,7 @@ - \param count location to store the number of keys found - \param repository repository to list the keys in - */ --libhsm_key_t ** -+extern libhsm_key_t ** - hsm_list_keys_repository(hsm_ctx_t *context, - size_t *count, - const char *repository); -@@ -329,7 +329,7 @@ - string of hex characters) - \return key identifier or NULL if not found (or invalid input) - */ --libhsm_key_t * -+extern libhsm_key_t * - hsm_find_key_by_id(hsm_ctx_t *context, - const char *id); - -@@ -346,7 +346,7 @@ - \param keysize Size of RSA key - \return return key identifier or NULL if key generation failed - */ --libhsm_key_t * -+extern libhsm_key_t * - hsm_generate_rsa_key(hsm_ctx_t *context, - const char *repository, - unsigned long keysize); -@@ -363,7 +363,7 @@ - \param keysize Size of DSA key - \return return key identifier or NULL if key generation failed - */ --libhsm_key_t * -+extern libhsm_key_t * - hsm_generate_dsa_key(hsm_ctx_t *context, - const char *repository, - unsigned long keysize); -@@ -379,7 +379,7 @@ - \param repository repository in where to create the key - \return return key identifier or NULL if key generation failed - */ --libhsm_key_t * -+extern libhsm_key_t * - hsm_generate_gost_key(hsm_ctx_t *context, - const char *repository); - -@@ -395,7 +395,7 @@ - \param curve which curve to use - \return return key identifier or NULL if key generation failed - */ --libhsm_key_t * -+extern libhsm_key_t * - hsm_generate_ecdsa_key(hsm_ctx_t *context, - const char *repository, - const char *curve); -@@ -410,7 +410,7 @@ - \param key Key pair to be removed - \return 0 if successful, !0 if failed - */ --int -+extern int - hsm_remove_key(hsm_ctx_t *context, libhsm_key_t *key); - - -@@ -420,7 +420,7 @@ - \param key_list The array of keys to free - \param count The number of keys in the array - */ --void -+extern void - libhsm_key_list_free(libhsm_key_t **key_list, size_t count); - - -@@ -432,7 +432,7 @@ - \param key Key pair to get the ID from - \return id of key pair - */ --char * -+extern char * - hsm_get_key_id(hsm_ctx_t *context, - const libhsm_key_t *key); - -@@ -446,7 +446,7 @@ - \param key Key pair to get information about - \return key information - */ --libhsm_key_info_t * -+extern libhsm_key_info_t * - hsm_get_key_info(hsm_ctx_t *context, - const libhsm_key_t *key); - -@@ -455,7 +455,7 @@ - - \param key_info The structure to free - */ --void -+extern void - libhsm_key_info_free(libhsm_key_info_t *key_info); - - /*! Fill a buffer with random data from any attached HSM -@@ -466,7 +466,7 @@ - \return 0 if successful, !0 if failed - - */ --int -+extern int - hsm_random_buffer(hsm_ctx_t *ctx, - unsigned char *buffer, - unsigned long length); -@@ -477,7 +477,7 @@ - \return 32-bit random number, or 0 if no HSM with a random generator is - attached - */ --uint32_t -+extern uint32_t - hsm_random32(hsm_ctx_t *ctx); - - -@@ -486,7 +486,7 @@ - \return 64-bit random number, or 0 if no HSM with a random generator is - attached - */ --uint64_t -+extern uint64_t - hsm_random64(hsm_ctx_t *ctx); - - -@@ -506,7 +506,7 @@ - \param config optional configuration - \return 0 on success, -1 on error - */ --int -+extern int - hsm_attach(const char *repository, - const char *token_name, - const char *path, -@@ -518,7 +518,7 @@ - \param token_name The name of the token - \return 1 if the token is attached, 0 if not found - */ --int -+extern int - hsm_token_attached(hsm_ctx_t *ctx, - const char *repository); - -@@ -530,15 +530,15 @@ - \return error message string - */ - --char * -+extern char * - hsm_get_error(hsm_ctx_t *gctx); - - /* a few debug functions for applications */ --void hsm_print_session(hsm_session_t *session); --void hsm_print_ctx(hsm_ctx_t *ctx); --void hsm_print_key(hsm_ctx_t *ctx, libhsm_key_t *key); --void hsm_print_error(hsm_ctx_t *ctx); --void hsm_print_tokeninfo(hsm_ctx_t *ctx); -+extern void hsm_print_session(hsm_session_t *session); -+extern void hsm_print_ctx(hsm_ctx_t *ctx); -+extern void hsm_print_key(hsm_ctx_t *ctx, libhsm_key_t *key); -+extern void hsm_print_error(hsm_ctx_t *ctx); -+extern void hsm_print_tokeninfo(hsm_ctx_t *ctx); - - /* implementation of a key cache per context, needs changing see - * OPENDNSSEC-799. -diff -Naur opendnssec-2.1.6-orig/signer/src/adapter/adapi.h opendnssec-2.1.6/signer/src/adapter/adapi.h ---- opendnssec-2.1.6-orig/signer/src/adapter/adapi.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/adapter/adapi.h 2020-02-18 23:08:38.117360726 -0500 -@@ -44,7 +44,7 @@ - * \return uint32_t inbound serial - * - */ --uint32_t adapi_get_serial(zone_type* zone); -+extern uint32_t adapi_get_serial(zone_type* zone); - - /** - * Set the inbound serial. -@@ -52,7 +52,7 @@ - * \param[in] serial inbound serial - * - */ --void adapi_set_serial(zone_type* zone, uint32_t serial); -+extern void adapi_set_serial(zone_type* zone, uint32_t serial); - - /** - * Get origin. -@@ -60,7 +60,7 @@ - * \return ldns_rdf* origin - * - */ --ldns_rdf* adapi_get_origin(zone_type* zone); -+extern ldns_rdf* adapi_get_origin(zone_type* zone); - - /** - * Get ttl. -@@ -68,7 +68,7 @@ - * \return uint32_t ttl - * - */ --uint32_t adapi_get_ttl(zone_type* zone); -+extern uint32_t adapi_get_ttl(zone_type* zone); - - /* - * Do full zone transaction. -@@ -76,7 +76,7 @@ - * \param[in] more_coming more transactions are possible - * - */ --void adapi_trans_full(zone_type* zone, unsigned more_coming); -+extern void adapi_trans_full(zone_type* zone, unsigned more_coming); - - /* - * Do incremental zone transaction. -@@ -84,7 +84,7 @@ - * \param[in] more_coming more transactions are possible - * - */ --void adapi_trans_diff(zone_type* zone, unsigned more_coming); -+extern void adapi_trans_diff(zone_type* zone, unsigned more_coming); - - /** - * Add RR. -@@ -94,7 +94,7 @@ - * \return ods_status status - * - */ --ods_status adapi_add_rr(zone_type* zone, ldns_rr* rr, int backup); -+extern ods_status adapi_add_rr(zone_type* zone, ldns_rr* rr, int backup); - - /** - * Delete RR. -@@ -104,7 +104,7 @@ - * \return ods_status status - * - */ --ods_status adapi_del_rr(zone_type* zone, ldns_rr* rr, int backup); -+extern ods_status adapi_del_rr(zone_type* zone, ldns_rr* rr, int backup); - - /** - * Print zonefile. -@@ -113,7 +113,7 @@ - * \return ods_status status - * - */ --ods_status adapi_printzone(FILE* fd, zone_type* zone); -+extern ods_status adapi_printzone(FILE* fd, zone_type* zone); - - /** - * Print axfr. -@@ -122,7 +122,7 @@ - * \return ods_status status - * - */ --ods_status adapi_printaxfr(FILE* fd, zone_type* zone); -+extern ods_status adapi_printaxfr(FILE* fd, zone_type* zone); - - /** - * Print ixfr. -@@ -131,6 +131,6 @@ - * \return ods_status status - * - */ --ods_status adapi_printixfr(FILE* fd, zone_type* zone); -+extern ods_status adapi_printixfr(FILE* fd, zone_type* zone); - - #endif /* ADAPTER_ADAPI_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/adapter/adapter.h opendnssec-2.1.6/signer/src/adapter/adapter.h ---- opendnssec-2.1.6-orig/signer/src/adapter/adapter.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/adapter/adapter.h 2020-02-18 23:08:38.117360726 -0500 -@@ -71,7 +71,7 @@ - * \return adapter_type* created adapter - * - */ --adapter_type* adapter_create(const char* str, adapter_mode type, unsigned in); -+extern adapter_type* adapter_create(const char* str, adapter_mode type, unsigned in); - - /** - * Load configuration. -@@ -79,7 +79,7 @@ - * \return ods_status status - * - */ --ods_status adapter_load_config(adapter_type* adapter); -+extern ods_status adapter_load_config(adapter_type* adapter); - - /** - * Compare adapters. -@@ -88,7 +88,7 @@ - * \return int 0 on equal, -1 if a1 < a2, 1 if a1 > a2 - * - */ --int adapter_compare(adapter_type* a1, adapter_type* a2); -+extern int adapter_compare(adapter_type* a1, adapter_type* a2); - - /** - * Read zone from input adapter. -@@ -96,7 +96,7 @@ - * \return ods_status status - * - */ --ods_status adapter_read(zone_type* zone); -+extern ods_status adapter_read(zone_type* zone); - - /** - * Write zone to output adapter. -@@ -104,13 +104,13 @@ - * \return ods_status status - * - */ --ods_status adapter_write(zone_type* zone); -+extern ods_status adapter_write(zone_type* zone); - - /** - * Clean up adapter. - * \param[in] adapter adapter to cleanup - * - */ --void adapter_cleanup(adapter_type* adapter); -+extern void adapter_cleanup(adapter_type* adapter); - - #endif /* ADAPTER_ADAPTER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/adapter/addns.h opendnssec-2.1.6/signer/src/adapter/addns.h ---- opendnssec-2.1.6-orig/signer/src/adapter/addns.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/adapter/addns.h 2020-02-18 23:08:38.117360726 -0500 -@@ -70,14 +70,14 @@ - * \return dnsin_type* DNS input adapter - * - */ --dnsin_type* dnsin_create(void); -+extern dnsin_type* dnsin_create(void); - - /** - * Create DNS output adapter. - * \return dnsout_type* DNS output adapter - * - */ --dnsout_type* dnsout_create(void); -+extern dnsout_type* dnsout_create(void); - - /** - * Update DNS input adapter. -@@ -87,7 +87,7 @@ - * \return ods_status status - * - */ --ods_status dnsin_update(dnsin_type** addns, const char* filename, -+extern ods_status dnsin_update(dnsin_type** addns, const char* filename, - time_t* last_mod); - - /** -@@ -98,7 +98,7 @@ - * \return ods_status status - * - */ --ods_status dnsout_update(dnsout_type** addns, const char* filename, -+extern ods_status dnsout_update(dnsout_type** addns, const char* filename, - time_t* last_mod); - - /** -@@ -113,7 +113,7 @@ - * \return ldns_rr* RR - * - */ --ldns_rr* addns_read_rr(FILE* fd, char* line, ldns_rdf** orig, ldns_rdf** prev, -+extern ldns_rr* addns_read_rr(FILE* fd, char* line, ldns_rdf** orig, ldns_rdf** prev, - uint32_t* ttl, ldns_status* status, unsigned int* l); - - -@@ -123,7 +123,7 @@ - * \return ods_status status - * - */ --ods_status addns_read(void* zone); -+extern ods_status addns_read(void* zone); - - /** - * Write zone to DNS output adapter. -@@ -131,20 +131,20 @@ - * \return ods_status status - * - */ --ods_status addns_write(void* zone); -+extern ods_status addns_write(void* zone); - - /** - * Clean up DNS input adapter. - * \param[in] addns DNS input adapter - * - */ --void dnsin_cleanup(dnsin_type* addns); -+extern void dnsin_cleanup(dnsin_type* addns); - - /** - * Clean up DNS output adapter. - * \param[in] addns DNS output adapter - * - */ --void dnsout_cleanup(dnsout_type* addns); -+extern void dnsout_cleanup(dnsout_type* addns); - - #endif /* ADAPTER_ADDNS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/adapter/adfile.h opendnssec-2.1.6/signer/src/adapter/adfile.h ---- opendnssec-2.1.6-orig/signer/src/adapter/adfile.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/adapter/adfile.h 2020-02-18 23:08:38.117360726 -0500 -@@ -49,7 +49,7 @@ - * \return ods_status status - * - */ --ods_status adfile_read(void* zone); -+extern ods_status adfile_read(void* zone); - - /** - * Write zone to output file adapter. -@@ -58,6 +58,6 @@ - * \return ods_status status - * - */ --ods_status adfile_write(void* zone, const char* filename); -+extern ods_status adfile_write(void* zone, const char* filename); - - #endif /* ADAPTER_ADFILE_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/adapter/adutil.h opendnssec-2.1.6/signer/src/adapter/adutil.h ---- opendnssec-2.1.6-orig/signer/src/adapter/adutil.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/adapter/adutil.h 2020-02-18 23:08:38.117360726 -0500 -@@ -48,7 +48,7 @@ - * \return int number of characters read - * - */ --int adutil_readline_frm_file(FILE* fd, char* line, unsigned int* l, -+extern int adutil_readline_frm_file(FILE* fd, char* line, unsigned int* l, - int keep_comments); - - /* -@@ -57,7 +57,7 @@ - * \param[out] line_len maintain line length - * - */ --void adutil_rtrim_line(char* line, int* line_len); -+extern void adutil_rtrim_line(char* line, int* line_len); - - /** - * Check for white space. -@@ -65,6 +65,6 @@ - * \param[in] line_len line length - * - */ --int adutil_whitespace_line(char* line, int line_len); -+extern int adutil_whitespace_line(char* line, int line_len); - - #endif /* ADAPTER_ADUTIL_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/cfg.h opendnssec-2.1.6/signer/src/daemon/cfg.h ---- opendnssec-2.1.6-orig/signer/src/daemon/cfg.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/cfg.h 2020-02-18 23:08:38.117360726 -0500 -@@ -69,7 +69,7 @@ - * \return engineconfig_type* engine configuration - * - */ --engineconfig_type* -+extern engineconfig_type* - engine_config(const char* cfgfile, int cmdline_verbosity); - - /** -@@ -80,7 +80,7 @@ - * else: error in configuration settings - * - */ --ods_status engine_config_check(engineconfig_type* config); -+extern ods_status engine_config_check(engineconfig_type* config); - - /** - * Print engine configuration. -@@ -88,13 +88,13 @@ - * \param[in] config engine configuration - * - */ --void engine_config_print(FILE* out, engineconfig_type* config); -+extern void engine_config_print(FILE* out, engineconfig_type* config); - - /** - * Clean up config. - * \param[in] config engine configuration - * - */ --void engine_config_cleanup(engineconfig_type* config); -+extern void engine_config_cleanup(engineconfig_type* config); - - #endif /* DAEMON_CONFIG_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/dnshandler.h opendnssec-2.1.6/signer/src/daemon/dnshandler.h ---- opendnssec-2.1.6-orig/signer/src/daemon/dnshandler.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/dnshandler.h 2020-02-18 23:08:38.117360726 -0500 -@@ -67,7 +67,7 @@ - * \return dnshandler_type* created dns handler - * - */ --dnshandler_type* dnshandler_create(listener_type* interfaces); -+extern dnshandler_type* dnshandler_create(listener_type* interfaces); - - /** - * Start dns handler listener. -@@ -75,21 +75,21 @@ - * \return ods_status status - * - */ --ods_status dnshandler_listen(dnshandler_type* dnshandler); -+extern ods_status dnshandler_listen(dnshandler_type* dnshandler); - - /** - * Start dns handler. - * \param[in] dnshandler_type* dns handler - * - */ --void dnshandler_start(dnshandler_type* dnshandler); -+extern void dnshandler_start(dnshandler_type* dnshandler); - - /** - * Signal dns handler. - * \param[in] dnshandler_type* dns handler - * - */ --void dnshandler_signal(dnshandler_type* dnshandler); -+extern void dnshandler_signal(dnshandler_type* dnshandler); - - /** - * Forward notify to zone transfer handler. -@@ -98,7 +98,7 @@ - * \param[in] len packet length - * - */ --void dnshandler_fwd_notify(dnshandler_type* dnshandler, -+extern void dnshandler_fwd_notify(dnshandler_type* dnshandler, - uint8_t* pkt, size_t len); - - /** -@@ -106,6 +106,6 @@ - * \param[in] dnshandler_type* dns handler - * - */ --void dnshandler_cleanup(dnshandler_type* dnshandler); -+extern void dnshandler_cleanup(dnshandler_type* dnshandler); - - #endif /* DAEMON_DNSHANDLER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/engine.h opendnssec-2.1.6/signer/src/daemon/engine.h ---- opendnssec-2.1.6-orig/signer/src/daemon/engine.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/engine.h 2020-02-18 23:08:38.117360726 -0500 -@@ -82,7 +82,7 @@ - * \return 0 if successful, 1 on error - * - */ --int engine_start(const char* cfgfile, int cmdline_verbosity, -+extern int engine_start(const char* cfgfile, int cmdline_verbosity, - int daemonize, int info); - - /** -@@ -90,7 +90,7 @@ - * \param[in] engine engine - * - */ --void engine_wakeup_workers(engine_type* engine); -+extern void engine_wakeup_workers(engine_type* engine); - - /** - * Update zones. -@@ -98,13 +98,13 @@ - * \param[in] zl_changed whether the zonelist has changed or not - * - */ --void engine_update_zones(engine_type* engine, ods_status zl_changed); -+extern void engine_update_zones(engine_type* engine, ods_status zl_changed); - - /** - * Clean up engine. - * \param[in] engine engine - * - */ --void engine_cleanup(engine_type* engine); -+extern void engine_cleanup(engine_type* engine); - - #endif /* DAEMON_ENGINE_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/signercommands.h opendnssec-2.1.6/signer/src/daemon/signercommands.h ---- opendnssec-2.1.6-orig/signer/src/daemon/signercommands.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/signercommands.h 2020-02-19 17:04:19.583845991 -0500 -@@ -35,7 +35,7 @@ - #include "config.h" - #include "cmdhandler.h" - --struct cmd_func_block** signercommands; -+extern struct cmd_func_block** signercommands; - - extern engine_type* getglobalcontext(cmdhandler_ctx_type*); - -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/signertasks.h opendnssec-2.1.6/signer/src/daemon/signertasks.h ---- opendnssec-2.1.6-orig/signer/src/daemon/signertasks.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/signertasks.h 2020-02-18 23:08:38.118360739 -0500 -@@ -42,14 +42,14 @@ - time_t clock_in; - }; - --void drudge(worker_type* worker); --void task_schedule_easy(const char* zonename, task_id class, task_id type, time_t(*fn)(task_type*,const char*,void*,void*), void*, time_t time); -+extern void drudge(worker_type* worker); -+extern void task_schedule_easy(const char* zonename, task_id class, task_id type, time_t(*fn)(task_type*,const char*,void*,void*), void*, time_t time); - --time_t do_readsignconf(task_type* task, const char* zonename, void* zonearg, void *contextarg); --time_t do_forcereadsignconf(task_type* task, const char* zonename, void* zonearg, void *contextarg); --time_t do_signzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); --time_t do_readzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); --time_t do_forcereadzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); --time_t do_writezone(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_readsignconf(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_forcereadsignconf(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_signzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_readzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_forcereadzone(task_type* task, const char* zonename, void* zonearg, void *contextarg); -+extern time_t do_writezone(task_type* task, const char* zonename, void* zonearg, void *contextarg); - - #endif /* SIGNERTASKS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/daemon/xfrhandler.h opendnssec-2.1.6/signer/src/daemon/xfrhandler.h ---- opendnssec-2.1.6-orig/signer/src/daemon/xfrhandler.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/daemon/xfrhandler.h 2020-02-18 23:08:38.118360739 -0500 -@@ -79,14 +79,14 @@ - * \return xfrhandler_type* created zoned transfer handler - * - */ --xfrhandler_type* xfrhandler_create(void); -+extern xfrhandler_type* xfrhandler_create(void); - - /** - * Start zone transfer handler. - * \param[in] xfrhandler_type* zone transfer handler - * - */ --void xfrhandler_start(xfrhandler_type* xfrhandler); -+extern void xfrhandler_start(xfrhandler_type* xfrhandler); - - /** - * Get current time from the zone transfer handler. -@@ -94,20 +94,20 @@ - * \return time_t current time - * - */ --time_t xfrhandler_time(xfrhandler_type* xfrhandler); -+extern time_t xfrhandler_time(xfrhandler_type* xfrhandler); - - /** - * Signal zone transfer handler. - * \param[in] xfrhandler_type* zone transfer handler - * - */ --void xfrhandler_signal(xfrhandler_type* xfrhandler); -+extern void xfrhandler_signal(xfrhandler_type* xfrhandler); - - /** - * Cleanup zone transfer handler. - * \param[in] xfrhandler_type* zone transfer handler - * - */ --void xfrhandler_cleanup(xfrhandler_type* xfrhandler); -+extern void xfrhandler_cleanup(xfrhandler_type* xfrhandler); - - #endif /* DAEMON_XFRHANDLER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/hsm.h opendnssec-2.1.6/signer/src/hsm.h ---- opendnssec-2.1.6-orig/signer/src/hsm.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/hsm.h 2020-02-18 23:08:38.118360739 -0500 -@@ -51,7 +51,7 @@ - * \return ods_status status - * - */ --ods_status lhsm_get_key(hsm_ctx_t* ctx, ldns_rdf* owner, key_type* key_id, int skip_hsm_access); -+extern ods_status lhsm_get_key(hsm_ctx_t* ctx, ldns_rdf* owner, key_type* key_id, int skip_hsm_access); - - /** - * Get RRSIG from one of the HSMs, given a RRset and a key. -@@ -64,7 +64,7 @@ - * \return ldns_rr* RRSIG record - * - */ --ldns_rr* lhsm_sign(hsm_ctx_t* ctx, ldns_rr_list* rrset, key_type* key_id, -+extern ldns_rr* lhsm_sign(hsm_ctx_t* ctx, ldns_rr_list* rrset, key_type* key_id, - ldns_rdf* owner, time_t inception, time_t expiration); - - #endif /* SHARED_HSM_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/parser/addnsparser.h opendnssec-2.1.6/signer/src/parser/addnsparser.h ---- opendnssec-2.1.6-orig/signer/src/parser/addnsparser.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/parser/addnsparser.h 2020-02-18 23:08:38.118360739 -0500 -@@ -46,7 +46,7 @@ - * \return acl_type* ACL - * - */ --acl_type* parse_addns_request_xfr(const char* filename, tsig_type* tsig); -+extern acl_type* parse_addns_request_xfr(const char* filename, tsig_type* tsig); - - /** - * Parse . -@@ -56,7 +56,7 @@ - * \return acl_type* ACL - * - */ --acl_type* parse_addns_allow_notify(const char* filename, tsig_type* tsig); -+extern acl_type* parse_addns_allow_notify(const char* filename, tsig_type* tsig); - - /** - * Parse . -@@ -66,7 +66,7 @@ - * \return acl_type* ACL - * - */ --acl_type* parse_addns_provide_xfr(const char* filename, tsig_type* tsig); -+extern acl_type* parse_addns_provide_xfr(const char* filename, tsig_type* tsig); - - /** - * Parse . -@@ -76,7 +76,7 @@ - * \return acl_type* ACL - * - */ --acl_type* parse_addns_do_notify(const char* filename, tsig_type* tsig); -+extern acl_type* parse_addns_do_notify(const char* filename, tsig_type* tsig); - - /** - * Parse . -@@ -85,6 +85,6 @@ - * \return tsig_type* TSIG - * - */ --tsig_type* parse_addns_tsig(const char* filename); -+extern tsig_type* parse_addns_tsig(const char* filename); - - #endif /* PARSER_ADDNSPARSER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/parser/confparser.h opendnssec-2.1.6/signer/src/parser/confparser.h ---- opendnssec-2.1.6-orig/signer/src/parser/confparser.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/parser/confparser.h 2020-02-18 23:08:38.118360739 -0500 -@@ -46,7 +46,7 @@ - * \return ods_status status - * - */ --ods_status parse_file_check(const char* cfgfile, const char* rngfile); -+extern ods_status parse_file_check(const char* cfgfile, const char* rngfile); - - /** - * Parse elements from the configuration file. -@@ -56,7 +56,7 @@ - * \return const char* string value - * - */ --const char* parse_conf_string(const char* cfgfile, const char* expr, -+extern const char* parse_conf_string(const char* cfgfile, const char* expr, - int required); - - /** -@@ -65,7 +65,7 @@ - * \return hsm_repository_t* repositories - * - */ --hsm_repository_t* parse_conf_repositories(const char* cfgfile); -+extern hsm_repository_t* parse_conf_repositories(const char* cfgfile); - - /** - * Parse the listener interfaces. -@@ -74,7 +74,7 @@ - * \return listener_type* listener interfaces - * - */ --listener_type* parse_conf_listener(const char* cfgfile); -+extern listener_type* parse_conf_listener(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -85,17 +85,17 @@ - */ - - /** Common */ --const char* parse_conf_zonelist_filename(const char* cfgfile); --const char* parse_conf_log_filename(const char* cfgfile); -+extern const char* parse_conf_zonelist_filename(const char* cfgfile); -+extern const char* parse_conf_log_filename(const char* cfgfile); - - /** Signer specific */ --const char* parse_conf_pid_filename(const char* cfgfile); --const char* parse_conf_notify_command(const char* cfgfile); --const char* parse_conf_clisock_filename(const char* cfgfile); --const char* parse_conf_working_dir(const char* cfgfile); --const char* parse_conf_username(const char* cfgfile); --const char* parse_conf_group(const char* cfgfile); --const char* parse_conf_chroot(const char* cfgfile); -+extern const char* parse_conf_pid_filename(const char* cfgfile); -+extern const char* parse_conf_notify_command(const char* cfgfile); -+extern const char* parse_conf_clisock_filename(const char* cfgfile); -+extern const char* parse_conf_working_dir(const char* cfgfile); -+extern const char* parse_conf_username(const char* cfgfile); -+extern const char* parse_conf_group(const char* cfgfile); -+extern const char* parse_conf_chroot(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -105,11 +105,11 @@ - */ - - /** Common */ --int parse_conf_use_syslog(const char* cfgfile); --int parse_conf_verbosity(const char* cfgfile); -+extern int parse_conf_use_syslog(const char* cfgfile); -+extern int parse_conf_verbosity(const char* cfgfile); - - /** Signer specific */ --int parse_conf_worker_threads(const char* cfgfile); --int parse_conf_signer_threads(const char* cfgfile); -+extern int parse_conf_worker_threads(const char* cfgfile); -+extern int parse_conf_signer_threads(const char* cfgfile); - - #endif /* PARSE_CONFPARSER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/parser/signconfparser.h opendnssec-2.1.6/signer/src/parser/signconfparser.h ---- opendnssec-2.1.6-orig/signer/src/parser/signconfparser.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/parser/signconfparser.h 2020-02-18 23:08:38.118360739 -0500 -@@ -47,7 +47,7 @@ - * \return keylist_type* key list - * - */ --keylist_type* parse_sc_keys(void* sc, const char* cfgfile); -+extern keylist_type* parse_sc_keys(void* sc, const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -55,19 +55,19 @@ - * \return duration_type* duration - * - */ --duration_type* parse_sc_sig_resign_interval(const char* cfgfile); --duration_type* parse_sc_sig_refresh_interval(const char* cfgfile); --duration_type* parse_sc_sig_validity_default(const char* cfgfile); --duration_type* parse_sc_sig_validity_denial(const char* cfgfile); --duration_type* parse_sc_sig_validity_keyset(const char* cfgfile); --duration_type* parse_sc_sig_jitter(const char* cfgfile); --duration_type* parse_sc_sig_inception_offset(const char* cfgfile); --duration_type* parse_sc_dnskey_ttl(const char* cfgfile); --const char** parse_sc_dnskey_sigrrs(const char* cfgfile); --duration_type* parse_sc_nsec3param_ttl(const char* cfgfile); --duration_type* parse_sc_soa_ttl(const char* cfgfile); --duration_type* parse_sc_soa_min(const char* cfgfile); --duration_type* parse_sc_max_zone_ttl(const char* cfgfile); -+extern duration_type* parse_sc_sig_resign_interval(const char* cfgfile); -+extern duration_type* parse_sc_sig_refresh_interval(const char* cfgfile); -+extern duration_type* parse_sc_sig_validity_default(const char* cfgfile); -+extern duration_type* parse_sc_sig_validity_denial(const char* cfgfile); -+extern duration_type* parse_sc_sig_validity_keyset(const char* cfgfile); -+extern duration_type* parse_sc_sig_jitter(const char* cfgfile); -+extern duration_type* parse_sc_sig_inception_offset(const char* cfgfile); -+extern duration_type* parse_sc_dnskey_ttl(const char* cfgfile); -+extern const char** parse_sc_dnskey_sigrrs(const char* cfgfile); -+extern duration_type* parse_sc_nsec3param_ttl(const char* cfgfile); -+extern duration_type* parse_sc_soa_ttl(const char* cfgfile); -+extern duration_type* parse_sc_soa_min(const char* cfgfile); -+extern duration_type* parse_sc_max_zone_ttl(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -75,7 +75,7 @@ - * \return ldns_rr_type rr type - * - */ --ldns_rr_type parse_sc_nsec_type(const char* cfgfile); -+extern ldns_rr_type parse_sc_nsec_type(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -83,8 +83,8 @@ - * \return uint32_t integer - * - */ --uint32_t parse_sc_nsec3_algorithm(const char* cfgfile); --uint32_t parse_sc_nsec3_iterations(const char* cfgfile); -+extern uint32_t parse_sc_nsec3_algorithm(const char* cfgfile); -+extern uint32_t parse_sc_nsec3_iterations(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -92,14 +92,14 @@ - * \return int integer - * - */ --int parse_sc_nsec3_optout(const char* cfgfile); -+extern int parse_sc_nsec3_optout(const char* cfgfile); - - /** - * Parse elements from the configuration file. - * \param[in] cfgfile the configuration file name. - * \return boolean - */ --int parse_sc_passthrough(const char* cfgfile); -+extern int parse_sc_passthrough(const char* cfgfile); - - /** - * Parse elements from the configuration file. -@@ -107,7 +107,7 @@ - * \return const char* string - * - */ --const char* parse_sc_soa_serial(const char* cfgfile); --const char* parse_sc_nsec3_salt(const char* cfgfile); -+extern const char* parse_sc_soa_serial(const char* cfgfile); -+extern const char* parse_sc_nsec3_salt(const char* cfgfile); - - #endif /* PARSER_SIGNCONFPARSER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/parser/zonelistparser.h opendnssec-2.1.6/signer/src/parser/zonelistparser.h ---- opendnssec-2.1.6-orig/signer/src/parser/zonelistparser.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/parser/zonelistparser.h 2020-02-18 23:08:38.118360739 -0500 -@@ -45,6 +45,6 @@ - * \return ods_status status - * - */ --ods_status parse_zonelist_zones(void* zlist, const char* zlfile); -+extern ods_status parse_zonelist_zones(void* zlist, const char* zlfile); - - #endif /* PARSER_ZONELISTPARSER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/backup.h opendnssec-2.1.6/signer/src/signer/backup.h ---- opendnssec-2.1.6-orig/signer/src/signer/backup.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/backup.h 2020-02-18 23:08:38.118360739 -0500 -@@ -45,7 +45,7 @@ - * \return char* read token - * - */ --char* backup_read_token(FILE* in); -+extern char* backup_read_token(FILE* in); - - /** - * Read and match a string from backup file. -@@ -54,7 +54,7 @@ - * \return 1 if string was read and matched, 0 otherwise - * - */ --int backup_read_check_str(FILE* in, const char* str); -+extern int backup_read_check_str(FILE* in, const char* str); - - /** - * Read a string from backup file. -@@ -63,7 +63,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_str(FILE* in, const char** str); -+extern int backup_read_str(FILE* in, const char** str); - - /** - * Read time from backup file. -@@ -72,7 +72,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_time_t(FILE* in, time_t* v); -+extern int backup_read_time_t(FILE* in, time_t* v); - - /** - * Read duration from backup file. -@@ -81,7 +81,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_duration(FILE* in, duration_type** v); -+extern int backup_read_duration(FILE* in, duration_type** v); - - /** - * Read rr type from backup file. -@@ -90,7 +90,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_rr_type(FILE* in, ldns_rr_type* v); -+extern int backup_read_rr_type(FILE* in, ldns_rr_type* v); - - /** - * Read integer from backup file. -@@ -99,7 +99,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_int(FILE* in, int* v); -+extern int backup_read_int(FILE* in, int* v); - - /** - * Read 8bit unsigned integer from backup file. -@@ -108,7 +108,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_uint8_t(FILE* in, uint8_t* v); -+extern int backup_read_uint8_t(FILE* in, uint8_t* v); - - /** - * Read 32bit unsigned integer from backup file. -@@ -117,7 +117,7 @@ - * \return int 1 on success, 0 otherwise - * - */ --int backup_read_uint32_t(FILE* in, uint32_t* v); -+extern int backup_read_uint32_t(FILE* in, uint32_t* v); - - /** - * Read namedb from backup file. -@@ -126,7 +126,7 @@ - * \return ods_status status - * - */ --ods_status backup_read_namedb(FILE* in, void* zone); -+extern ods_status backup_read_namedb(FILE* in, void* zone); - - /** - * Read ixfr journal from file. -@@ -135,6 +135,6 @@ - * \return ods_status status - * - */ --ods_status backup_read_ixfr(FILE* in, void* zone); -+extern ods_status backup_read_ixfr(FILE* in, void* zone); - - #endif /* SIGNER_BACKUP_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/denial.h opendnssec-2.1.6/signer/src/signer/denial.h ---- opendnssec-2.1.6-orig/signer/src/signer/denial.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/denial.h 2020-02-18 23:08:38.118360739 -0500 -@@ -64,14 +64,14 @@ - * \return denial_type* denial of existence data point - * - */ --denial_type* denial_create(zone_type* zoneptr, ldns_rdf* dname); -+extern denial_type* denial_create(zone_type* zoneptr, ldns_rdf* dname); - - /** - * Apply differences at denial. - * \param[in] denial Denial of Existence data point - * - */ --void denial_diff(denial_type* denial); -+extern void denial_diff(denial_type* denial); - - /** - * Add NSEC(3) to the Denial of Existence data point. -@@ -79,7 +79,7 @@ - * \param[in] rr NSEC(3) resource record - * - */ --void denial_add_rr(denial_type* denial, ldns_rr* rr); -+extern void denial_add_rr(denial_type* denial, ldns_rr* rr); - - /** - * Nsecify Denial of Existence data point. -@@ -88,7 +88,7 @@ - * \param[out] num_added number of RRs added - * - */ --void denial_nsecify(denial_type* denial, denial_type* nxt, uint32_t* num_added); -+extern void denial_nsecify(denial_type* denial, denial_type* nxt, uint32_t* num_added); - - /** - * Print Denial of Existence data point. -@@ -97,13 +97,13 @@ - * \param[out] status status - * - */ --void denial_print(FILE* fd, denial_type* denial, ods_status* status); -+extern void denial_print(FILE* fd, denial_type* denial, ods_status* status); - - /** - * Cleanup Denial of Existence data point. - * \param[in] denial denial of existence data point - * - */ --void denial_cleanup(denial_type* denial); -+extern void denial_cleanup(denial_type* denial); - - #endif /* SIGNER_DENIAL_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/domain.h opendnssec-2.1.6/signer/src/signer/domain.h ---- opendnssec-2.1.6-orig/signer/src/signer/domain.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/domain.h 2020-02-18 23:08:38.119360753 -0500 -@@ -67,7 +67,7 @@ - * \param[in] level log level - * - */ --void log_dname(ldns_rdf* rdf, const char* pre, int level); -+extern void log_dname(ldns_rdf* rdf, const char* pre, int level); - - /** - * Create domain. -@@ -76,7 +76,7 @@ - * \return domain_type* domain - * - */ --domain_type* domain_create(zone_type* zone, ldns_rdf* dname); -+extern domain_type* domain_create(zone_type* zone, ldns_rdf* dname); - - /** - * Count the number of RRsets at this domain with RRs that have is_added. -@@ -84,7 +84,7 @@ - * \return size_t number of RRsets - * - */ --size_t domain_count_rrset_is_added(domain_type* domain); -+extern size_t domain_count_rrset_is_added(domain_type* domain); - - /** - * Look up RRset at this domain. -@@ -93,7 +93,7 @@ - * \return rrset_type* RRset, if found - * - */ --rrset_type* domain_lookup_rrset(domain_type* domain, ldns_rr_type rrtype); -+extern rrset_type* domain_lookup_rrset(domain_type* domain, ldns_rr_type rrtype); - - /** - * Add RRset to domain. -@@ -101,7 +101,7 @@ - * \param[in] rrset RRset - * - */ --void domain_add_rrset(domain_type* domain, rrset_type* rrset); -+extern void domain_add_rrset(domain_type* domain, rrset_type* rrset); - - /** - * Apply differences at domain. -@@ -110,7 +110,7 @@ - * \param[in] more_coming more transactions possible - * - */ --void domain_diff(domain_type* domain, unsigned is_ixfr, unsigned more_coming); -+extern void domain_diff(domain_type* domain, unsigned is_ixfr, unsigned more_coming); - - /** - * Rollback differences at domain. -@@ -118,7 +118,7 @@ - * \param[in] keepsc keep RRs that did not came from the adapter - * - */ --void domain_rollback(domain_type* domain, int keepsc); -+extern void domain_rollback(domain_type* domain, int keepsc); - - /** - * Check whether a domain is an empty non-terminal to an unsigned delegation. -@@ -126,7 +126,7 @@ - * \return int yes or no - * - */ --int domain_ent2unsignedns(domain_type* domain); -+extern int domain_ent2unsignedns(domain_type* domain); - - /** - * Check whether a domain is a delegation, regardless of parent. -@@ -137,7 +137,7 @@ - * LDNS_RR_TYPE_SOA Authoritative data (or signed delegation) - * - */ --ldns_rr_type domain_is_delegpt(domain_type* domain); -+extern ldns_rr_type domain_is_delegpt(domain_type* domain); - - /** - * Check whether the domain is occluded. -@@ -148,7 +148,7 @@ - * LDNS_RR_TYPE_SOA Authoritative data or delegation - * - */ --ldns_rr_type domain_is_occluded(domain_type* domain); -+extern ldns_rr_type domain_is_occluded(domain_type* domain); - - /** - * Print domain. -@@ -157,14 +157,14 @@ - * \param[out] status status - * - */ --void domain_print(FILE* fd, domain_type* domain, ods_status* status); -+extern void domain_print(FILE* fd, domain_type* domain, ods_status* status); - - /** - * Clean up domain. - * \param[in] domain domain to cleanup - * - */ --void domain_cleanup(domain_type* domain); -+extern void domain_cleanup(domain_type* domain); - - /** - * Backup domain. -@@ -173,6 +173,6 @@ - * \param[in] sigs do RRSIGS if true, otherwise do RRset - * - */ --void domain_backup2(FILE* fd, domain_type* domain, int sigs); -+extern void domain_backup2(FILE* fd, domain_type* domain, int sigs); - - #endif /* SIGNER_DOMAIN_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/ixfr.h opendnssec-2.1.6/signer/src/signer/ixfr.h ---- opendnssec-2.1.6-orig/signer/src/signer/ixfr.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/ixfr.h 2020-02-18 23:08:38.119360753 -0500 -@@ -70,7 +70,7 @@ - * \return ixfr_type* ixfr - * - */ --ixfr_type* ixfr_create(void); -+extern ixfr_type* ixfr_create(void); - - /** - * Add +RR to ixfr journal. -@@ -78,7 +78,7 @@ - * \param[in] rr +RR - * - */ --void ixfr_add_rr(ixfr_type* ixfr, ldns_rr* rr); -+extern void ixfr_add_rr(ixfr_type* ixfr, ldns_rr* rr); - - /** - * Add -RR to ixfr journal. -@@ -86,7 +86,7 @@ - * \param[in] rr -RR - * - */ --void ixfr_del_rr(ixfr_type* ixfr, ldns_rr* rr); -+extern void ixfr_del_rr(ixfr_type* ixfr, ldns_rr* rr); - - /** - * Print the ixfr journal. -@@ -94,20 +94,20 @@ - * \param[in] ixfr journal - * - */ --int ixfr_print(FILE* fd, ixfr_type* ixfr); -+extern int ixfr_print(FILE* fd, ixfr_type* ixfr); - - /** - * Purge the ixfr journal. - * \param[in] ixfr journal - * - */ --void ixfr_purge(ixfr_type* ixfr, char const *zonename); -+extern void ixfr_purge(ixfr_type* ixfr, char const *zonename); - - /** - * Cleanup the ixfr journal. - * \param[in] ixfr journal - * - */ --void ixfr_cleanup(ixfr_type* ixfr); -+extern void ixfr_cleanup(ixfr_type* ixfr); - - #endif /* SIGNER_IXFR_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/keys.h opendnssec-2.1.6/signer/src/signer/keys.h ---- opendnssec-2.1.6-orig/signer/src/signer/keys.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/keys.h 2020-02-18 23:08:38.119360753 -0500 -@@ -75,7 +75,7 @@ - * \return keylist_type* key list - * - */ --keylist_type* keylist_create(signconf_type* sc); -+extern keylist_type* keylist_create(signconf_type* sc); - - /** - * Lookup a key in the key list by locator. -@@ -84,7 +84,7 @@ - * \return key_type* key if it exists, NULL otherwise - * - */ --key_type* keylist_lookup_by_locator(keylist_type* kl, const char* locator); -+extern key_type* keylist_lookup_by_locator(keylist_type* kl, const char* locator); - - /** - * Push a key to the keylist. -@@ -98,7 +98,7 @@ - * \return key_type* key - * - */ --key_type* keylist_push(keylist_type* kl, const char* locator, const char* resourcerecord, -+extern key_type* keylist_push(keylist_type* kl, const char* locator, const char* resourcerecord, - uint8_t algorithm, uint32_t flags, int publish, int ksk, int zsk); - - /** -@@ -107,14 +107,14 @@ - * \param[in] name zone name - * - */ --void keylist_log(keylist_type* kl, const char* name); -+extern void keylist_log(keylist_type* kl, const char* name); - - /** - * Clean up key list. - * \param[in] kl key list to clean up - * - */ --void keylist_cleanup(keylist_type* kl); -+extern void keylist_cleanup(keylist_type* kl); - - /** - * Recover key from backup. -@@ -123,7 +123,7 @@ - * \return key_type* key - * - */ --key_type* key_recover2(FILE* fd, keylist_type* kl); -+extern key_type* key_recover2(FILE* fd, keylist_type* kl); - - /** - * Backup key list. -@@ -132,6 +132,6 @@ - * \param[in] version version string - * - */ --void keylist_backup(FILE* fd, keylist_type* kl, const char* version); -+extern void keylist_backup(FILE* fd, keylist_type* kl, const char* version); - - #endif /* SIGNER_KEYS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/namedb.h opendnssec-2.1.6/signer/src/signer/namedb.h ---- opendnssec-2.1.6-orig/signer/src/signer/namedb.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/namedb.h 2020-02-18 23:08:38.119360753 -0500 -@@ -65,7 +65,7 @@ - * \param[in] db namedb - * - */ --void namedb_init_denials(namedb_type* db); -+extern void namedb_init_denials(namedb_type* db); - - /** - * Create a new namedb. -@@ -73,7 +73,7 @@ - * \return namedb_type* namedb - * - */ --namedb_type* namedb_create(void* zone); -+extern namedb_type* namedb_create(void* zone); - - /** - * Determine new SOA SERIAL. -@@ -84,7 +84,7 @@ - * \return ods_status status - * - */ --ods_status namedb_update_serial(namedb_type* db, const char* zone_name, -+extern ods_status namedb_update_serial(namedb_type* db, const char* zone_name, - const char* format, uint32_t inbound_serial); - - /** -@@ -95,7 +95,7 @@ - * \return ods_status status - * - */ --ods_status namedb_domain_entize(namedb_type* db, domain_type* domain, -+extern ods_status namedb_domain_entize(namedb_type* db, domain_type* domain, - ldns_rdf* apex); - - /** -@@ -105,7 +105,7 @@ - * \return domain_type* domain, if found - * - */ --domain_type* namedb_lookup_domain(namedb_type* db, ldns_rdf* dname); -+extern domain_type* namedb_lookup_domain(namedb_type* db, ldns_rdf* dname); - - /** - * Add domain to namedb. -@@ -114,7 +114,7 @@ - * \return domain_type* added domain - * - */ --domain_type* namedb_add_domain(namedb_type* db, ldns_rdf* dname); -+extern domain_type* namedb_add_domain(namedb_type* db, ldns_rdf* dname); - - /** - * Delete domain from namedb -@@ -123,7 +123,7 @@ - * \return domain_type* deleted domain - * - */ --domain_type* namedb_del_domain(namedb_type* db, domain_type* domain); -+extern domain_type* namedb_del_domain(namedb_type* db, domain_type* domain); - - /** - * Lookup denial. -@@ -132,7 +132,7 @@ - * \return denial_type* denial, if found - * - */ --denial_type* namedb_lookup_denial(namedb_type* db, ldns_rdf* dname); -+extern denial_type* namedb_lookup_denial(namedb_type* db, ldns_rdf* dname); - - /** - * Add denial to namedb. -@@ -142,7 +142,7 @@ - * \return denial_type* added denial - * - */ --denial_type* namedb_add_denial(namedb_type* db, ldns_rdf* dname, -+extern denial_type* namedb_add_denial(namedb_type* db, ldns_rdf* dname, - nsec3params_type* n3p); - - /** -@@ -152,7 +152,7 @@ - * \return denial_type* deleted denial - * - */ --denial_type* namedb_del_denial(namedb_type* db, denial_type* denial); -+extern denial_type* namedb_del_denial(namedb_type* db, denial_type* denial); - - /** - * Examine updates to namedb. -@@ -160,7 +160,7 @@ - * \return ods_status status - * - */ --ods_status namedb_examine(namedb_type* db); -+extern ods_status namedb_examine(namedb_type* db); - - /** - * Apply differences in db. -@@ -169,7 +169,7 @@ - * \param[in] more_coming more transactions possible - * - */ --void namedb_diff(namedb_type* db, unsigned is_ixfr, unsigned more_coming); -+extern void namedb_diff(namedb_type* db, unsigned is_ixfr, unsigned more_coming); - - /** - * Rollback differences in db. -@@ -177,7 +177,7 @@ - * \param[in] keepsc keep RRs that did not came from the adapter. - * - */ --void namedb_rollback(namedb_type* db, unsigned keepsc); -+extern void namedb_rollback(namedb_type* db, unsigned keepsc); - - /** - * Nsecify db. -@@ -185,7 +185,7 @@ - * \param[out] num_added number of NSEC RRs added - * - */ --void namedb_nsecify(namedb_type* db, uint32_t* num_added); -+extern void namedb_nsecify(namedb_type* db, uint32_t* num_added); - - /** - * Export db to file. -@@ -194,28 +194,28 @@ - * \param[out] status status - * - */ --void namedb_export(FILE* fd, namedb_type* db, ods_status* status); -+extern void namedb_export(FILE* fd, namedb_type* db, ods_status* status); - - /** - * Wipe out all NSEC(3) RRsets. - * \param[in] db namedb - * - */ --void namedb_wipe_denial(namedb_type* db); -+extern void namedb_wipe_denial(namedb_type* db); - - /** - * Clean up denial of existence chain. - * \param[in] db namedb - * - */ --void namedb_cleanup_denials(namedb_type* db); -+extern void namedb_cleanup_denials(namedb_type* db); - - /** - * Clean up namedb. - * \param[in] namedb namedb - * - */ --void namedb_cleanup(namedb_type* db); -+extern void namedb_cleanup(namedb_type* db); - - /** - * Backup namedb. -@@ -223,6 +223,6 @@ - * \param[in] zd zone data - * - */ --void namedb_backup2(FILE* fd, namedb_type* db); -+extern void namedb_backup2(FILE* fd, namedb_type* db); - - #endif /* SIGNER_NAMEDB_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/nsec3params.h opendnssec-2.1.6/signer/src/signer/nsec3params.h ---- opendnssec-2.1.6-orig/signer/src/signer/nsec3params.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/nsec3params.h 2020-02-18 23:08:38.119360753 -0500 -@@ -62,7 +62,7 @@ - * \return ods_status status - * - */ --ods_status nsec3params_create_salt(const char* salt_str, uint8_t* salt_len, -+extern ods_status nsec3params_create_salt(const char* salt_str, uint8_t* salt_len, - uint8_t** salt); - - /** -@@ -75,7 +75,7 @@ - * \return nsec3params_type* the created nsec3params - * - */ --nsec3params_type* nsec3params_create(void* sc, uint8_t algo, uint8_t flags, -+extern nsec3params_type* nsec3params_create(void* sc, uint8_t algo, uint8_t flags, - uint16_t iter, const char* salt); - - /** -@@ -89,7 +89,7 @@ - * \param[in] version version string - * - */ --void nsec3params_backup(FILE* fd, uint8_t algo, uint8_t flags, -+extern void nsec3params_backup(FILE* fd, uint8_t algo, uint8_t flags, - uint16_t iter, const char* salt, ldns_rr* rr, const char* version); - - /** -@@ -97,6 +97,6 @@ - * \param[in] nsec3params the nsec3param to be deleted - * - */ --void nsec3params_cleanup(nsec3params_type* nsec3params); -+extern void nsec3params_cleanup(nsec3params_type* nsec3params); - - #endif /* SIGNER_NSEC3PARAMS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/rrset.h opendnssec-2.1.6/signer/src/signer/rrset.h ---- opendnssec-2.1.6-orig/signer/src/signer/rrset.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/rrset.h 2020-02-18 23:08:38.119360753 -0500 -@@ -74,7 +74,7 @@ - * \param[in] level log level - * - */ --void log_rr(ldns_rr* rr, const char* pre, int level); -+extern void log_rr(ldns_rr* rr, const char* pre, int level); - - /** - * Log RRset. -@@ -84,7 +84,7 @@ - * \param[in] level log level - * - */ --void log_rrset(ldns_rdf* dname, ldns_rr_type type, const char* pre, int level); -+extern void log_rrset(ldns_rdf* dname, ldns_rr_type type, const char* pre, int level); - - /** - * Get the string-format of RRtype. -@@ -92,7 +92,7 @@ - * \return const char* string-format of RRtype - * - */ --const char* rrset_type2str(ldns_rr_type type); -+extern const char* rrset_type2str(ldns_rr_type type); - - /** - * Create RRset. -@@ -101,7 +101,7 @@ - * \return rrset_type* RRset - * - */ --rrset_type* rrset_create(zone_type* zone, ldns_rr_type type); -+extern rrset_type* rrset_create(zone_type* zone, ldns_rr_type type); - - /** - * Lookup RR in RRset. -@@ -110,13 +110,13 @@ - * \return rr_type* RR if found - * - */ --rr_type* rrset_lookup_rr(rrset_type* rrset, ldns_rr* rr); -+extern rr_type* rrset_lookup_rr(rrset_type* rrset, ldns_rr* rr); - - /** - * What TTL should new RR's in this RRS get? - * - */ --uint32_t rrset_lookup_ttl(rrset_type* rrset, uint32_t default_ttl); -+extern uint32_t rrset_lookup_ttl(rrset_type* rrset, uint32_t default_ttl); - - /** - * Count the number of RRs in this RRset that have is_added. -@@ -124,7 +124,7 @@ - * \return size_t number of RRs - * - */ --size_t rrset_count_rr_is_added(rrset_type* rrset); -+extern size_t rrset_count_rr_is_added(rrset_type* rrset); - - /** - * Add RR to RRset. -@@ -133,7 +133,7 @@ - * \return rr_type* added RR - * - */ --rr_type* rrset_add_rr(rrset_type* rrset, ldns_rr* rr); -+extern rr_type* rrset_add_rr(rrset_type* rrset, ldns_rr* rr); - - /** - * Delete RR from RRset. -@@ -141,7 +141,7 @@ - * \param[in] rrnum position of RR - * - */ --void rrset_del_rr(rrset_type* rrset, uint16_t rrnum); -+extern void rrset_del_rr(rrset_type* rrset, uint16_t rrnum); - - /** - * Add RRSIG to RRset. -@@ -151,7 +151,7 @@ - * \param[in] flags key flags - * - */ --void rrset_add_rrsig(rrset_type* rrset, ldns_rr* rr, -+extern void rrset_add_rrsig(rrset_type* rrset, ldns_rr* rr, - const char* locator, uint32_t flags); - - /** -@@ -160,7 +160,7 @@ - * \param[in] rrnum position of RRSIG - * - */ --void rrset_drop_rrsigs(zone_type* zone, rrset_type* rrset); -+extern void rrset_drop_rrsigs(zone_type* zone, rrset_type* rrset); - - /** - * Apply differences at RRset. -@@ -169,7 +169,7 @@ - * \param[in] more_coming more transactions possible - * - */ --void rrset_diff(rrset_type* rrset, unsigned is_ixfr, unsigned more_coming); -+extern void rrset_diff(rrset_type* rrset, unsigned is_ixfr, unsigned more_coming); - - /** - * Sign RRset. -@@ -179,7 +179,7 @@ - * \return ods_status status - * - */ --ods_status rrset_sign(hsm_ctx_t* ctx, rrset_type* rrset, time_t signtime); -+extern ods_status rrset_sign(hsm_ctx_t* ctx, rrset_type* rrset, time_t signtime); - - /** - * Obtain a resource record (containing a signature of a dnskeyset or -@@ -189,7 +189,7 @@ - * \param[in] ttl the time-to-live to use if non is specified - * \param[in] apex the owner domain is none can be determined from input string - */ --ods_status rrset_getliteralrr(ldns_rr** dnskey, const char *resourcerecord, uint32_t ttl, ldns_rdf* apex); -+extern ods_status rrset_getliteralrr(ldns_rr** dnskey, const char *resourcerecord, uint32_t ttl, ldns_rdf* apex); - - /** - * Print RRset. -@@ -199,7 +199,7 @@ - * \param[out] status status - * - */ --void rrset_print(FILE* fd, rrset_type* rrset, int skip_rrsigs, -+extern void rrset_print(FILE* fd, rrset_type* rrset, int skip_rrsigs, - ods_status* status); - - /** -@@ -207,7 +207,7 @@ - * \param[in] rrset RRset to be cleaned up - * - */ --void rrset_cleanup(rrset_type* rrset); -+extern void rrset_cleanup(rrset_type* rrset); - - /** - * Backup RRset. -@@ -215,8 +215,8 @@ - * \param[in] rrset RRset - * - */ --void rrset_backup2(FILE* fd, rrset_type* rrset); -+extern void rrset_backup2(FILE* fd, rrset_type* rrset); - --collection_class rrset_store_initialize(void); -+extern collection_class rrset_store_initialize(void); - - #endif /* SIGNER_RRSET_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/signconf.h opendnssec-2.1.6/signer/src/signer/signconf.h ---- opendnssec-2.1.6-orig/signer/src/signer/signconf.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/signconf.h 2020-02-18 23:08:38.119360753 -0500 -@@ -77,7 +77,7 @@ - * \return signconf_type* signer configuration - * - */ --signconf_type* signconf_create(void); -+extern signconf_type* signconf_create(void); - - /** - * Update signer configuration. -@@ -87,7 +87,7 @@ - * \return ods_status status - * - */ --ods_status signconf_update(signconf_type** signconf, const char* scfile, -+extern ods_status signconf_update(signconf_type** signconf, const char* scfile, - time_t last_modified); - - /** -@@ -97,7 +97,7 @@ - * \param[in] version version string - * - */ --void signconf_backup(FILE* fd, signconf_type* sc, const char* version); -+extern void signconf_backup(FILE* fd, signconf_type* sc, const char* version); - - /** - * Check signer configuration. -@@ -105,7 +105,7 @@ - * \return ods_status status - * - */ --ods_status signconf_check(signconf_type* signconf); -+extern ods_status signconf_check(signconf_type* signconf); - - /** - * Compare signer configurations on denial of existence material. -@@ -114,7 +114,7 @@ - * \return task_id what task needs to be scheduled - * - */ --task_id signconf_compare_denial(signconf_type* a, signconf_type* b); -+extern task_id signconf_compare_denial(signconf_type* a, signconf_type* b); - - /** - * Log signer configuration. -@@ -122,13 +122,13 @@ - * \param[in] name zone name - * - */ --void signconf_log(signconf_type* sc, const char* name); -+extern void signconf_log(signconf_type* sc, const char* name); - - /** - * Clean up signer configuration. - * \param[in] sc signconf to cleanup - * - */ --void signconf_cleanup(signconf_type* sc); -+extern void signconf_cleanup(signconf_type* sc); - - #endif /* SIGNER_SIGNCONF_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/stats.h opendnssec-2.1.6/signer/src/signer/stats.h ---- opendnssec-2.1.6-orig/signer/src/signer/stats.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/stats.h 2020-02-18 23:08:38.119360753 -0500 -@@ -68,7 +68,7 @@ - * \return the initialized stats; - * - */ --stats_type* stats_create(void); -+extern stats_type* stats_create(void); - - /** - * Log statistics. -@@ -78,7 +78,7 @@ - * \param[in] nsec_type NSEC or NSEC3 - * - */ --void stats_log(stats_type* stats, const char* name, uint32_t serial, -+extern void stats_log(stats_type* stats, const char* name, uint32_t serial, - ldns_rr_type nsec_type); - - /** -@@ -86,13 +86,13 @@ - * \param[in] stats statistics to be cleared - * - */ --void stats_clear(stats_type* stats); -+extern void stats_clear(stats_type* stats); - - /** - * Clean up statistics. - * \param[in] stats statistics to be deleted - * - */ --void stats_cleanup(stats_type* stats); -+extern void stats_cleanup(stats_type* stats); - - #endif /* SIGNER_STATS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/tools.h opendnssec-2.1.6/signer/src/signer/tools.h ---- opendnssec-2.1.6-orig/signer/src/signer/tools.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/tools.h 2020-02-18 23:08:38.120360767 -0500 -@@ -38,7 +38,7 @@ - * \return ods_status status - * - */ --ods_status tools_signconf(zone_type* zone); -+extern ods_status tools_signconf(zone_type* zone); - - /** - * Read zone from input adapter. -@@ -46,7 +46,7 @@ - * \return ods_status status - * - */ --ods_status tools_input(zone_type* zone); -+extern ods_status tools_input(zone_type* zone); - - /** - * Write zone to output adapter. -@@ -55,6 +55,6 @@ - * \return ods_status status - * - */ --ods_status tools_output(zone_type* zone, engine_type* engine); -+extern ods_status tools_output(zone_type* zone, engine_type* engine); - - #endif /* SIGNER_TOOLS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/zone.h opendnssec-2.1.6/signer/src/signer/zone.h ---- opendnssec-2.1.6-orig/signer/src/signer/zone.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/zone.h 2020-02-18 23:08:38.120360767 -0500 -@@ -98,7 +98,7 @@ - * \return zone_type* zone - * - */ --zone_type* zone_create(char* name, ldns_rr_class klass); -+extern zone_type* zone_create(char* name, ldns_rr_class klass); - - /** - * Load signer configuration for zone. -@@ -110,7 +110,7 @@ - * other: signer configuration not loaded, error occurred - * - */ --ods_status zone_load_signconf(zone_type* zone, signconf_type** new_signconf); -+extern ods_status zone_load_signconf(zone_type* zone, signconf_type** new_signconf); - - /** - * Reschedule task for zone. -@@ -120,7 +120,7 @@ - * \return ods_status status - * - */ --ods_status zone_reschedule_task(zone_type* zone, schedule_type* taskq, -+extern ods_status zone_reschedule_task(zone_type* zone, schedule_type* taskq, - task_id what); - - /** -@@ -129,14 +129,14 @@ - * \return ods_status status - * - */ --ods_status zone_publish_dnskeys(zone_type* zone, int skip_hsm_access); -+extern ods_status zone_publish_dnskeys(zone_type* zone, int skip_hsm_access); - - /** - * Unlink DNSKEY RRs. - * \param[in] zone zone - * - */ --void zone_rollback_dnskeys(zone_type* zone); -+extern void zone_rollback_dnskeys(zone_type* zone); - - /** - * Publish the NSEC3 parameters as indicated by the signer configuration. -@@ -144,14 +144,14 @@ - * \return ods_status status - * - */ --ods_status zone_publish_nsec3param(zone_type* zone); -+extern ods_status zone_publish_nsec3param(zone_type* zone); - - /** - * Unlink NSEC3PARAM RR. - * \param[in] zone zone - * - */ --void zone_rollback_nsec3param(zone_type* zone); -+extern void zone_rollback_nsec3param(zone_type* zone); - - /** - * Prepare keys for signing. -@@ -159,7 +159,7 @@ - * \return ods_status status - * - */ --ods_status zone_prepare_keys(zone_type* zone); -+extern ods_status zone_prepare_keys(zone_type* zone); - - /** - * Update serial. -@@ -167,7 +167,7 @@ - * \return ods_status status - * - */ --ods_status zone_update_serial(zone_type* zone); -+extern ods_status zone_update_serial(zone_type* zone); - - /** - * Lookup RRset. -@@ -177,7 +177,7 @@ - * \return rrset_type* RRset, if found - * - */ --rrset_type* zone_lookup_rrset(zone_type* zone, ldns_rdf* owner, -+extern rrset_type* zone_lookup_rrset(zone_type* zone, ldns_rdf* owner, - ldns_rr_type type); - - /** -@@ -191,7 +191,7 @@ - * other: rr not added to zone, error occurred - * - */ --ods_status zone_add_rr(zone_type* zone, ldns_rr* rr, int do_stats); -+extern ods_status zone_add_rr(zone_type* zone, ldns_rr* rr, int do_stats); - - /** - * Delete RR. -@@ -204,13 +204,13 @@ - * other: rr not removed from zone, error occurred - * - */ --ods_status zone_del_rr(zone_type* zone, ldns_rr* rr, int do_stats); -+extern ods_status zone_del_rr(zone_type* zone, ldns_rr* rr, int do_stats); - - /** - * Remove all NSEC3PARAM RRs from the zone - * \return ODS_STATUS_UNCHANGED or ODS_STATUS_OK - */ --ods_status zone_del_nsec3params(zone_type* zone); -+extern ods_status zone_del_nsec3params(zone_type* zone); - - /** - * Merge zones. Values that are merged: -@@ -222,14 +222,14 @@ - * \param[in] z2 zone with new values - * - */ --void zone_merge(zone_type* z1, zone_type* z2); -+extern void zone_merge(zone_type* z1, zone_type* z2); - - /** - * Clean up zone. - * \param[in] zone zone - * - */ --void zone_cleanup(zone_type* zone); -+extern void zone_cleanup(zone_type* zone); - - /** - * Backup zone. -@@ -237,13 +237,13 @@ - * \return ods_status status - * - */ --ods_status zone_backup2(zone_type* zone, time_t nextResign); -+extern ods_status zone_backup2(zone_type* zone, time_t nextResign); - - /** - * Recover zone from backup. - * \param[in] zone corresponding zone - * - */ --ods_status zone_recover2(engine_type* engine, zone_type* zone); -+extern ods_status zone_recover2(engine_type* engine, zone_type* zone); - - #endif /* SIGNER_ZONE_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/signer/zonelist.h opendnssec-2.1.6/signer/src/signer/zonelist.h ---- opendnssec-2.1.6-orig/signer/src/signer/zonelist.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/signer/zonelist.h 2020-02-18 23:08:38.120360767 -0500 -@@ -56,7 +56,7 @@ - * \return zonelist_type* created zone list - * - */ --zonelist_type* zonelist_create(void); -+extern zonelist_type* zonelist_create(void); - - /** - * Lookup zone by name and class. -@@ -66,7 +66,7 @@ - * \return zone_type* found zone - * - */ --zone_type* zonelist_lookup_zone_by_name(zonelist_type* zonelist, -+extern zone_type* zonelist_lookup_zone_by_name(zonelist_type* zonelist, - const char* name, ldns_rr_class klass); - - /** -@@ -77,7 +77,7 @@ - * \return zone_type* found zone - * - */ --zone_type* zonelist_lookup_zone_by_dname(zonelist_type* zonelist, -+extern zone_type* zonelist_lookup_zone_by_dname(zonelist_type* zonelist, - ldns_rdf* dname, ldns_rr_class klass); - - /** -@@ -87,7 +87,7 @@ - * \return zone_type* added zone - * - */ --zone_type* zonelist_add_zone(zonelist_type* zl, zone_type* zone); -+extern zone_type* zonelist_add_zone(zonelist_type* zl, zone_type* zone); - - /** - * Delete zone. -@@ -95,7 +95,7 @@ - * \param[in] zone zone - * - */ --void zonelist_del_zone(zonelist_type* zlist, zone_type* zone); -+extern void zonelist_del_zone(zonelist_type* zlist, zone_type* zone); - - /** - * Update zonelist. -@@ -104,20 +104,20 @@ - * \return ods_status status - * - */ --ods_status zonelist_update(zonelist_type* zl, const char* zlfile); -+extern ods_status zonelist_update(zonelist_type* zl, const char* zlfile); - - /** - * Clean up zone list. - * \param[in] zl zone list - * - */ --void zonelist_cleanup(zonelist_type* zl); -+extern void zonelist_cleanup(zonelist_type* zl); - - /** - * Free zone list. - * \param[in] zl zone list - * - */ --void zonelist_free(zonelist_type* zl); -+extern void zonelist_free(zonelist_type* zl); - - #endif /* SIGNER_ZONELIST_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/acl.h opendnssec-2.1.6/signer/src/wire/acl.h ---- opendnssec-2.1.6-orig/signer/src/wire/acl.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/acl.h 2020-02-18 23:08:38.120360767 -0500 -@@ -81,7 +81,7 @@ - * \return acl_type* ACL - * - */ --acl_type* acl_create(char* address, -+extern acl_type* acl_create(char* address, - char* port, char* tsig_name, tsig_type* tsig); - - /** -@@ -92,7 +92,7 @@ - * \return acl_type* ACL that matches - * - */ --acl_type* acl_find(acl_type* acl, struct sockaddr_storage* addr, -+extern acl_type* acl_find(acl_type* acl, struct sockaddr_storage* addr, - tsig_rr_type* tsig); - - /** -@@ -101,7 +101,7 @@ - * \return int address family - * - */ --int acl_parse_family(const char* a); -+extern int acl_parse_family(const char* a); - - /** - * Address storage to IP string. -@@ -111,7 +111,7 @@ - * \return int 0 if failed, 1 otherwise - * - */ --int addr2ip(struct sockaddr_storage addr, char* ip, size_t len); -+extern int addr2ip(struct sockaddr_storage addr, char* ip, size_t len); - - /** - * Clean up ACL. -@@ -119,6 +119,6 @@ - * \param[in] allocator memory allocator - * - */ --void acl_cleanup(acl_type* acl); -+extern void acl_cleanup(acl_type* acl); - - #endif /* WIRE_ACL_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/axfr.h opendnssec-2.1.6/signer/src/wire/axfr.h ---- opendnssec-2.1.6-orig/signer/src/wire/axfr.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/axfr.h 2020-02-18 23:08:38.120360767 -0500 -@@ -49,7 +49,7 @@ - * \return query_state state of the query - * - */ --query_state soa_request(query_type* q, engine_type* engine); -+extern query_state soa_request(query_type* q, engine_type* engine); - - /** - * Do AXFR. -@@ -59,7 +59,7 @@ - * \return query_state state of the query - * - */ --query_state axfr(query_type* q, engine_type* engine, int fallback); -+extern query_state axfr(query_type* q, engine_type* engine, int fallback); - - /** - * Do IXFR. -@@ -68,6 +68,6 @@ - * \return query_state state of the query - * - */ --query_state ixfr(query_type* q, engine_type* engine); -+extern query_state ixfr(query_type* q, engine_type* engine); - - #endif /* WIRE_AXFR_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/buffer.h opendnssec-2.1.6/signer/src/wire/buffer.h ---- opendnssec-2.1.6-orig/signer/src/wire/buffer.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/buffer.h 2020-02-18 23:08:38.120360767 -0500 -@@ -124,7 +124,7 @@ - * \return buffer_type* buffer - * - */ --buffer_type* buffer_create(size_t capacity); -+extern buffer_type* buffer_create(size_t capacity); - - /** - * Clear the buffer and make it ready for writing. -@@ -132,7 +132,7 @@ - * \param[in] buffer buffer - * - */ --void buffer_clear(buffer_type* buffer); -+extern void buffer_clear(buffer_type* buffer); - - /** - * Flip the buffer and make it ready for reading. -@@ -150,7 +150,7 @@ - * \return size_t position - * - */ --size_t buffer_position(buffer_type* buffer); -+extern size_t buffer_position(buffer_type* buffer); - - /** - * Set the buffer's position. -@@ -159,7 +159,7 @@ - * \param[in] pos position - * - */ --void buffer_set_position(buffer_type* buffer, size_t pos); -+extern void buffer_set_position(buffer_type* buffer, size_t pos); - - /** - * Change the buffer's position. -@@ -169,7 +169,7 @@ - * \param[in] count number of bytes to skip - * - */ --void buffer_skip(buffer_type* buffer, ssize_t count); -+extern void buffer_skip(buffer_type* buffer, ssize_t count); - - /** - * Change the buffer's position so that one dname is skipped. -@@ -178,7 +178,7 @@ - * 1 otherwise - * - */ --int buffer_skip_dname(buffer_type* buffer); -+extern int buffer_skip_dname(buffer_type* buffer); - - /** - * Change the buffer's position so that one RR is skipped. -@@ -188,7 +188,7 @@ - * 1 otherwise - * - */ --int buffer_skip_rr(buffer_type* buffer, unsigned qrr); -+extern int buffer_skip_rr(buffer_type* buffer, unsigned qrr); - - /** - * Get the buffer's limit. -@@ -196,7 +196,7 @@ - * \return size_t limit - * - */ --size_t buffer_limit(buffer_type* buffer); -+extern size_t buffer_limit(buffer_type* buffer); - - /** - * Set the buffer's limit. If the buffer's position is greater -@@ -205,7 +205,7 @@ - * \param[in] limit limit - * - */ --void buffer_set_limit(buffer_type* buffer, size_t limit); -+extern void buffer_set_limit(buffer_type* buffer, size_t limit); - - /** - * Get the buffer's capacity. -@@ -213,7 +213,7 @@ - * \return size_t capacity - * - */ --size_t buffer_capacity(buffer_type* buffer); -+extern size_t buffer_capacity(buffer_type* buffer); - - /** - * Return a pointer to the data at the indicated position. -@@ -222,7 +222,7 @@ - * \return uint8_t* pointer to the data at the indicated position - * - */ --uint8_t* buffer_at(buffer_type* buffer, size_t at); -+extern uint8_t* buffer_at(buffer_type* buffer, size_t at); - - /** - * Return a pointer to the data at the beginning of the buffer. -@@ -230,7 +230,7 @@ - * \return uint8_t* pointer to the data at the begin of the buffer - * - */ --uint8_t* buffer_begin(buffer_type* buffer); -+extern uint8_t* buffer_begin(buffer_type* buffer); - - /** - * Return a pointer to the data at the buffer's current position. -@@ -238,7 +238,7 @@ - * \return uint8_t* pointer to the data at the buffer's current position - * - */ --uint8_t* buffer_current(buffer_type* buffer); -+extern uint8_t* buffer_current(buffer_type* buffer); - - /** - * The number of bytes remaining between the buffer's position and limit. -@@ -246,7 +246,7 @@ - * \return size_t remaining number of bytes - * - */ --size_t buffer_remaining(buffer_type* buffer); -+extern size_t buffer_remaining(buffer_type* buffer); - - /** - * Check if the buffer has enough bytes available. -@@ -256,7 +256,7 @@ - * 1 otherwise - * - */ --int buffer_available(buffer_type* buffer, size_t count); -+extern int buffer_available(buffer_type* buffer, size_t count); - - /** - * Write to buffer. -@@ -265,7 +265,7 @@ - * \param[in] count number of bytes to write - * - */ --void buffer_write(buffer_type* buffer, const void* data, size_t count); -+extern void buffer_write(buffer_type* buffer, const void* data, size_t count); - - /** - * Write uint8_t to buffer. -@@ -273,7 +273,7 @@ - * \param[in] data data to write - * - */ --void buffer_write_u8(buffer_type* buffer, uint8_t data); -+extern void buffer_write_u8(buffer_type* buffer, uint8_t data); - - /** - * Write uint16_t to buffer. -@@ -281,7 +281,7 @@ - * \param[in] data data to write - * - */ --void buffer_write_u16(buffer_type* buffer, uint16_t data); -+extern void buffer_write_u16(buffer_type* buffer, uint16_t data); - - /** - * Write uint16_t to buffer at indicated position. -@@ -290,7 +290,7 @@ - * \param[in] data data to write - * - */ --void buffer_write_u16_at(buffer_type* buffer, size_t at, uint16_t data); -+extern void buffer_write_u16_at(buffer_type* buffer, size_t at, uint16_t data); - - /** - * Write uint32_t to buffer. -@@ -298,7 +298,7 @@ - * \param[in] data data to write - * - */ --void buffer_write_u32(buffer_type* buffer, uint32_t data); -+extern void buffer_write_u32(buffer_type* buffer, uint32_t data); - - /** - * Write rdf to buffer. -@@ -306,7 +306,7 @@ - * \param[in] rdf data to write - * - */ --void buffer_write_rdf(buffer_type* buffer, ldns_rdf* rdf); -+extern void buffer_write_rdf(buffer_type* buffer, ldns_rdf* rdf); - - /** - * Write rr to buffer. -@@ -315,7 +315,7 @@ - * \return int 1 if rr fits, 0 otherwise - * - */ --int buffer_write_rr(buffer_type* buffer, ldns_rr* rr); -+extern int buffer_write_rr(buffer_type* buffer, ldns_rr* rr); - - /** - * Read from buffer. -@@ -324,7 +324,7 @@ - * \param[in] count number of bytes to read - * - */ --void buffer_read(buffer_type* buffer, void* data, size_t count); -+extern void buffer_read(buffer_type* buffer, void* data, size_t count); - - /** - * Read uint8_t from buffer. -@@ -332,7 +332,7 @@ - * \return uint8_t read data - * - */ --uint8_t buffer_read_u8(buffer_type* buffer); -+extern uint8_t buffer_read_u8(buffer_type* buffer); - - /** - * Read uint16_t from buffer. -@@ -340,7 +340,7 @@ - * \return uint16_t read data - * - */ --uint16_t buffer_read_u16(buffer_type* buffer); -+extern uint16_t buffer_read_u16(buffer_type* buffer); - - /** - * Read uint32_t from buffer. -@@ -348,7 +348,7 @@ - * \return uint32_t read data - * - */ --uint32_t buffer_read_u32(buffer_type* buffer); -+extern uint32_t buffer_read_u32(buffer_type* buffer); - - /** - * Read dname from buffer. -@@ -358,7 +358,7 @@ - * \return int dname length - * - */ --size_t buffer_read_dname(buffer_type* buffer, uint8_t* dname, -+extern size_t buffer_read_dname(buffer_type* buffer, uint8_t* dname, - unsigned allow_pointers); - - /** -@@ -367,14 +367,14 @@ - * \return uint16_t query id - * - */ --uint16_t buffer_pkt_id(buffer_type* buffer); -+extern uint16_t buffer_pkt_id(buffer_type* buffer); - - /** - * Set random query id in buffer. - * \param[in] buffer buffer - * - */ --void buffer_pkt_set_random_id(buffer_type* buffer); -+extern void buffer_pkt_set_random_id(buffer_type* buffer); - - /** - * Get flags from buffer. -@@ -382,7 +382,7 @@ - * \return uint16_t flags - * - */ --uint16_t buffer_pkt_flags(buffer_type* buffer); -+extern uint16_t buffer_pkt_flags(buffer_type* buffer); - - /** - * Set flags in buffer. -@@ -390,7 +390,7 @@ - * \param[in] flags flags - * - */ --void buffer_pkt_set_flags(buffer_type* buffer, uint16_t flags); -+extern void buffer_pkt_set_flags(buffer_type* buffer, uint16_t flags); - - /** - * Get QR bit from buffer. -@@ -399,21 +399,21 @@ - * 1 if QR bit is set - * - */ --int buffer_pkt_qr(buffer_type* buffer); -+extern int buffer_pkt_qr(buffer_type* buffer); - - /** - * Set QR bit in buffer. - * \param[in] buffer buffer - * - */ --void buffer_pkt_set_qr(buffer_type* buffer); -+extern void buffer_pkt_set_qr(buffer_type* buffer); - - /** - * Clear QR bit in buffer. - * \param[in] buffer buffer - * - */ --void buffer_pkt_clear_qr(buffer_type* buffer); -+extern void buffer_pkt_clear_qr(buffer_type* buffer); - - /** - * Get AA bit from buffer. -@@ -422,14 +422,14 @@ - * 1 if AA bit is set - * - */ --int buffer_pkt_aa(buffer_type* buffer); -+extern int buffer_pkt_aa(buffer_type* buffer); - - /** - * Set AA bit in buffer. - * \param[in] buffer buffer - * - */ --void buffer_pkt_set_aa(buffer_type* buffer); -+extern void buffer_pkt_set_aa(buffer_type* buffer); - - /** - * Get TC bit from buffer. -@@ -438,7 +438,7 @@ - * 1 if TC bit is set - * - */ --int buffer_pkt_tc(buffer_type* buffer); -+extern int buffer_pkt_tc(buffer_type* buffer); - - /** - * Get RD bit from buffer. -@@ -447,7 +447,7 @@ - * 1 if RD bit is set - * - */ --int buffer_pkt_rd(buffer_type* buffer); -+extern int buffer_pkt_rd(buffer_type* buffer); - - /** - * Get RA bit from buffer. -@@ -456,7 +456,7 @@ - * 1 if RA bit is set - * - */ --int buffer_pkt_ra(buffer_type* buffer); -+extern int buffer_pkt_ra(buffer_type* buffer); - - /** - * Get AD bit from buffer. -@@ -465,7 +465,7 @@ - * 1 if AD bit is set - * - */ --int buffer_pkt_ad(buffer_type* buffer); -+extern int buffer_pkt_ad(buffer_type* buffer); - - /** - * Get CD bit from buffer. -@@ -474,7 +474,7 @@ - * 1 if CD bit is set - * - */ --int buffer_pkt_cd(buffer_type* buffer); -+extern int buffer_pkt_cd(buffer_type* buffer); - - /** - * Get OPCODE from buffer. -@@ -482,7 +482,7 @@ - * \return ldns_pkt_opcode OPCODE - * - */ --ldns_pkt_opcode buffer_pkt_opcode(buffer_type* buffer); -+extern ldns_pkt_opcode buffer_pkt_opcode(buffer_type* buffer); - - /** - * Set OPCODE in buffer. -@@ -490,7 +490,7 @@ - * \param[in] opcode OPCODE - * - */ --void buffer_pkt_set_opcode(buffer_type* buffer, ldns_pkt_opcode opcode); -+extern void buffer_pkt_set_opcode(buffer_type* buffer, ldns_pkt_opcode opcode); - - /** - * Get RCODE from buffer. -@@ -498,7 +498,7 @@ - * \return ldns_pkt_rcode RCODE - * - */ --ldns_pkt_rcode buffer_pkt_rcode(buffer_type* buffer); -+extern ldns_pkt_rcode buffer_pkt_rcode(buffer_type* buffer); - - /** - * Set RCODE in buffer. -@@ -506,7 +506,7 @@ - * \param[in] rcode RCODE - * - */ --void buffer_pkt_set_rcode(buffer_type* buffer, ldns_pkt_rcode rcode); -+extern void buffer_pkt_set_rcode(buffer_type* buffer, ldns_pkt_rcode rcode); - - /** - * Look up a descriptive text by each rcode. -@@ -514,7 +514,7 @@ - * \return const char* descriptive text - * - */ --const char* buffer_rcode2str(ldns_pkt_rcode rcode); -+extern const char* buffer_rcode2str(ldns_pkt_rcode rcode); - - /** - * Get QDCOUNT from buffer. -@@ -522,7 +522,7 @@ - * \return uint16_t QDCOUNT - * - */ --uint16_t buffer_pkt_qdcount(buffer_type* buffer); -+extern uint16_t buffer_pkt_qdcount(buffer_type* buffer); - - /** - * Set QDCOUNT in buffer. -@@ -530,7 +530,7 @@ - * \param[in] count QDCOUNT - * - */ --void buffer_pkt_set_qdcount(buffer_type* buffer, uint16_t count); -+extern void buffer_pkt_set_qdcount(buffer_type* buffer, uint16_t count); - - /** - * Get ANCOUNT from buffer. -@@ -538,7 +538,7 @@ - * \return uint16_t ANCOUNT - * - */ --uint16_t buffer_pkt_ancount(buffer_type* buffer); -+extern uint16_t buffer_pkt_ancount(buffer_type* buffer); - - /** - * Set ANCOUNT in buffer. -@@ -546,7 +546,7 @@ - * \param[in] count ANCOUNT - * - */ --void buffer_pkt_set_ancount(buffer_type* buffer, uint16_t count); -+extern void buffer_pkt_set_ancount(buffer_type* buffer, uint16_t count); - - /** - * Get NSCOUNT from buffer. -@@ -554,7 +554,7 @@ - * \return uint16_t NSCOUNT - * - */ --uint16_t buffer_pkt_nscount(buffer_type* buffer); -+extern uint16_t buffer_pkt_nscount(buffer_type* buffer); - - /** - * Set NSCOUNT in buffer. -@@ -562,7 +562,7 @@ - * \param[in] count NSCOUNT - * - */ --void buffer_pkt_set_nscount(buffer_type* buffer, uint16_t count); -+extern void buffer_pkt_set_nscount(buffer_type* buffer, uint16_t count); - - /** - * Get ARCOUNT from buffer. -@@ -570,7 +570,7 @@ - * \return uint16_t ARCOUNT - * - */ --uint16_t buffer_pkt_arcount(buffer_type* buffer); -+extern uint16_t buffer_pkt_arcount(buffer_type* buffer); - - /** - * Set ARCOUNT in buffer. -@@ -578,7 +578,7 @@ - * \param[in] count ARCOUNT - * - */ --void buffer_pkt_set_arcount(buffer_type* buffer, uint16_t count); -+extern void buffer_pkt_set_arcount(buffer_type* buffer, uint16_t count); - - /** - * Make a new query. -@@ -588,7 +588,7 @@ - * \param[in] qclass qclass - * - */ --void -+extern void - buffer_pkt_query(buffer_type* buffer, ldns_rdf* qname, ldns_rr_type qtype, - ldns_rr_class qclass); - -@@ -599,7 +599,7 @@ - * \param[in] qclass qclass - * - */ --void -+extern void - buffer_pkt_notify(buffer_type* buffer, ldns_rdf* qname, ldns_rr_class qclass); - - /** -@@ -608,7 +608,7 @@ - * \param[in] allocator memory allocator - * - */ --void buffer_cleanup(buffer_type* buffer); -+extern void buffer_cleanup(buffer_type* buffer); - - /** UTIL **/ - -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/edns.h opendnssec-2.1.6/signer/src/wire/edns.h ---- opendnssec-2.1.6-orig/signer/src/wire/edns.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/edns.h 2020-02-18 23:08:38.120360767 -0500 -@@ -87,7 +87,7 @@ - * \param[in] max_length maximum length. - * - */ --void edns_init(edns_data_type* data, uint16_t max_length); -+extern void edns_init(edns_data_type* data, uint16_t max_length); - - /** - * Create new EDNS RR. -@@ -95,7 +95,7 @@ - * \return edns_rr_type* EDNS RR. - * - */ --edns_rr_type* edns_rr_create(void); -+extern edns_rr_type* edns_rr_create(void); - - - /** -@@ -103,7 +103,7 @@ - * \param[in] err EDNS record. - * - */ --void edns_rr_reset(edns_rr_type* err); -+extern void edns_rr_reset(edns_rr_type* err); - - /** - * Parse EDNS OPT RR. -@@ -112,7 +112,7 @@ - * \return int 1 if EDNS and valid, 0 otherwise. - * - */ --int edns_rr_parse(edns_rr_type* err, buffer_type* buffer); -+extern int edns_rr_parse(edns_rr_type* err, buffer_type* buffer); - - /** - * The amount of space to reserve in the response for the EDNS data. -@@ -120,9 +120,9 @@ - * \return size_t amount of space to reserve. - * - */ --size_t edns_rr_reserved_space(edns_rr_type* err); -+extern size_t edns_rr_reserved_space(edns_rr_type* err); - --void edns_rr_cleanup(edns_rr_type* err); -+extern void edns_rr_cleanup(edns_rr_type* err); - - - #endif /* WIRE_EDNS_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/listener.h opendnssec-2.1.6/signer/src/wire/listener.h ---- opendnssec-2.1.6-orig/signer/src/wire/listener.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/listener.h 2020-02-18 23:08:38.121360780 -0500 -@@ -89,7 +89,7 @@ - * \return listener_type* listener - * - */ --listener_type* listener_create(void); -+extern listener_type* listener_create(void); - - /** - * Push an interface to the listener. -@@ -100,7 +100,7 @@ - * \return interface_type* added interface - * - */ --interface_type* listener_push(listener_type* list, char* address, int family, -+extern interface_type* listener_push(listener_type* list, char* address, int family, - const char* port); - - /** -@@ -108,13 +108,13 @@ - * \param[in] i interface - * - */ --void interface_cleanup(interface_type* i); -+extern void interface_cleanup(interface_type* i); - - /** - * Clean up listener. - * \param[in] listener listener to clean up - * - */ --void listener_cleanup(listener_type* listener); -+extern void listener_cleanup(listener_type* listener); - - #endif /* WIRE_LISTENER_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/netio.h opendnssec-2.1.6/signer/src/wire/netio.h ---- opendnssec-2.1.6-orig/signer/src/wire/netio.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/netio.h 2020-02-18 23:08:38.121360780 -0500 -@@ -162,7 +162,7 @@ - * \return netio_type* netio instance - * - */ --netio_type* netio_create(void); -+extern netio_type* netio_create(void); - - /* - * Add a new handler to netio. -@@ -170,7 +170,7 @@ - * \param[in] handler handler - * - */ --void netio_add_handler(netio_type* netio, netio_handler_type* handler); -+extern void netio_add_handler(netio_type* netio, netio_handler_type* handler); - - /* - * Remove the handler from netio. -@@ -178,7 +178,7 @@ - * \param[in] handler handler - * - */ --void netio_remove_handler(netio_type* netio, netio_handler_type* handler); -+extern void netio_remove_handler(netio_type* netio, netio_handler_type* handler); - - /* - * Retrieve the current time (using gettimeofday(2)). -@@ -186,7 +186,7 @@ - * \return const struct timespec* current time - * - */ --const struct timespec* netio_current_time(netio_type* netio); -+extern const struct timespec* netio_current_time(netio_type* netio); - - /* - * Check for events and dispatch them to the handlers. -@@ -198,7 +198,7 @@ - * and -1 on error (with errno set appropriately). - * - */ --int netio_dispatch(netio_type* netio, const struct timespec* timeout, -+extern int netio_dispatch(netio_type* netio, const struct timespec* timeout, - const sigset_t* sigmask); - - /** -@@ -206,8 +206,8 @@ - * \param[in] netio netio instance - * - */ --void netio_cleanup(netio_type* netio); --void netio_cleanup_shallow(netio_type* netio); -+extern void netio_cleanup(netio_type* netio); -+extern void netio_cleanup_shallow(netio_type* netio); - - /** - * Add timespecs. -@@ -215,7 +215,7 @@ - * \param[in] right right - * - */ --void timespec_add(struct timespec* left, const struct timespec* right); -+extern void timespec_add(struct timespec* left, const struct timespec* right); - - - #ifdef __cplusplus -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/notify.h opendnssec-2.1.6/signer/src/wire/notify.h ---- opendnssec-2.1.6-orig/signer/src/wire/notify.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/notify.h 2020-02-18 23:08:38.121360780 -0500 -@@ -74,7 +74,7 @@ - * \return notify_type* notify structure. - * - */ --notify_type* notify_create(xfrhandler_type* xfrhandler, zone_type* zone); -+extern notify_type* notify_create(xfrhandler_type* xfrhandler, zone_type* zone); - - /** - * Enable notify. -@@ -82,20 +82,20 @@ - * \param[in] soa current soa - * - */ --void notify_enable(notify_type* notify, ldns_rr* soa); -+extern void notify_enable(notify_type* notify, ldns_rr* soa); - - /** - * Send notify. - * \param[in] notify notify structure - * - */ --void notify_send(notify_type* notify); -+extern void notify_send(notify_type* notify); - - /** - * Cleanup notify structure. - * \param[in] notify notify structure. - * - */ --void notify_cleanup(notify_type* notify); -+extern void notify_cleanup(notify_type* notify); - - #endif /* WIRE_NOTIFY_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/query.h opendnssec-2.1.6/signer/src/wire/query.h ---- opendnssec-2.1.6-orig/signer/src/wire/query.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/query.h 2020-02-18 23:08:38.121360780 -0500 -@@ -104,14 +104,14 @@ - * \return query_type* query - * - */ --query_type* query_create(void); -+extern query_type* query_create(void); - - /** - * Prepare response. - * \param[in] q query - * - */ --void query_prepare(query_type* q); -+extern void query_prepare(query_type* q); - - /** - * Process query. -@@ -120,7 +120,7 @@ - * \return query_state state of the query - * - */ --query_state query_process(query_type* q, engine_type* engine); -+extern query_state query_process(query_type* q, engine_type* engine); - - /** - * Reset query. -@@ -129,7 +129,7 @@ - * \param[in] is_tcp 1 if tcp query - * - */ --void query_reset(query_type* q, size_t maxlen, int is_tcp); -+extern void query_reset(query_type* q, size_t maxlen, int is_tcp); - - /** - * Add optional RRs to query. -@@ -137,7 +137,7 @@ - * \param[in] engine signer engine - * - */ --void query_add_optional(query_type* q, engine_type* engine); -+extern void query_add_optional(query_type* q, engine_type* engine); - - /** - * Add RR to query. -@@ -146,13 +146,13 @@ - * \return int 1 if ok, 0 if overflow. - * - */ --int query_add_rr(query_type* q, ldns_rr* rr); -+extern int query_add_rr(query_type* q, ldns_rr* rr); - - /** - * Cleanup query. - * \param[in] q query - * - */ --void query_cleanup(query_type* q); -+extern void query_cleanup(query_type* q); - - #endif /* WIRE_QUERY_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/sock.h opendnssec-2.1.6/signer/src/wire/sock.h ---- opendnssec-2.1.6-orig/signer/src/wire/sock.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/sock.h 2020-02-18 23:08:38.121360780 -0500 -@@ -99,7 +99,7 @@ - * \return ods_status status - * - */ --ods_status sock_listen(socklist_type* sockets, listener_type* listener); -+extern ods_status sock_listen(socklist_type* sockets, listener_type* listener); - - /** - * Handle incoming udp queries. -@@ -108,7 +108,7 @@ - * \param[in] event_types the types of events that should be checked for - * - */ --void sock_handle_udp(netio_type* netio, netio_handler_type* handler, -+extern void sock_handle_udp(netio_type* netio, netio_handler_type* handler, - netio_events_type event_types); - - /** -@@ -118,7 +118,7 @@ - * \param[in] event_types the types of events that should be checked for - * - */ --void sock_handle_tcp_accept(netio_type* netio, netio_handler_type* handler, -+extern void sock_handle_tcp_accept(netio_type* netio, netio_handler_type* handler, - netio_events_type event_types); - - /** -@@ -128,7 +128,7 @@ - * \param[in] event_types the types of events that should be checked for - * - */ --void sock_handle_tcp_read(netio_type* netio, netio_handler_type* handler, -+extern void sock_handle_tcp_read(netio_type* netio, netio_handler_type* handler, - netio_events_type event_types); - - /** -@@ -138,7 +138,7 @@ - * \param[in] event_types the types of events that should be checked for - * - */ --void sock_handle_tcp_write(netio_type* netio, netio_handler_type* handler, -+extern void sock_handle_tcp_write(netio_type* netio, netio_handler_type* handler, - netio_events_type event_types); - - #endif /* WIRE_SOCK_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/tcpset.h opendnssec-2.1.6/signer/src/wire/tcpset.h ---- opendnssec-2.1.6-orig/signer/src/wire/tcpset.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/tcpset.h 2020-02-18 23:08:38.121360780 -0500 -@@ -77,7 +77,7 @@ - * \return tcp_conn_type* TCP connection. - * - */ --tcp_conn_type* tcp_conn_create(void); -+extern tcp_conn_type* tcp_conn_create(void); - - /** - * Create a set of tcp connections. -@@ -85,14 +85,14 @@ - * \return tcp_set_type* set of tcp connection. - * - */ --tcp_set_type* tcp_set_create(void); -+extern tcp_set_type* tcp_set_create(void); - - /** - * Make tcp connection ready for reading. - * \param[in] tcp tcp connection - * - */ --void tcp_conn_ready(tcp_conn_type* tcp); -+extern void tcp_conn_ready(tcp_conn_type* tcp); - - /* - * Read from a tcp connection. -@@ -104,7 +104,7 @@ - * 1 on completed read. - * - */ --int tcp_conn_read(tcp_conn_type* tcp); -+extern int tcp_conn_read(tcp_conn_type* tcp); - - /* - * Write to a tcp connection. -@@ -116,7 +116,7 @@ - * 1 on completed write. - * - */ --int tcp_conn_write(tcp_conn_type* tcp); -+extern int tcp_conn_write(tcp_conn_type* tcp); - - /** - * Clean up set of tcp connections. -@@ -124,6 +124,6 @@ - * \param[in] allocator memory allocator - * - */ --void tcp_set_cleanup(tcp_set_type* set); -+extern void tcp_set_cleanup(tcp_set_type* set); - - #endif /* WIRE_TCPSET_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/tsig.h opendnssec-2.1.6/signer/src/wire/tsig.h ---- opendnssec-2.1.6-orig/signer/src/wire/tsig.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/tsig.h 2020-02-18 23:08:38.121360780 -0500 -@@ -150,27 +150,27 @@ - * \return ods_status status - * - */ --ods_status tsig_handler_init(void); -+extern ods_status tsig_handler_init(void); - - /** - * Clean up TSIG handler. - * - */ --void tsig_handler_cleanup(void); -+extern void tsig_handler_cleanup(void); - - /** - * Add key to TSIG handler. - * \param[in] key tsig key - * - */ --void tsig_handler_add_key(tsig_key_type* key); -+extern void tsig_handler_add_key(tsig_key_type* key); - - /** - * Add algorithm to TSIG handler. - * \param[in] algo tsig algorithm - * - */ --void tsig_handler_add_algo(tsig_algo_type* algo); -+extern void tsig_handler_add_algo(tsig_algo_type* algo); - - /** - * Create new TSIG. -@@ -181,7 +181,7 @@ - * \return tsig_type* TSIG - * - */ --tsig_type* tsig_create(char* name, char* algo, -+extern tsig_type* tsig_create(char* name, char* algo, - char* secret); - - /** -@@ -191,7 +191,7 @@ - * \return tsig_type* TSIG - * - */ --tsig_type* tsig_lookup_by_name(tsig_type* tsig, const char* name); -+extern tsig_type* tsig_lookup_by_name(tsig_type* tsig, const char* name); - - /** - * Lookup TSIG algorithm by name. -@@ -199,7 +199,7 @@ - * \return tsig_algo_type* TSIG algorithm - * - */ --tsig_algo_type* tsig_lookup_algo(const char* name); -+extern tsig_algo_type* tsig_lookup_algo(const char* name); - - /** - * Create new TSIG RR. -@@ -207,7 +207,7 @@ - * \return tsig_rr_type* TSIG RR - * - */ --tsig_rr_type* tsig_rr_create(void); -+extern tsig_rr_type* tsig_rr_create(void); - - /** - * Reset TSIG RR. -@@ -216,7 +216,7 @@ - * \param[in] key tsig key - * - */ --void tsig_rr_reset(tsig_rr_type* trr, tsig_algo_type* algo, tsig_key_type* key); -+extern void tsig_rr_reset(tsig_rr_type* trr, tsig_algo_type* algo, tsig_key_type* key); - - /** - * Find TSIG RR. -@@ -225,7 +225,7 @@ - * \return int 1 if not present or present and valid, 0 otherwise. - * - */ --int tsig_rr_find(tsig_rr_type* trr, buffer_type* buffer); -+extern int tsig_rr_find(tsig_rr_type* trr, buffer_type* buffer); - - /** - * Parse TSIG RR. -@@ -234,7 +234,7 @@ - * \return int 1 if not TSIG RR or TSIG RR and valid, 0 otherwise. - * - */ --int tsig_rr_parse(tsig_rr_type* trr, buffer_type* buffer); -+extern int tsig_rr_parse(tsig_rr_type* trr, buffer_type* buffer); - - /** - * Lookup TSIG RR. -@@ -242,14 +242,14 @@ - * \return int 1 if succeeded, 0 if unknown - * - */ --int tsig_rr_lookup(tsig_rr_type* trr); -+extern int tsig_rr_lookup(tsig_rr_type* trr); - - /** - * Prepare TSIG RR. - * \param[in] trr TSIG RR - * - */ --void tsig_rr_prepare(tsig_rr_type* trr); -+extern void tsig_rr_prepare(tsig_rr_type* trr); - - /** - * Update TSIG RR. -@@ -260,14 +260,14 @@ - * query idfrom TSIG. - * - */ --void tsig_rr_update(tsig_rr_type* trr, buffer_type* buffer, size_t length); -+extern void tsig_rr_update(tsig_rr_type* trr, buffer_type* buffer, size_t length); - - /** - * Sign TSIG RR. - * \param[in] trr TSIG RR - * - */ --void tsig_rr_sign(tsig_rr_type* trr); -+extern void tsig_rr_sign(tsig_rr_type* trr); - - /** - * Verify TSIG RR. -@@ -275,7 +275,7 @@ - * \return int 1 if verified, 0 on error - * - */ --int tsig_rr_verify(tsig_rr_type* trr); -+extern int tsig_rr_verify(tsig_rr_type* trr); - - /** - * Append TSIG RR. -@@ -283,7 +283,7 @@ - * \param[in] buffer packet buffer - * - */ --void tsig_rr_append(tsig_rr_type* trr, buffer_type* buffer); -+extern void tsig_rr_append(tsig_rr_type* trr, buffer_type* buffer); - - /* - * The amount of space to reserve in the response for the TSIG data. -@@ -291,14 +291,14 @@ - * \return size_t reserved space size - * - */ --size_t tsig_rr_reserved_space(tsig_rr_type *trr); -+extern size_t tsig_rr_reserved_space(tsig_rr_type *trr); - - /** - * Reply with error TSIG RR. - * \param[in] trr TSIG RR - * - */ --void tsig_rr_error(tsig_rr_type* trr); -+extern void tsig_rr_error(tsig_rr_type* trr); - - /** - * Get human readable TSIG error code. -@@ -306,7 +306,7 @@ - * \return const char* TSIG status - * - */ --const char* tsig_status2str(tsig_status status); -+extern const char* tsig_status2str(tsig_status status); - - /** - * Get human readable TSIG error code. -@@ -314,21 +314,21 @@ - * \return const char* readable error code - * - */ --const char* tsig_strerror(uint16_t error); -+extern const char* tsig_strerror(uint16_t error); - - /** - * Free TSIG RR. - * \param[in] trr TSIG RR - * - */ --void tsig_rr_free(tsig_rr_type* trr); -+extern void tsig_rr_free(tsig_rr_type* trr); - - /** - * Cleanup TSIG RR - * \param[in] trr TSIG RR - * - */ --void tsig_rr_cleanup(tsig_rr_type* trr); -+extern void tsig_rr_cleanup(tsig_rr_type* trr); - - /** - * Clean up TSIG. -@@ -336,6 +336,6 @@ - * \param[in] allocator memory allocator - * - */ --void tsig_cleanup(tsig_type* tsig); -+extern void tsig_cleanup(tsig_type* tsig); - - #endif /* WIRE_TSIG_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/tsig-openssl.h opendnssec-2.1.6/signer/src/wire/tsig-openssl.h ---- opendnssec-2.1.6-orig/signer/src/wire/tsig-openssl.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/tsig-openssl.h 2020-02-18 23:08:38.122360794 -0500 -@@ -44,13 +44,13 @@ - * \return ods_status status - * - */ --ods_status tsig_handler_openssl_init(void); -+extern ods_status tsig_handler_openssl_init(void); - - /** - * Finalize OpenSSL support for TSIG. - * - */ --void tsig_handler_openssl_finalize(void); -+extern void tsig_handler_openssl_finalize(void); - - #endif /* HAVE_SSL */ - #endif /* WIRE_TSIG_OPENSSL_H */ -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/xfrd.c opendnssec-2.1.6/signer/src/wire/xfrd.c ---- opendnssec-2.1.6-orig/signer/src/wire/xfrd.c 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/xfrd.c 2020-02-18 23:08:38.122360794 -0500 -@@ -1549,7 +1549,7 @@ - xfrd->master->ixfr_disabled = time_now(); - ods_log_verbose("[%s] disable ixfr requests for %s from now (%lu)", - xfrd_str, xfrd->master->address, (unsigned long)xfrd->master->ixfr_disabled); -- /* break; */ -+ /* break; FALL THROUGH */ - case XFRD_PKT_BAD: - default: - ods_log_debug("[%s] tcp read %s: release connection", xfrd_str, -diff -Naur opendnssec-2.1.6-orig/signer/src/wire/xfrd.h opendnssec-2.1.6/signer/src/wire/xfrd.h ---- opendnssec-2.1.6-orig/signer/src/wire/xfrd.h 2020-02-10 12:25:11.000000000 -0500 -+++ opendnssec-2.1.6/signer/src/wire/xfrd.h 2020-02-18 23:08:38.122360794 -0500 -@@ -147,7 +147,7 @@ - * \return xfrd_type* zone transfer structure. - * - */ --xfrd_type* xfrd_create(xfrhandler_type* xfrhandler, zone_type* zone); -+extern xfrd_type* xfrd_create(xfrhandler_type* xfrhandler, zone_type* zone); - - /** - * Set timeout for zone transfer to now. -@@ -177,7 +177,7 @@ - * \return socklen_t length of address - * - */ --socklen_t xfrd_acl_sockaddr_to(acl_type* acl, -+extern socklen_t xfrd_acl_sockaddr_to(acl_type* acl, - struct sockaddr_storage* to); - - /** -@@ -186,6 +186,6 @@ - * \param[in] backup backup transfer variables. - * - */ --void xfrd_cleanup(xfrd_type* xfrd, int backup); -+extern void xfrd_cleanup(xfrd_type* xfrd, int backup); - - #endif /* WIRE_XFRD_H */ diff --git a/SOURCES/opendnssec-2.1.6-sqlite.patch b/SOURCES/opendnssec-2.1.6-sqlite.patch deleted file mode 100644 index a718b83..0000000 --- a/SOURCES/opendnssec-2.1.6-sqlite.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/enforcer/src/ods-migrate.c b/enforcer/src/ods-migrate.c -index aece5058a..c440a36af 100644 ---- a/enforcer/src/ods-migrate.c -+++ b/enforcer/src/ods-migrate.c -@@ -97,10 +97,13 @@ dblayer_sqlite3_initialize(void) - char const *error; - - dlerror(); -- handle = dlopen("libsqlite3.so", RTLD_NOW); -+ handle = dlopen("libsqlite3.so.0", RTLD_NOW); - if ((error = dlerror()) != NULL) { -- printf("Failed to load sqlite3 library. dlerror(): %s\n", error); -- exit(1); -+ handle = dlopen("libsqlite3.so", RTLD_NOW); /* unversioned is a -devel package file on some distros */ -+ if ((error = dlerror()) != NULL) { -+ printf("Failed to load sqlite3 library. dlerror(): %s\n", error); -+ exit(1); -+ } - } - - dblayer_sqlite3.sqlite3_prepare_v2 = (int(*)(sqlite3*, const char*, int, sqlite3_stmt**, const char **))functioncast(dlsym(handle, "sqlite3_prepare_v2")); diff --git a/SPECS/opendnssec.spec b/SPECS/opendnssec.spec index 7529458..88b2320 100644 --- a/SPECS/opendnssec.spec +++ b/SPECS/opendnssec.spec @@ -3,8 +3,8 @@ Summary: DNSSEC key and zone management software Name: opendnssec -Version: 2.1.6 -Release: 2%{?prever}%{?dist} +Version: 2.1.7 +Release: 1%{?prever}%{?dist} License: BSD Url: http://www.opendnssec.org/ Source0: http://www.opendnssec.org/files/source/%{?prever:testing/}%{name}-%{version}%{?prever}.tar.gz @@ -17,9 +17,6 @@ Source6: opendnssec.cron Source7: opendnssec-2.1.sqlite_convert.sql Source8: opendnssec-2.1.sqlite_rpmversion.sql -Patch1: opendnssec-2.1.6-gcc10-fixups.patch -Patch2: opendnssec-2.1.6-sqlite.patch - Requires: opencryptoki, softhsm >= 2.5.0 , systemd-units Requires: libxml2, libxslt sqlite BuildRequires: gcc @@ -49,8 +46,6 @@ name server. It requires a PKCS#11 crypto module library, such as softhsm %setup -q -n %{name}-%{version}%{?prever} # bump default policy ZSK keysize to 2048 sed -i "s/1024/2048/" conf/kasp.xml.in -%patch1 -p1 -%patch2 -p1 %build #export LDFLAGS="-Wl,-z,relro,-z,now -pie -specs=/usr/lib/rpm/redhat/redhat-hardened-ld" @@ -182,6 +177,10 @@ ods-enforcer update all >/dev/null 2>/dev/null ||: %systemd_postun_with_restart ods-signerd.service %changelog +* Fri Dec 04 2020 Alexander Bokovoy - 2.1.7-1 +- Upstream release 2.1.7 +- Resolves: rhbz#1904484 + * Fri May 08 2020 Paul Wouters - 2.1.6-2 - Resolves: rhbz#1831732 AVC avc: denied { dac_override } for comm="ods-enforcerd