Merge the API definitions of the objdb into the corosync api definition.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1603 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
Steven Dake 2008-07-24 01:30:29 +00:00
parent 742d4d82eb
commit c04cc0f1d2
14 changed files with 300 additions and 159 deletions

View File

@ -23,7 +23,7 @@
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# SUBSTITUTE GOODS OR ENGINES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
@ -53,27 +53,27 @@ endif
include $(srcdir)Makefile.inc
SBINDIR=$(PREFIX)/sbin
INCLUDEDIR=$(PREFIX)/include/openais
INCLUDEDIR_TOTEM=$(PREFIX)/include/openais/totem
INCLUDEDIR_LCR=$(PREFIX)/include/openais/lcr
INCLUDEDIR_SERVICE=$(PREFIX)/include/openais/service
INCLUDEDIR=$(PREFIX)/include/corosync
INCLUDEDIR_TOTEM=$(PREFIX)/include/corosync/totem
INCLUDEDIR_LCR=$(PREFIX)/include/corosync/lcr
INCLUDEDIR_ENGINE=$(PREFIX)/include/corosync/service
MANDIR=$(PREFIX)/share/man
ETCDIR=/etc
ARCH=$(shell uname -p)
ifeq (,$(findstring 64,$(ARCH)))
LIBDIR=$(PREFIX)/lib/openais
LIBDIR=$(PREFIX)/lib/corosync
else
LIBDIR=$(PREFIX)/lib64/openais
LIBDIR=$(PREFIX)/lib64/corosync
endif
ifeq (s390,$(ARCH))
LIBDIR=$(PREFIX)/lib/openais
LIBDIR=$(PREFIX)/lib/corosync
endif
ifeq (s390x,$(ARCH))
LIBDIR=$(PREFIX)/lib64/openais
LIBDIR=$(PREFIX)/lib64/corosync
endif
ifeq (ia64,$(ARCH))
LIBDIR=$(PREFIX)/lib/openais
LIBDIR=$(PREFIX)/lib/corosync
endif
SUBDIRS:=$(builddir)lcr $(builddir)lib $(builddir)exec $(builddir)test
@ -105,7 +105,7 @@ help:
@echo
@echo Targets:
@echo " all - build all targets"
@echo " install - install openais onto your system"
@echo " install - install corosync onto your system"
@echo " clean - remove generated files"
@echo " doxygen - doxygen html docs"
@echo
@ -139,10 +139,9 @@ install: all
mkdir -p $(DESTDIR)$(INCLUDEDIR)
mkdir -p $(DESTDIR)$(INCLUDEDIR_TOTEM)
mkdir -p $(DESTDIR)$(INCLUDEDIR_LCR)
mkdir -p $(DESTDIR)$(INCLUDEDIR_SERVICE)
mkdir -p $(DESTDIR)$(INCLUDEDIR_ENGINE)
mkdir -p $(DESTDIR)$(LIBDIR)
mkdir -p $(DESTDIR)$(LCRSODIR)
mkdir -p $(DESTDIR)$(ETCDIR)/ais
mkdir -p $(DESTDIR)$(MANDIR)/man3
mkdir -p $(DESTDIR)$(MANDIR)/man5
mkdir -p $(DESTDIR)$(MANDIR)/man8
@ -181,38 +180,33 @@ install: all
) \
done
echo $(LIBDIR) > "$(DESTDIR)$(ETCDIR)/ld.so.conf.d/openais-$(ARCH).conf"
echo $(LIBDIR) > "$(DESTDIR)$(ETCDIR)/ld.so.conf.d/corosync-$(ARCH).conf"
install -m 755 $(builddir)exec/*lcrso $(DESTDIR)$(LCRSODIR)
install -m 755 $(builddir)exec/aisexec $(DESTDIR)$(SBINDIR)
install -m 755 $(builddir)services/*lcrso $(DESTDIR)$(LCRSODIR)
install -m 755 $(builddir)exec/corosync $(DESTDIR)$(SBINDIR)
install -m 700 $(builddir)exec/keygen $(DESTDIR)$(SBINDIR)/ais-keygen
if [ ! -f $(DESTDIR)$(ETCDIR)/ais/openais.conf ] ; then \
install -m 644 $(srcdir)conf/openais.conf $(DESTDIR)$(ETCDIR)/ais ; \
fi
if [ ! -f $(DESTDIR)$(ETCDIR)/ais/amf.conf ] ; then \
install -m 644 $(srcdir)conf/amf.conf $(DESTDIR)$(ETCDIR)/ais ; \
if [ ! -f $(DESTDIR)$(ETCDIR)/penais.conf ] ; then \
install -m 644 $(srcdir)conf/corosync.conf $(DESTDIR)$(ETCDIR) ; \
fi
for aHeader in $(AIS_HEADERS); do \
install -m 644 $(srcdir)include/$$aHeader $(DESTDIR)$(INCLUDEDIR); \
done
install -m 644 $(srcdir)exec/aispoll.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/coropoll.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totempg.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totem.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totemip.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)lcr/lcr_ckpt.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)lcr/lcr_comp.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)lcr/lcr_ifact.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)exec/service.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/timer.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/flow.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/ipc.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/objdb.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/logsys.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/config.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)include/swab.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)include/coroapi.h $(DESTDIR)$(INCLUDEDIR_ENGINE)
install -m 644 $(srcdir)exec/objdb.h $(DESTDIR)$(INCLUDEDIR_ENGINE)
install -m 644 $(srcdir)exec/logsys.h $(DESTDIR)$(INCLUDEDIR_ENGINE)
install -m 644 $(srcdir)exec/config.h $(DESTDIR)$(INCLUDEDIR_ENGINE)
install -m 644 $(srcdir)include/swab.h $(DESTDIR)$(INCLUDEDIR_ENGINE)
install -m 644 $(srcdir)man/*.3 $(DESTDIR)$(MANDIR)/man3
install -m 644 $(srcdir)man/*.5 $(DESTDIR)$(MANDIR)/man5
install -m 644 $(srcdir)man/*.8 $(DESTDIR)$(MANDIR)/man8

View File

@ -0,0 +1,31 @@
# Please read the openais.conf.5 manual page
totem {
version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 192.168.1.1
mcastaddr: 226.94.1.1
mcastport: 5405
}
}
logging {
fileline: off
to_stderr: yes
to_file: yes
to_syslog: yes
logfile: /tmp/openais.log
debug: off
timestamp: on
logger {
ident: AMF
debug: off
tags: enter|leave|trace1|trace2|trace3|trace4|trace6
}
}
amf {
mode: disabled
}

View File

@ -63,10 +63,10 @@ LCR_SRC = vsf_ykd.c objdb.c coroparse.c
LCR_OBJS =aisparser.o vsf_ykd.o objdb.o coroparse.o
# main executive objects
MAIN_SRC = main.c mempool.c util.c sync.c service.c ipc.c flow.c timer.c \
totemconfig.c mainconfig.c
MAIN_OBJS = main.o mempool.o util.o sync.o service.o ipc.o flow.o timer.o \
totemconfig.o mainconfig.o ../lcr/lcr_ifact.o
MAIN_SRC = main.c mempool.c util.c sync.c apidef.c service.c ipc.c flow.c \
timer.c totemconfig.c mainconfig.c
MAIN_OBJS = main.o mempool.o util.o sync.o apidef.o service.o ipc.o flow.o \
timer.o totemconfig.o mainconfig.o ../lcr/lcr_ifact.o
ifeq (${BUILD_DYNAMIC}, 1)
#EXEC_OBJS = $(TOTEM_OBJS) $(LOGSYS_OBJS) $(MAIN_OBJS)

View File

@ -77,7 +77,6 @@
#include "tlist.h"
#include "ipc.h"
#include "flow.h"
#include "service.h"
#include "sync.h"
#include "swab.h"
#include "objdb.h"
@ -85,6 +84,7 @@
#include "tlist.h"
#include "logsys.h"
#include "coroapi.h"
#include "service.h"
#include "util.h"

View File

@ -67,7 +67,6 @@
#include "mainconfig.h"
#include "totemconfig.h"
#include "main.h"
#include "service.h"
#include "sync.h"
#include "swab.h"
#include "objdb.h"
@ -79,8 +78,10 @@
#include "logsys.h"
#include "util.h"
#include "flow.h"
#include "version.h"
#include "coroapi.h"
#include "apidef.h"
#include "service.h"
#include "version.h"
LOGSYS_DECLARE_SYSTEM ("corosync",
LOG_MODE_OUTPUT_STDERR | LOG_MODE_OUTPUT_SYSLOG_THREADED | LOG_MODE_BUFFER_BEFORE_CONFIG,
@ -109,6 +110,8 @@ static struct config_iface_ver0 *config_modules[MAX_DYNAMIC_SERVICES];
static struct objdb_iface_ver0 *objdb = NULL;
static struct corosync_api_v1 *api = NULL;
unsigned long long *(*main_clm_get_by_nodeid) (unsigned int node_id);
static void sigusr2_handler (int num)
@ -124,8 +127,8 @@ static void sigusr2_handler (int num)
static void *aisexec_exit (void *arg)
{
if(objdb) {
openais_service_unlink_all (objdb);
if (api) {
openais_service_unlink_all (api);
}
#ifdef DEBUG_MEMPOOL
@ -559,6 +562,12 @@ int main (int argc, char **argv)
objdb->objdb_init ();
/*
* Initialize the corosync_api_v1 definition
*/
apidef_init (objdb);
api = apidef_get ();
num_config_modules = 0;
/*
@ -689,7 +698,7 @@ int main (int argc, char **argv)
/*
* This must occur after totempg is initialized because "this_ip" must be set
*/
res = openais_service_defaults_link_and_init (objdb);
res = openais_service_defaults_link_and_init (api);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, "Could not initialize default services\n");
openais_exit_error (AIS_DONE_INIT_SERVICES);

View File

@ -47,7 +47,6 @@
#include "mempool.h"
#include "logsys.h"
#include "totem.h"
#include "service.h"
static char error_string_response[512];

View File

@ -39,9 +39,7 @@
#include "../lcr/lcr_ifact.h"
#include "swab.h"
#include "objdb.h"
#include "totem.h"
#include "service.h"
#include "mainconfig.h"
#include "util.h"
#include "logsys.h"
@ -51,8 +49,8 @@
#include "totemip.h"
#include "main.h"
#include "ipc.h"
#include "../include/coroapi.h"
#include "service.h"
LOGSYS_DECLARE_SUBSYS ("SERV", LOG_INFO);
@ -61,34 +59,6 @@ struct default_service {
int ver;
};
static struct corosync_api_v1 corosync_api_v1 = {
.timer_add_duration = openais_timer_add_duration,
.timer_add_absolute = openais_timer_add_absolute,
.timer_delete = openais_timer_delete,
.timer_time_get = NULL,
.ipc_source_set = message_source_set,
.ipc_source_is_local = message_source_is_local,
.ipc_private_data_get = openais_conn_private_data_get,
.ipc_response_send = NULL,
.ipc_dispatch_send = NULL,
.ipc_conn_send_response = openais_conn_send_response,
.ipc_conn_partner_get = openais_conn_partner_get,
.ipc_refcnt_inc = openais_ipc_flow_control_local_increment,
.ipc_refcnt_dec = openais_ipc_flow_control_local_decrement,
.ipc_fc_create = openais_ipc_flow_control_create,
.ipc_fc_destroy = openais_ipc_flow_control_destroy,
.totem_nodeid_get = totempg_my_nodeid_get,
.totem_ring_reenable = totempg_ring_reenable,
.totem_mcast = main_mcast,
.totem_send_ok = main_send_ok,
.totem_ifaces_get = totempg_ifaces_get,
.totem_ifaces_print = totempg_ifaces_print,
.totem_ip_print = totemip_print,
.service_link_and_init = openais_service_link_and_init,
.service_unlink_and_exit = openais_service_unlink_and_exit,
.error_memory_failure = NULL
};
static struct default_service default_services[] = {
{
.name = "corosync_evs",
@ -113,7 +83,7 @@ struct corosync_service_engine *ais_service[SERVICE_HANDLER_MAXIMUM_COUNT];
static unsigned int object_internal_configuration_handle;
static unsigned int default_services_requested (struct objdb_iface_ver0 *objdb)
static unsigned int default_services_requested (struct corosync_api_v1 *api)
{
unsigned int object_service_handle;
char *value;
@ -121,14 +91,14 @@ static unsigned int default_services_requested (struct objdb_iface_ver0 *objdb)
/*
* Don't link default services if they have been disabled
*/
objdb->object_find_reset (OBJECT_PARENT_HANDLE);
if (objdb->object_find (
api->object_find_reset (OBJECT_PARENT_HANDLE);
if (api->object_find (
OBJECT_PARENT_HANDLE,
"aisexec",
strlen ("aisexec"),
&object_service_handle) == 0) {
if ( ! objdb->object_key_get (object_service_handle,
if ( ! api->object_key_get (object_service_handle,
"defaultservices",
strlen ("defaultservices"),
(void *)&value,
@ -143,7 +113,7 @@ static unsigned int default_services_requested (struct objdb_iface_ver0 *objdb)
}
unsigned int openais_service_link_and_init (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *api,
char *service_name,
unsigned int service_ver)
{
@ -180,40 +150,40 @@ unsigned int openais_service_link_and_init (
ais_service[service->id] = service;
if (service->config_init_fn) {
res = service->config_init_fn (objdb);
res = service->config_init_fn (api);
}
if (service->exec_init_fn) {
res = service->exec_init_fn (objdb, &corosync_api_v1);
res = service->exec_init_fn (api);
}
/*
* Store service in object database
*/
objdb->object_create (object_internal_configuration_handle,
api->object_create (object_internal_configuration_handle,
&object_service_handle,
"service",
strlen ("service"));
objdb->object_key_create (object_service_handle,
api->object_key_create (object_service_handle,
"name",
strlen ("name"),
service_name,
strlen (service_name) + 1);
objdb->object_key_create (object_service_handle,
api->object_key_create (object_service_handle,
"ver",
strlen ("ver"),
&service_ver,
sizeof (service_ver));
res = objdb->object_key_create (object_service_handle,
res = api->object_key_create (object_service_handle,
"handle",
strlen ("handle"),
&handle,
sizeof (handle));
objdb->object_key_create (object_service_handle,
api->object_key_create (object_service_handle,
"service_id",
strlen ("service_id"),
&service->id,
@ -224,7 +194,7 @@ unsigned int openais_service_link_and_init (
}
static int openais_service_unlink_common (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *api,
unsigned int object_service_handle,
const char *service_name,
unsigned int service_version)
@ -233,13 +203,13 @@ static int openais_service_unlink_common (
unsigned short *service_id;
unsigned int *found_service_handle;
res = objdb->object_key_get (object_service_handle,
res = api->object_key_get (object_service_handle,
"handle",
strlen ("handle"),
(void *)&found_service_handle,
NULL);
res = objdb->object_key_get (object_service_handle,
res = api->object_key_get (object_service_handle,
"service_id",
strlen ("service_id"),
(void *)&service_id,
@ -249,7 +219,7 @@ static int openais_service_unlink_common (
service_name, service_version);
if (ais_service[*service_id]->exec_exit_fn) {
ais_service[*service_id]->exec_exit_fn (objdb);
ais_service[*service_id]->exec_exit_fn (api);
}
ais_service[*service_id] = NULL;
@ -257,7 +227,7 @@ static int openais_service_unlink_common (
}
extern unsigned int openais_service_unlink_and_exit (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *api,
char *service_name,
unsigned int service_ver)
{
@ -266,19 +236,19 @@ extern unsigned int openais_service_unlink_and_exit (
char *found_service_name;
unsigned int *found_service_ver;
while (objdb->object_find (
while (api->object_find (
object_internal_configuration_handle,
"service",
strlen ("service"),
&object_service_handle) == 0) {
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"name",
strlen ("name"),
(void *)&found_service_name,
NULL);
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"ver",
strlen ("ver"),
(void *)&found_service_ver,
@ -291,10 +261,10 @@ extern unsigned int openais_service_unlink_and_exit (
(service_ver == *found_service_ver)) {
res = openais_service_unlink_common (
objdb, object_service_handle,
api, object_service_handle,
service_name, service_ver);
objdb->object_destroy (object_service_handle);
api->object_destroy (object_service_handle);
return res;
}
}
@ -302,7 +272,7 @@ extern unsigned int openais_service_unlink_and_exit (
}
extern unsigned int openais_service_unlink_all (
struct objdb_iface_ver0 *objdb)
struct corosync_api_v1 *api)
{
char *service_name;
unsigned int *service_ver;
@ -310,30 +280,30 @@ extern unsigned int openais_service_unlink_all (
log_printf(LOG_LEVEL_NOTICE, "Unloading all openais components\n");
objdb->object_find_reset (object_internal_configuration_handle);
api->object_find_reset (object_internal_configuration_handle);
while (objdb->object_find (object_internal_configuration_handle,
while (api->object_find (object_internal_configuration_handle,
"service",
strlen ("service"),
&object_service_handle) == 0) {
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"name",
strlen ("name"),
(void *)&service_name,
NULL);
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"ver",
strlen ("ver"),
(void *)&service_ver,
NULL);
openais_service_unlink_common (
objdb, object_service_handle, service_name, *service_ver);
api, object_service_handle, service_name, *service_ver);
objdb->object_destroy (object_service_handle);
objdb->object_find_reset (object_internal_configuration_handle);
api->object_destroy (object_service_handle);
api->object_find_reset (object_internal_configuration_handle);
}
return (0);
@ -342,7 +312,7 @@ extern unsigned int openais_service_unlink_all (
/*
* Links default services into the executive
*/
unsigned int openais_service_defaults_link_and_init (struct objdb_iface_ver0 *objdb)
unsigned int openais_service_defaults_link_and_init (struct corosync_api_v1 *api)
{
unsigned int i;
@ -351,26 +321,26 @@ unsigned int openais_service_defaults_link_and_init (struct objdb_iface_ver0 *ob
char *found_service_ver;
unsigned int found_service_ver_atoi;
objdb->object_create (OBJECT_PARENT_HANDLE,
api->object_create (OBJECT_PARENT_HANDLE,
&object_internal_configuration_handle,
"internal_configuration",
strlen ("internal_configuration"));
objdb->object_find_reset (OBJECT_PARENT_HANDLE);
api->object_find_reset (OBJECT_PARENT_HANDLE);
while (objdb->object_find (
while (api->object_find (
OBJECT_PARENT_HANDLE,
"service",
strlen ("service"),
&object_service_handle) == 0) {
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"name",
strlen ("name"),
(void *)&found_service_name,
NULL);
objdb->object_key_get (object_service_handle,
api->object_key_get (object_service_handle,
"ver",
strlen ("ver"),
(void *)&found_service_ver,
@ -379,19 +349,19 @@ unsigned int openais_service_defaults_link_and_init (struct objdb_iface_ver0 *ob
found_service_ver_atoi = atoi (found_service_ver);
openais_service_link_and_init (
objdb,
api,
found_service_name,
found_service_ver_atoi);
}
if (default_services_requested (objdb) == 0) {
if (default_services_requested (api) == 0) {
return (0);
}
for (i = 0;
i < sizeof (default_services) / sizeof (struct default_service); i++) {
openais_service_link_and_init (
objdb,
api,
default_services[i].name,
default_services[i].ver);
}

View File

@ -39,7 +39,7 @@
* Link and initialize a service
*/
extern unsigned int openais_service_link_and_init (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *objdb,
char *service_name,
unsigned int service_ver);
@ -47,7 +47,7 @@ extern unsigned int openais_service_link_and_init (
* Unlink and exit a service
*/
extern unsigned int openais_service_unlink_and_exit (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *objdb,
char *service_name,
unsigned int service_ver);
@ -55,13 +55,13 @@ extern unsigned int openais_service_unlink_and_exit (
* Unlink and exit all openais services
*/
extern unsigned int openais_service_unlink_all (
struct objdb_iface_ver0 *objdb);
struct corosync_api_v1 *objdb);
/*
* Load all of the default services
*/
extern unsigned int openais_service_defaults_link_and_init (
struct objdb_iface_ver0 *objdb);
struct corosync_api_v1 *objdb);
extern struct corosync_service_engine *ais_service[];

View File

@ -67,7 +67,6 @@
#include "mainconfig.h"
#include "totemconfig.h"
#include "main.h"
#include "service.h"
#include "sync.h"
#include "swab.h"
#include "objdb.h"

View File

@ -34,7 +34,7 @@
#ifndef COROAPI_H_DEFINED
#define COROAPI_H_DEFINED
#include "../exec/objdb.h"
#include <stdio.h>
typedef void * corosync_timer_handle_t;
@ -80,7 +80,148 @@ enum corosync_flow_control_state {
};
#endif
#ifndef OBJECT_PARENT_HANDLE
#define OBJECT_PARENT_HANDLE 0
struct object_valid {
char *object_name;
int object_len;
};
struct object_key_valid {
char *key_name;
int key_len;
int (*validate_callback) (void *key, int key_len, void *value, int value_len);
};
#endif /* OBJECT_PARENT_HANDLE_DEFINED */
struct corosync_api_v1 {
/*
* Object and configuration APIs
*/
int (*object_create) (
unsigned int parent_object_handle,
unsigned int *object_handle,
void *object_name, unsigned int object_name_len);
int (*object_priv_set) (
unsigned int object_handle,
void *priv);
int (*object_key_create) (
unsigned int object_handle,
void *key_name,
int key_len,
void *value,
int value_len);
int (*object_destroy) (
unsigned int object_handle);
int (*object_valid_set) (
unsigned int object_handle,
struct object_valid *object_valid_list,
unsigned int object_valid_list_entries);
int (*object_key_valid_set) (
unsigned int object_handle,
struct object_key_valid *object_key_valid_list,
unsigned int object_key_valid_list_entries);
int (*object_find_reset) (
unsigned int parent_object_handle);
int (*object_find) (
unsigned int parent_object_handle,
void *object_name,
int object_name_len,
unsigned int *object_handle);
int (*object_key_get) (
unsigned int object_handle,
void *key_name,
int key_len,
void **value,
int *value_len);
int (*object_priv_get) (
unsigned int jobject_handle,
void **priv);
int (*object_key_replace) (
unsigned int object_handle,
void *key_name,
int key_len,
void *old_value,
int old_value_len,
void *new_value,
int new_value_len);
int (*object_key_delete) (
unsigned int object_handle,
void *key_name,
int key_len,
void *value,
int value_len);
int (*object_iter_reset) (
unsigned int parent_object_handle);
int (*object_iter) (
unsigned int parent_object_handle,
void **object_name,
int *name_len,
unsigned int *object_handle);
int (*object_key_iter_reset) (
unsigned int object_handle);
int (*object_key_iter) (
unsigned int parent_object_handle,
void **key_name,
int *key_len,
void **value,
int *value_len);
int (*object_parent_get) (
unsigned int object_handle,
unsigned int *parent_handle);
int (*object_dump) (
unsigned int object_handle,
FILE *file);
int (*object_find_from) (
unsigned int parent_object_handle,
unsigned int start_pos,
void *object_name,
int object_name_len,
unsigned int *object_handle,
unsigned int *next_pos);
int (*object_iter_from) (
unsigned int parent_object_handle,
unsigned int start_pos,
void **object_name,
int *name_len,
unsigned int *object_handle);
int (*object_key_iter_from) (
unsigned int parent_object_handle,
unsigned int start_pos,
void **key_name,
int *key_len,
void **value,
int *value_len);
int (*object_write_config) (char **error_string);
/*
* Time and timer APIs
*/
int (*timer_add_duration) (
unsigned long long nanoseconds_in_future,
void *data,
@ -98,6 +239,9 @@ struct corosync_api_v1 {
unsigned long long (*timer_time_get) (void);
/*
* IPC APIs
*/
void (*ipc_source_set) (mar_message_source_t *source, void *conn);
int (*ipc_source_is_local) (mar_message_source_t *source);
@ -138,6 +282,9 @@ struct corosync_api_v1 {
void (*ipc_refcnt_dec) (void *conn);
/*
* Totem APIs
*/
int (*totem_nodeid_get) (void);
int (*totem_ring_reenable) (void);
@ -146,16 +293,6 @@ struct corosync_api_v1 {
int (*totem_send_ok) (struct iovec *iovec, int iov_len);
unsigned int (*service_link_and_init) (
struct objdb_iface_ver0 *objdb,
char *service_name,
unsigned int service_ver);
unsigned int (*service_unlink_and_exit) (
struct objdb_iface_ver0 *objdb,
char *service_name,
unsigned int service_ver);
int (*totem_ifaces_get) (
unsigned int nodeid,
struct totem_ip_address *interfaces,
@ -166,6 +303,22 @@ struct corosync_api_v1 {
char *(*totem_ip_print) (struct totem_ip_address *addr);
/*
* Service loading and unloading APIs
*/
unsigned int (*service_link_and_init) (
struct corosync_api_v1 *corosync_api_v1,
char *service_name,
unsigned int service_ver);
unsigned int (*service_unlink_and_exit) (
struct corosync_api_v1 *corosync_api_v1,
char *service_name,
unsigned int service_ver);
/*
* Error handling APIs
*/
void (*error_memory_failure) (void);
};
@ -194,8 +347,8 @@ struct corosync_service_engine {
unsigned short id;
unsigned int private_data_size;
enum corosync_lib_flow_control flow_control;
int (*exec_init_fn) (struct objdb_iface_ver0 *, struct corosync_api_v1 *);
int (*exec_exit_fn) (struct objdb_iface_ver0 *);
int (*exec_init_fn) (struct corosync_api_v1 *);
int (*exec_exit_fn) (struct corosync_api_v1 *);
void (*exec_dump_fn) (void);
int (*lib_init_fn) (void *conn);
int (*lib_exit_fn) (void *conn);
@ -203,7 +356,7 @@ struct corosync_service_engine {
int lib_engine_count;
struct corosync_exec_handler *exec_engine;
int exec_engine_count;
int (*config_init_fn) (struct objdb_iface_ver0 *);
int (*config_init_fn) (struct corosync_api_v1 *);
void (*confchg_fn) (
enum totem_configuration_type configuration_type,
unsigned int *member_list, int member_list_entries,
@ -216,7 +369,5 @@ struct corosync_service_engine {
void (*sync_abort) (void);
};
typedef void *corosync_timer_handle;
#endif /* COROAPI_H_DEFINED */

View File

@ -70,7 +70,7 @@ static void cfg_confchg_fn (
unsigned int *joined_list, int joined_list_entries,
struct memb_ring_id *ring_id);
static int cfg_exec_init_fn (struct objdb_iface_ver0 *objdb, struct corosync_api_v1 *corosync_api_v1);
static int cfg_exec_init_fn (struct corosync_api_v1 *corosync_api_v1);
static struct corosync_api_v1 *api;
@ -194,8 +194,6 @@ struct corosync_service_engine cfg_service_engine = {
.confchg_fn = cfg_confchg_fn,
};
static struct objdb_iface_ver0 *my_objdb;
/*
* Dynamic Loader definition
*/
@ -243,10 +241,8 @@ struct req_exec_cfg_ringreenable {
/* IMPL */
static int cfg_exec_init_fn (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *corosync_api_v1)
{
my_objdb = objdb;
api = corosync_api_v1;
return (0);
}
@ -412,7 +408,7 @@ static void message_handler_req_lib_cfg_serviceload (
ENTER("");
api->service_link_and_init (
my_objdb,
api,
(char *)req_lib_cfg_serviceload->service_name,
req_lib_cfg_serviceload->service_ver);
@ -436,7 +432,7 @@ static void message_handler_req_lib_cfg_serviceunload (
ENTER("");
api->service_unlink_and_exit (
my_objdb,
api,
(char *)req_lib_cfg_serviceunload->service_name,
req_lib_cfg_serviceunload->service_ver);
res_lib_cfg_serviceunload.header.id = MESSAGE_RES_CFG_SERVICEUNLOAD;

View File

@ -48,12 +48,9 @@
LOGSYS_DECLARE_SUBSYS ("CONFDB", LOG_INFO);
static struct objdb_iface_ver0 *global_objdb;
static struct corosync_api_v1 *api;
static int confdb_exec_init_fn (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *corosync_api);
static int confdb_lib_init_fn (void *conn);
@ -217,11 +214,9 @@ __attribute__ ((constructor)) static void confdb_comp_register (void) {
}
static int confdb_exec_init_fn (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *corosync_api)
{
api = corosync_api;
global_objdb = objdb;
return 0;
}
@ -245,7 +240,7 @@ static void message_handler_req_lib_confdb_object_create (void *conn, void *mess
unsigned int object_handle;
int ret = SA_AIS_OK;
if (global_objdb->object_create(req_lib_confdb_object_create->parent_object_handle,
if (api->object_create(req_lib_confdb_object_create->parent_object_handle,
&object_handle,
req_lib_confdb_object_create->object_name.value,
req_lib_confdb_object_create->object_name.length))
@ -264,7 +259,7 @@ static void message_handler_req_lib_confdb_object_destroy (void *conn, void *mes
mar_res_header_t res;
int ret = SA_AIS_OK;
if (global_objdb->object_destroy(req_lib_confdb_object_destroy->object_handle))
if (api->object_destroy(req_lib_confdb_object_destroy->object_handle))
ret = SA_AIS_ERR_ACCESS;
res.size = sizeof(res);
@ -280,7 +275,7 @@ static void message_handler_req_lib_confdb_key_create (void *conn, void *message
mar_res_header_t res;
int ret = SA_AIS_OK;
if (global_objdb->object_key_create(req_lib_confdb_key_create->object_handle,
if (api->object_key_create(req_lib_confdb_key_create->object_handle,
req_lib_confdb_key_create->key_name.value,
req_lib_confdb_key_create->key_name.length,
req_lib_confdb_key_create->value.value,
@ -301,7 +296,7 @@ static void message_handler_req_lib_confdb_key_get (void *conn, void *message)
void *value;
int ret = SA_AIS_OK;
if (global_objdb->object_key_get(req_lib_confdb_key_get->parent_object_handle,
if (api->object_key_get(req_lib_confdb_key_get->parent_object_handle,
req_lib_confdb_key_get->key_name.value,
req_lib_confdb_key_get->key_name.length,
&value,
@ -324,7 +319,7 @@ static void message_handler_req_lib_confdb_key_replace (void *conn, void *messag
mar_res_header_t res;
int ret = SA_AIS_OK;
if (global_objdb->object_key_replace(req_lib_confdb_key_replace->object_handle,
if (api->object_key_replace(req_lib_confdb_key_replace->object_handle,
req_lib_confdb_key_replace->key_name.value,
req_lib_confdb_key_replace->key_name.length,
req_lib_confdb_key_replace->old_value.value,
@ -345,7 +340,7 @@ static void message_handler_req_lib_confdb_key_delete (void *conn, void *message
mar_res_header_t res;
int ret = SA_AIS_OK;
if (global_objdb->object_key_delete(req_lib_confdb_key_delete->object_handle,
if (api->object_key_delete(req_lib_confdb_key_delete->object_handle,
req_lib_confdb_key_delete->key_name.value,
req_lib_confdb_key_delete->key_name.length,
req_lib_confdb_key_delete->value.value,
@ -365,7 +360,7 @@ static void message_handler_req_lib_confdb_object_parent_get (void *conn, void *
unsigned int object_handle;
int ret = SA_AIS_OK;
if (global_objdb->object_parent_get(req_lib_confdb_object_parent_get->object_handle,
if (api->object_parent_get(req_lib_confdb_object_parent_get->object_handle,
&object_handle))
ret = SA_AIS_ERR_ACCESS;
@ -387,7 +382,7 @@ static void message_handler_req_lib_confdb_key_iter (void *conn, void *message)
int value_len;
int ret = SA_AIS_OK;
if (global_objdb->object_key_iter_from(req_lib_confdb_key_iter->parent_object_handle,
if (api->object_key_iter_from(req_lib_confdb_key_iter->parent_object_handle,
req_lib_confdb_key_iter->next_entry,
&key_name,
&key_name_len,
@ -415,7 +410,7 @@ static void message_handler_req_lib_confdb_object_iter (void *conn, void *messag
int object_name_len;
int ret = SA_AIS_OK;
if (global_objdb->object_iter_from(req_lib_confdb_object_iter->parent_object_handle,
if (api->object_iter_from(req_lib_confdb_object_iter->parent_object_handle,
req_lib_confdb_object_iter->next_entry,
&object_name,
&object_name_len,
@ -438,7 +433,7 @@ static void message_handler_req_lib_confdb_object_find (void *conn, void *messag
struct res_lib_confdb_object_find res_lib_confdb_object_find;
int ret = SA_AIS_OK;
if (global_objdb->object_find_from(req_lib_confdb_object_find->parent_object_handle,
if (api->object_find_from(req_lib_confdb_object_find->parent_object_handle,
req_lib_confdb_object_find->next_entry,
req_lib_confdb_object_find->object_name.value,
req_lib_confdb_object_find->object_name.length,
@ -459,7 +454,7 @@ static void message_handler_req_lib_confdb_write (void *conn, void *message)
int ret = SA_AIS_OK;
char *error_string = NULL;
if (global_objdb->object_write_config(&error_string))
if (api->object_write_config(&error_string))
ret = SA_AIS_ERR_ACCESS;
res_lib_confdb_write.header.size = sizeof(res_lib_confdb_write);

View File

@ -124,7 +124,7 @@ static void cpg_confchg_fn (
unsigned int *joined_list, int joined_list_entries,
struct memb_ring_id *ring_id);
static int cpg_exec_init_fn (struct objdb_iface_ver0 *objdb, struct corosync_api_v1 *);
static int cpg_exec_init_fn (struct corosync_api_v1 *);
static int cpg_lib_init_fn (void *conn);
@ -465,7 +465,7 @@ static void remove_group(struct group_info *gi)
}
static int cpg_exec_init_fn (struct objdb_iface_ver0 *objdb, struct corosync_api_v1 *corosync_api)
static int cpg_exec_init_fn (struct corosync_api_v1 *corosync_api)
{
int i;

View File

@ -67,7 +67,6 @@ enum evs_exec_message_req_types {
* Service Interfaces required by service_message_handler struct
*/
static int evs_exec_init_fn (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *corosync_api);
static void evs_confchg_fn (
@ -200,10 +199,8 @@ __attribute__ ((constructor)) static void evs_comp_register (void) {
}
static int evs_exec_init_fn (
struct objdb_iface_ver0 *objdb,
struct corosync_api_v1 *corosync_api)
{
(void) objdb;
api = corosync_api;
return 0;