SSIA

https://bugzilla.redhat.com/show_bug.cgi?id=501695

Regards,
  Honza
commit c9751a89328cfeb653a43387c70f6009184b3fd0
Author: Jan Friesse <[email protected]>
Date:   Wed May 20 17:57:38 2009 +0200

    Support for openaisserviceenable(stable|experimental). Stable doesn't include AMF.

diff --git a/trunk/services/aisexec b/trunk/services/aisexec
index 7bf102e..c35029b 100755
--- a/trunk/services/aisexec
+++ b/trunk/services/aisexec
@@ -1,3 +1,3 @@
 #!/bin/sh
-export COROSYNC_DEFAULT_CONFIG_IFACE="openaisserviceenable:openaisparser"
+export COROSYNC_DEFAULT_CONFIG_IFACE="openaisserviceenablestable:openaisparser"
 corosync "$@"
diff --git a/trunk/services/openaisserviceenable.c b/trunk/services/openaisserviceenable.c
index ddd0a81..fb0d6cb 100644
--- a/trunk/services/openaisserviceenable.c
+++ b/trunk/services/openaisserviceenable.c
@@ -1,9 +1,10 @@
 /*
- * Copyright (c) 2006 Red Hat, Inc.
+ * Copyright (c) 2006-2009 Red Hat, Inc.
  *
  * All rights reserved.
  *
- * Author: Patrick Caulfield ([email protected])
+ * Author: Christine Caulfield ([email protected])
+ * Author: Jan Friesse ([email protected])
  *
  * This software licensed under BSD license, the text of which follows:
  *
@@ -66,20 +67,40 @@ static struct service_engine service_engines[] = {
 	{ "openais_tmr", "0" },
 };
 
-static int openais_service_enable (
+static const char *exluded_service_engines[] = {
+	"openais_amf"
+};
+
+static int openais_service_enable_worker (
 	struct objdb_iface_ver0 *objdb,
-	const char **error_string)
+	const char **error_string,
+	const char **excluded_services,
+	const int no_excluded_services)
 {
 	unsigned int i;
+	unsigned int j;
+	int include_service;
+
 	hdb_handle_t object_handle;
 
 	for (i = 0; i < sizeof (service_engines) / sizeof (struct service_engine); i++) {
-		objdb->object_create(OBJECT_PARENT_HANDLE, &object_handle,
-			"service", strlen("service"));
-		objdb->object_key_create(object_handle, "name", strlen("name"),
-			service_engines[i].name, strlen(service_engines[i].name)+ 1);
-		objdb->object_key_create(object_handle, "ver", strlen("ver"),
-			service_engines[i].ver, 2);
+		include_service = 1;
+
+		for (j = 0; no_excluded_services && j < no_excluded_services; j++) {
+			if (strcmp (service_engines[i].name, excluded_services[j]) == 0) {
+				include_service = 0;
+				break;
+			}
+		}
+
+		if (include_service) {
+			objdb->object_create(OBJECT_PARENT_HANDLE, &object_handle,
+				"service", strlen("service"));
+			objdb->object_key_create(object_handle, "name", strlen("name"),
+				service_engines[i].name, strlen(service_engines[i].name)+ 1);
+			objdb->object_key_create(object_handle, "ver", strlen("ver"),
+				service_engines[i].ver, 2);
+		}
 	}
 
 	sprintf (error_reason, "Successfully configured openais services to load\n");
@@ -88,19 +109,49 @@ static int openais_service_enable (
 	return (0);
 }
 
+static int openais_service_enable_experimental (
+	struct objdb_iface_ver0 *objdb,
+	const char **error_string)
+{
+	return openais_service_enable_worker (objdb, error_string, NULL, 0);
+}
+
+static int openais_service_enable_stable (
+	struct objdb_iface_ver0 *objdb,
+	const char **error_string)
+{
+	return openais_service_enable_worker (objdb, error_string, exluded_service_engines, 1);
+}
 /*
  * Dynamic Loader definition
  */
 
-struct config_iface_ver0 serviceenable_iface_ver0 = {
-	.config_readconfig      = openais_service_enable,
+struct config_iface_ver0 serviceenable_stable_iface_ver0 = {
+	.config_readconfig      = openais_service_enable_stable,
 	.config_writeconfig 	= NULL,
 	.config_reloadconfig 	= NULL
 };
 
-struct lcr_iface openais_serviceenable_ver0[1] = {
+struct config_iface_ver0 serviceenable_experimental_iface_ver0 = {
+	.config_readconfig      = openais_service_enable_experimental,
+	.config_writeconfig 	= NULL,
+	.config_reloadconfig 	= NULL
+};
+
+struct lcr_iface openais_serviceenable_ver0[2] = {
+	{
+		.name				= "openaisserviceenablestable",
+		.version			= 0,
+		.versions_replace		= 0,
+		.versions_replace_count		= 0,
+		.dependencies			= 0,
+		.dependency_count		= 0,
+		.constructor			= NULL,
+		.destructor			= NULL,
+		.interfaces			= NULL,
+	},
 	{
-		.name				= "openaisserviceenable",
+		.name				= "openaisserviceenableexperimental",
 		.version			= 0,
 		.versions_replace		= 0,
 		.versions_replace_count		= 0,
@@ -115,12 +166,14 @@ struct lcr_iface openais_serviceenable_ver0[1] = {
 struct openais_service_handler *serviceenable_get_handler_ver0 (void);
 
 struct lcr_comp serviceenable_comp_ver0 = {
-	.iface_count				= 1,
+	.iface_count				= 2,
 	.ifaces					= openais_serviceenable_ver0
 };
 
 
 __attribute__ ((constructor)) static void serviceenable_comp_register (void) {
-        lcr_interfaces_set (&openais_serviceenable_ver0[0], &serviceenable_iface_ver0);
+        lcr_interfaces_set (&openais_serviceenable_ver0[0], &serviceenable_stable_iface_ver0);
+        lcr_interfaces_set (&openais_serviceenable_ver0[1], &serviceenable_experimental_iface_ver0);
+
 	lcr_component_register (&serviceenable_comp_ver0);
 }
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to