#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
-PROJECT_NAME = openais
+PROJECT_NAME = corosync
PROJECT_NUMBER = 0.75
OUTPUT_DIRECTORY = doc/api
OUTPUT_LANGUAGE = English
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------------------------------------------
-The openais project uses software from the LibTomCrypt project
+The corosync project uses software from the LibTomCrypt project
www.libtomcrypt.org. This software is contained the files exec/crypto.c and
exec/crypto.h. The following license applies to the files exec/crypto.c and
exec/crytpo.h:
-------------------------------------------------------------------------------
This file provides a map for developers to understand how to contribute
-to the openais project. The purpose of this document is to prepare a
-developer to write a service for openais, or understand the architecture
-of openais.
+to the corosync project. The purpose of this document is to prepare a
+developer to write a service for corosync, or understand the architecture
+of corosync.
The following is described in this document:
* all files, purpose, and dependencies
- * architecture of openais
+ * architecture of corosync
* taking advantage of virtual synchrony
* adding libraries
* adding services
Server side implementation of closed procss groups (CPG API).
exec/crypto.{c|h}
- Cryptography functions used by openais.
+ Cryptography functions used by corosync.
exec/evs.c
Server side implementation of extended virtual synchrony passthrough
Server side implementation of Event Service (EVT API).
exec/ipc.{c|h}
- All IPC operations used by openais.
+ All IPC operations used by corosync.
exec/jhash.h
A hash routine.
exec/keygen.c
- Secret key generator used by openais encryption tools.
+ Secret key generator used by corosync encryption tools.
exec/lck.c
Server side implementation of the distributed lock service (LCK API).
exec/objdb.{c|h}
Object database used to configure services.
-exec/openais-instantiate.c
+exec/corosync-instantiate.c
instantiates a component by forking and exec'ing it and writing its
pid to a pid file.
Redundant ring functions for totem - between totemnet and totemsrp.
exec/util.{c|h}
- Utility functions used by openais executive.
+ Utility functions used by corosync executive.
exec/version.h
Defines build version.
Counts the lines of code in the AIS implementation.
-------------------------------------------------------------------------------
- architecture of openais
+ architecture of corosync
-------------------------------------------------------------------------------
-The openais standards based cluster framework is a generic cluster plugin
+The corosync standards based cluster framework is a generic cluster plugin
architecture used to create cluster APIs and services. Usually there are
libraries which implement APIs and are linked into the end user application.
The libraries request services from the aisexec process, called the AIS
--------------------------------------------------
| IPC API |
--------------------------------------------------
- | openais Executive |
+ | corosync Executive |
| |
| +---------+ +--------+ +---------+ |
| | Object | | AIS | | Service | |
| |
-------------------------------------------------
- Figure 1: openais Architecture
+ Figure 1: corosync Architecture
-Every application that intends to use openais links with the libais library.
+Every application that intends to use corosync links with the libais library.
This library uses IPC, or more specifically BSD unix sockets, to communicate
with the executive. The library is a small program responsible only for
packaging the request into a message. This message is sent, using IPC, to
Virtual synchrony is a model for group messaging. This is often confused
with particular implementations of virtual synchrony. Try to focus on
what virtual syncrhony provides, not how it provides it, unless interested
-in working on the group messaging interface of openais.
+in working on the group messaging interface of corosync.
Virtual synchrony provides several advantages:
to other services as described later.
Strong membership guarantees allow a distributed application to make decisions
-based upon the configuration (membership). Every service in openais registers
+based upon the configuration (membership). Every service in corosync registers
a configuration change function. This function is called whenever a
configuration change occurs. The information passed is the current processors,
the processors that have left the configuration, and the processors that have
particular processor fails, a configuration change occurs creating a new
configuration under which a new set of decisions may be made. This implies
that even unreliable networks must reliably deliver messages. The
-mplementation in openais works on unreliable as well as reliable networks.
+mplementation in corosync works on unreliable as well as reliable networks.
Every message sent must be delivered, unless a configuration change occurs.
In the case of a configuration change, every message that can be recovered
Finally virtual syncrhony takes advantage of hardware multicast to avoid
duplicated packets and scale to large transmit rates. On 100mbit network,
-openais can approach wire speeds depending on the number of messages queued
+corosync can approach wire speeds depending on the number of messages queued
for a particular processor.
What does all of this mean for the developer?
Library code should follow these guidelines:
* use SA Forum coding style for SA Forum APIs to aid in debugging
- * use openais coding guidelines for APIs that are not SA Forum that
- are to be merged into the openais tree.
+ * use corosync coding guidelines for APIs that are not SA Forum that
+ are to be merged into the corosync tree.
* implement all library code within one file named after the api.
examples are ckpt.c, clm.c, amf.c.
* use parallel structure as much as possible between different APIs
int (*libais_handler_fn) (void *conn, void *msg);
int response_size;
int response_id;
- enum openais_flow_control flow_control;
+ enum corosync_flow_control flow_control;
};
The response_size, response_id, and flow_control for a library handler are
The libais_handler_fn is a function to be called when the library handler is
requested to be executed.
-struct openais_exec_handler {
+struct corosync_exec_handler {
void (*exec_handler_fn) (void *msg, unsigned int nodeid);
void (*exec_endian_convert_fn) (void *msg);
};
little endian depending on the byte order of the transmitter and converted to
the host machine order on receipt of the message.
-struct openais_service_handler {
+struct corosync_service_handler {
unsigned char *name;
unsigned short id;
unsigned int private_data_size;
int (*lib_init_fn) (void *conn);
int (*lib_exit_fn) (void *conn);
- struct openais_lib_handler *lib_service;
+ struct corosync_lib_handler *lib_service;
int lib_service_count;
- struct openais_exec_handler *exec_service;
+ struct corosync_exec_handler *exec_service;
int (*exec_init_fn) (struct objdb_iface_ver0 *);
int (*config_init_fn) (struct objdb_iface_ver0 *);
void (*exec_dump_fn) (void);
either because the application closed the file descriptor, or the OS
closed the file descriptor.
-lib_service is an array of openais_lib_handler data structures which define
+lib_service is an array of corosync_lib_handler data structures which define
the library service handler.
lib_service_count is the number of elements in lib_service.
-exec_service is an array of openais_exec_handler data structures which define
+exec_service is an array of corosync_exec_handler data structures which define
the executive service handler.
exec_init_fn is a function used to initialize the executive service. This
------------------------------------------------
The service handler needs some special magic to dynamically be linked into
-openais.
+corosync.
/*
* Dynamic loader definition
*/
-static struct openais_service_handler *clm_get_service_handler_ver0 (void);
+static struct corosync_service_handler *clm_get_service_handler_ver0 (void);
-static struct openais_service_handler_iface_ver0 clm_service_handler_iface = {
- .openais_get_service_handler_ver0 = clm_get_service_handler_ver0
+static struct corosync_service_handler_iface_ver0 clm_service_handler_iface = {
+ .corosync_get_service_handler_ver0 = clm_get_service_handler_ver0
};
-static struct lcr_iface openais_clm_ver0[1] = {
+static struct lcr_iface corosync_clm_ver0[1] = {
{
- .name = "openais_clm",
+ .name = "corosync_clm",
.version = 0,
.versions_replace = 0,
.versions_replace_count = 0,
static struct lcr_comp clm_comp_ver0 = {
.iface_count = 1,
- .ifaces = openais_clm_ver0
+ .ifaces = corosync_clm_ver0
};
-static struct openais_service_handler *clm_get_service_handler_ver0 (void)
+static struct corosync_service_handler *clm_get_service_handler_ver0 (void)
{
return (&clm_service_handler);
}
__attribute__ ((constructor)) static void clm_comp_register (void) {
- lcr_interfaces_set (&openais_clm_ver0[0], &clm_service_handler_iface);
+ lcr_interfaces_set (&corosync_clm_ver0[0], &clm_service_handler_iface);
lcr_component_register (&clm_comp_ver0);
}
The default service list is specified in service.c:default_services. If
creating an external plugin, there are configuration parameters which may
-be used to add your plugin into the openais scanning of plugins.
+be used to add your plugin into the corosync scanning of plugins.
---------------------------------
Connection specific information
is greater then zero for the service handler. This is used to allow each
library connection to maintain private state to that connection. The private
data for a connection can be retrieved with:
-struct service_pd service_pd = (struct service_pd *)openais_conn_private_data_get (conn);
+struct service_pd service_pd = (struct service_pd *)corosync_conn_private_data_get (conn);
where service is the name of the service implemented and conn is the connection
information likely passed into the library handler or stored in a
A message is sent to the library from the executive message handler using
the function:
-extern int openais_conn_send_response (void *conn_info, void *msg,
+extern int corosync_conn_send_response (void *conn_info, void *msg,
int mlen);
conn_info is passed into the library message handler or stored in the
mlen is the length of the message to send
Keep in mind that struct res_message should be at the beginning of the response
-message so that it follows the style used in the rest of openais.
+message so that it follows the style used in the rest of corosync.
--------------------------------------------
deferring response to an executive message
for responding:
if (message_source_is_local (conn)) {
- openais_conn_send_response ();
+ corosync_conn_send_response ();
}
The totempg interface supports multiple users at one time and if you need
to use a full totempg interface (defined in totempg.h) please ask for
assistance on the mailing list. If you simply want to use multicast
-transmissions in openais, do the following:
+transmissions in corosync, do the following:
- assert (totempg_groups_mcast_joined (openais_group_handle, &req_exec_clm_iovec, 1, TOTEMPG_AGREED) == 0);
+ assert (totempg_groups_mcast_joined (corosync_group_handle, &req_exec_clm_iovec, 1, TOTEMPG_AGREED) == 0);
-----------------
library handler
printf is your friend when GDB is your enemy.
If stuck, ask on the mailing list, send your patches. Alot of time has been
-spent designing openais, and even more time debugging it. There are people
+spent designing corosync, and even more time debugging it. There are people
that can help you debug problems, especially around things like message
delivery.
Submit patches early to get feedback, especially around things like parallel
style. Parallel style is very important to ensure maintainability by the
-openais community.
+corosync community.
If this document is wrong or incomplete, complain so we can get it fixed
for other people.
SYNCHRONIZATION ALGORITHM:
-------------------------
-The synchronization algorithm is used for every service in openais to
+The synchronization algorithm is used for every service in corosync to
synchronize state of he system.
There are 4 events of the synchronization algorithm. These events are in fact
available source code, may be exported from the United States under License
Exception TSU prsuant to 15 C.F.R Section 740.13(e).
***
-Security Design of openais
+Security Design of corosync
-The openais project intends to mitigate the following threats:
+The corosync project intends to mitigate the following threats:
-1. forged group messaging messages which are intended to fault the openais
+1. forged group messaging messages which are intended to fault the corosync
executive
2. forged group messaging messages which are intended to fault applications
- using openais apis
+ using corosync apis
3. monitoring of network data to capture sensitive information
-The openais project does not intend to mitigate the following threats:
+The corosync project does not intend to mitigate the following threats:
1. physical access to the hardware which could expose the private key
2. privledged access to the operating system which could expose the private key
or be used to inject errors into the ais executive.
-3. library user creates requests which are intended to fault the openais
+3. library user creates requests which are intended to fault the corosync
executive
-The openais project mitigates the threats using two mechanisms:
+The corosync project mitigates the threats using two mechanisms:
1. Authentication
2. Secrecy
Library Interface
-----------------
-The openais executive authenticates every library user. The library is only
+The corosync executive authenticates every library user. The library is only
allowed to access services if it's GID is ais or 0. Unauthorized library
users are rejected.
Group Messaging Interface
-------------------------
-Group messaging uses UDP/IP to communicate with other openais executives using
+Group messaging uses UDP/IP to communicate with other corosync executives using
messages. It is possible without authentication of every packet that an
-attacker could forge messages. These forged messages could fault the openais
+attacker could forge messages. These forged messages could fault the corosync
executive distributed state machines. It would also be possible to corrupt
end applications by forging changes.
ensure that keys are never reused, nonce's are never reused, and hmac's are
never reused.
-Comments welcome mailto:openais@lists.osdl.org
+Comments welcome mailto:corosync@lists.osdl.org
-The openais standards based cluster framework TODO list
+The corosync standards based cluster framework TODO list
Last Updated: May 26, 2006
P1 items are to be implemented before Wilson release. P2 items may be
-# Please read the openais.conf.5 manual page
+# Please read the corosync.conf.5 manual page
totem {
version: 2
secauth: off
to_stderr: yes
to_file: yes
to_syslog: yes
- logfile: /tmp/openais.log
+ logfile: /tmp/corosync.log
debug: off
timestamp: on
logger {
Exception TSU prsuant to 15 C.F.R Section 740.13(e).
***
-This openais package is broken into four parts. The exec directory contains
+This corosync package is broken into four parts. The exec directory contains
all of the code responsible for serving the APIs. The lib directory contains
APIs the to which the user may link. The test directory contains some simple
test programs which exercise the APIs. The directory conf contains example
The API also contains an extended virtual synchrony API which can be used
in distributed applications.
-Configuring the openais executive:
+Configuring the corosync executive:
---------------------------------
-The openais executive will automatically determine cluster membership by
+The corosync executive will automatically determine cluster membership by
communicating on a specified multicast address and port.
-The directory conf contains the file openais.conf
+The directory conf contains the file corosync.conf
totem {
bindnetaddr: 192.168.1.0
}
The totem section contains three values. All three values must be set
-or the openais executive wll exit with an error.
+or the corosync executive wll exit with an error.
-bindnetaddr specifies the address which the openais Executive should bind to.
+bindnetaddr specifies the address which the corosync Executive should bind to.
This address should always end in zero. If the local interface taffic
should routed over is 192.168.5.92, set bindnetaddr to 192.168.5.0.
multicast address.
mcastport specifies the UDP port number. It is possible to use the same
-multicast address on a network with the openais services configured for different
+multicast address on a network with the corosync services configured for different
UDP ports.
The logging section contains values. These values do not have to be set in which
It is possible to select 3 destinations for logs: files, stderr, and syslog. One or
more may be selected at the same time. If file is selected as a destination, the file
-name must be specified via the logfile option or the openais executive will exit.
+name must be specified via the logfile option or the corosync executive will exit.
The debug option prints out internal debugging information during runtime which may
be helpful for developers.
file parser. We are working on fixing these bugs, but for the moment, it is
easy to simply avoid them.
-Building openais
+Building corosync
----------------
-openais requires GCC, LD, and a Linux 2.4/2.6 kernel. openais has been tested on
+corosync requires GCC, LD, and a Linux 2.4/2.6 kernel. corosync has been tested on
Debian Sarge(i386), Redhat 9(i386), Fedora Core 2(i386), Fedora Core
4(i386,x86_64) and MontaVista Carrier Grade Edition 3.1(i386, x86_64,
classic ppc, ppc970, xscale).
-Compile openais by running make in the root directory. Make can also be run
+Compile corosync by running make in the root directory. Make can also be run
in the individual directories. Nothing is installed by make. If install
is desired, the files must be copied manually.
Configure Host
--------------
-For security reasons, the openais only allows a process that had the EGID/GID
+For security reasons, the corosync only allows a process that had the EGID/GID
of "ais" to connect to it. To make development easier, it is recommended to
create an "ais" user with the "ais" group.
Generate a private key
----------------------
-openais uses cryptographic techniques to ensure authenticity and privacy of
+corosync uses cryptographic techniques to ensure authenticity and privacy of
messages. A private key must be generated and shared by all processors for
correct operation.
First generate the key on one of the nodes:
unix# exec/keygen
-Openopenais Authentication key generator.
+Opencorosync Authentication key generator.
Gathering 1024 bits for key from /dev/random.
-Writing openais key to /etc/ais/authkey.
+Writing corosync key to /etc/ais/authkey.
After this is complete, a private key will be in the file /etc/ais/authkey.
If the message invalid digest appears, the keys are not the same on each node.
-Run the openais executive
+Run the corosync executive
-------------------------
-Get one or more nodes and run the openais executive on each node. A list of
+Get one or more nodes and run the corosync executive on each node. A list of
node IPs should be logged when the nodes join a configuration. Run the
aisexec program after following the previous directions.
A final note on permissions:
-It is not absolutely required that openais executive runs as root. If
+It is not absolutely required that corosync executive runs as root. If
it runs as root, it schedules at the highest round robin realtime
priority and locks all of it's pages into ram in case a swap would cause a
delay in the real-time nature of the protocol. The warning "not
against the ais user and group. If an application(/library) is not root
or ais, then the application cannot connect to the ais executive.
-please read SECURITY to understand the threat model assumed by openais
-and the techniques openais use to overcome these threats.
+please read SECURITY to understand the threat model assumed by corosync
+and the techniques corosync use to overcome these threats.
Before running any of the test programs
---------------------------------------
-The openais executive will ensure security by only allowing the ais group (or
+The corosync executive will ensure security by only allowing the ais group (or
uid root) to connect to the service. Switch to the ais group before
running any applications linked to the ais apis, or the applications will
not be authenticated and won't be able to access services.
[ais@slickdeal sdake]$ id
uid=501(ais) gid=502(ais) groups=502(ais)
-Try out the openais CLM functionality
+Try out the corosync CLM functionality
-------------------------------------
After aisexec is running
Killing aisexec on the node the testclm is connected will cause the
API to return error codes indicating the system has failed.
-Try out the openais AMF functionality
+Try out the corosync AMF functionality
-------------------------------------
After aisexec is running
in amf.conf define how many SU's become active and how many
become standby in the service group (SG).
-To test the openais AMF, run testamf3 and testamf4 on one node. Both
+To test the corosync AMF, run testamf3 and testamf4 on one node. Both
components become in service and active. Then run testamf1. Nothing
appears to happen, because testamf1 is not placed in service (and made
standby) until testamf2 is registered. Running testamf2 will show
a variety of state changes. testamf1 will match these state changes.
testamf2 is special because is reports an error, and later cancels
the error, causing the entire SU to go out of service, then back in
-service. This behavior is expected by the openais specification and the
+service. This behavior is expected by the corosync specification and the
code in testamf2.c can be read for a clearer understanding of what
is happening.
SU will become active. CTRL-C on these tests behaves the same way.
A crash behaves the same way.
-Try out the openais CKPT functionality
+Try out the corosync CKPT functionality
--------------------------------------
su to ais user
larger checkpoint sizes with encryption and authentication. If you are not
seeing these results, please report to the mailing list.
-Try out the openais EVT functionality
+Try out the corosync EVT functionality
-------------------------------------
su to ais user
run testevt. This will execute various eventing API operations.
-Try out the openais EVS functionality
+Try out the corosync EVS functionality
-------------------------------------
su to ais user
run testevs. This will generate multicast messages and self deliver them
static struct corosync_api_v1 apidef_corosync_api_v1 = {
- .timer_add_duration = openais_timer_add_duration,
- .timer_add_absolute = openais_timer_add_absolute,
- .timer_delete = openais_timer_delete,
+ .timer_add_duration = corosync_timer_add_duration,
+ .timer_add_absolute = corosync_timer_add_absolute,
+ .timer_delete = corosync_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_private_data_get = corosync_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,
+ .ipc_conn_send_response = corosync_conn_send_response,
+ .ipc_conn_partner_get = corosync_conn_partner_get,
+ .ipc_refcnt_inc = corosync_ipc_flow_control_local_increment,
+ .ipc_refcnt_dec = corosync_ipc_flow_control_local_decrement,
+ .ipc_fc_create = corosync_ipc_flow_control_create,
+ .ipc_fc_destroy = corosync_ipc_flow_control_destroy,
.totem_nodeid_get = totempg_my_nodeid_get,
.totem_family_get = totempg_my_family_get,
.totem_ring_reenable = totempg_ring_reenable,
.tpg_joined_send_ok = totempg_groups_send_ok_joined,
.tpg_groups_mcast = (typedef_tpg_groups_mcast)totempg_groups_mcast_groups,
.tpg_groups_send_ok = (typedef_tpg_groups_send_ok)totempg_groups_send_ok_groups,
- .service_link_and_init = openais_service_link_and_init,
- .service_unlink_and_exit = openais_service_unlink_and_exit,
+ .service_link_and_init = corosync_service_link_and_init,
+ .service_unlink_and_exit = corosync_service_unlink_and_exit,
.plugin_interface_reference = lcr_ifact_reference,
.plugin_interface_release = lcr_ifact_release,
.error_memory_failure = NULL
.config_readconfig = aisparser_readconfig
};
-struct lcr_iface openais_aisparser_ver0[1] = {
+struct lcr_iface corosync_aisparser_ver0[1] = {
{
.name = "corosync_parser",
.version = 0,
}
};
-struct openais_service_handler *aisparser_get_handler_ver0 (void);
+struct corosync_service_handler *aisparser_get_handler_ver0 (void);
struct lcr_comp aisparser_comp_ver0 = {
.iface_count = 1,
- .ifaces = openais_aisparser_ver0
+ .ifaces = corosync_aisparser_ver0
};
__attribute__ ((constructor)) static void aisparser_comp_register (void) {
- lcr_interfaces_set (&openais_aisparser_ver0[0], &aisparser_iface_ver0);
+ lcr_interfaces_set (&corosync_aisparser_ver0[0], &aisparser_iface_ver0);
lcr_component_register (&aisparser_comp_ver0);
}
/*
* External API
*/
-unsigned int openais_flow_control_initialize (void)
+unsigned int corosync_flow_control_initialize (void)
{
unsigned int res;
return (0);
}
-unsigned int openais_flow_control_ipc_init (
+unsigned int corosync_flow_control_ipc_init (
unsigned int *flow_control_handle,
unsigned int service)
{
}
-unsigned int openais_flow_control_ipc_exit (
+unsigned int corosync_flow_control_ipc_exit (
unsigned int flow_control_handle)
{
hdb_handle_destroy (&flow_control_hdb, flow_control_handle);
return (0);
}
-unsigned int openais_flow_control_create (
+unsigned int corosync_flow_control_create (
unsigned int flow_control_handle,
unsigned int service,
void *id,
return (res);
}
-unsigned int openais_flow_control_destroy (
+unsigned int corosync_flow_control_destroy (
unsigned int flow_control_identifier,
unsigned int service,
unsigned char *id,
* Disable the ability for new messages to be sent for this service
* with the handle id of length id_len
*/
-unsigned int openais_flow_control_disable (
+unsigned int corosync_flow_control_disable (
unsigned int flow_control_handle)
{
struct flow_control_instance *instance;
* Enable the ability for new messagess to be sent for this service
* with the handle id of length id_len
*/
-unsigned int openais_flow_control_enable (
+unsigned int corosync_flow_control_enable (
unsigned int flow_control_handle)
{
struct flow_control_instance *instance;
COROSYNC_FLOW_CONTROL_STATE_ENABLED
};
-unsigned int openais_flow_control_initialize (void);
+unsigned int corosync_flow_control_initialize (void);
-unsigned int openais_flow_control_ipc_init (
+unsigned int corosync_flow_control_ipc_init (
unsigned int *flow_control_identifier,
unsigned int service);
-unsigned int openais_flow_control_ipc_exit (
+unsigned int corosync_flow_control_ipc_exit (
unsigned int flow_control_identifier);
-unsigned int openais_flow_control_create (
+unsigned int corosync_flow_control_create (
unsigned int flow_control_handle,
unsigned int service,
void *id,
void (*flow_control_state_set_fn) (void *context, enum corosync_flow_control_state flow_control_state),
void *context);
-unsigned int openais_flow_control_destroy (
+unsigned int corosync_flow_control_destroy (
unsigned int flow_control_identifier,
unsigned int service,
unsigned char *id,
unsigned int id_len);
-unsigned int openais_flow_control_disable (
+unsigned int corosync_flow_control_disable (
unsigned int flow_control_identifier);
-unsigned int openais_flow_control_enable (
+unsigned int corosync_flow_control_enable (
unsigned int flow_control_identifier);
#endif /* FLOW_H_DEFINED */
res_lib_response_init.header.error = error;
res_lib_response_init.conn_info = (mar_uint64_t)cinfo;
- openais_conn_send_response (
+ corosync_conn_send_response (
conn_info,
&res_lib_response_init,
sizeof (res_lib_response_init));
res_lib_dispatch_init.header.id = MESSAGE_RES_INIT;
res_lib_dispatch_init.header.error = error;
- openais_conn_send_response (
+ corosync_conn_send_response (
conn_info,
&res_lib_dispatch_init,
sizeof (res_lib_dispatch_init));
conn_info->flow_control = ais_service[conn_info->service]->flow_control;
conn_info->conn_info_partner->flow_control = ais_service[conn_info->service]->flow_control;
if (ais_service[conn_info->service]->flow_control == COROSYNC_LIB_FLOW_CONTROL_REQUIRED) {
- openais_flow_control_ipc_init (
+ corosync_flow_control_ipc_init (
&conn_info->flow_control_handle,
conn_info->service);
conn_info->state = CONN_STATE_DISCONNECTED;
conn_info->conn_info_partner->state = CONN_STATE_DISCONNECTED;
if (conn_info->flow_control_enabled == 1) {
- openais_flow_control_disable (conn_info->flow_control_handle);
+ corosync_flow_control_disable (conn_info->flow_control_handle);
}
return (0);
}
log_printf (LOG_LEVEL_NOTICE, "Enabling flow control [%d/%d] - [%d].\n",
entries_usedhw, SIZEQUEUE,
flow_control_local_count);
- openais_flow_control_enable (conn_info->flow_control_handle);
+ corosync_flow_control_enable (conn_info->flow_control_handle);
conn_info->flow_control_enabled = 1;
conn_info->conn_info_partner->flow_control_enabled = 1;
}
log_printf (LOG_LEVEL_NOTICE, "Disabling flow control [%d/%d] - [%d].\n",
entries_usedhw, SIZEQUEUE,
flow_control_local_count);
- openais_flow_control_disable (conn_info->flow_control_handle);
+ corosync_flow_control_disable (conn_info->flow_control_handle);
conn_info->flow_control_enabled = 0;
conn_info->conn_info_partner->flow_control_enabled = 0;
}
/*
* If flow control is required of the library handle, determine that
- * openais is not in synchronization and that totempg has room available
+ * corosync is not in synchronization and that totempg has room available
* to queue a message, otherwise tell the library we are busy and to
* try again later
*/
send_ok_joined_iovec.iov_base = (char *)header;
send_ok_joined_iovec.iov_len = header->size;
- send_ok_joined = totempg_groups_send_ok_joined (openais_group_handle,
+ send_ok_joined = totempg_groups_send_ok_joined (corosync_group_handle,
&send_ok_joined_iovec, 1);
send_ok =
res_overlay.header.id =
ais_service[service]->lib_engine[header->id].response_id;
res_overlay.header.error = SA_AIS_ERR_TRY_AGAIN;
- openais_conn_send_response (
+ corosync_conn_send_response (
conn_info,
&res_overlay,
res_overlay.header.size);
{
}
-void openais_ipc_init (
+void corosync_ipc_init (
void (*serialize_lock_fn) (void),
void (*serialize_unlock_fn) (void),
unsigned int gid_valid)
libais_server_fd = socket (PF_UNIX, SOCK_STREAM, 0);
if (libais_server_fd == -1) {
log_printf (LOG_LEVEL_ERROR ,"Cannot create libais client connections socket.\n");
- openais_exit_error (AIS_DONE_LIBAIS_SOCKET);
+ corosync_exit_error (AIS_DONE_LIBAIS_SOCKET);
};
totemip_nosigpipe(libais_server_fd);
res = fcntl (libais_server_fd, F_SETFL, O_NONBLOCK);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, "Could not set non-blocking operation on server socket: %s\n", strerror (errno));
- openais_exit_error (AIS_DONE_LIBAIS_SOCKET);
+ corosync_exit_error (AIS_DONE_LIBAIS_SOCKET);
}
#if !defined(OPENAIS_LINUX)
res = bind (libais_server_fd, (struct sockaddr *)&un_addr, AIS_SUN_LEN(&un_addr));
if (res) {
log_printf (LOG_LEVEL_ERROR, "ERROR: Could not bind AF_UNIX: %s.\n", strerror (errno));
- openais_exit_error (AIS_DONE_LIBAIS_BIND);
+ corosync_exit_error (AIS_DONE_LIBAIS_BIND);
}
listen (libais_server_fd, SERVER_BACKLOG);
/*
* Get the conn info private data
*/
-void *openais_conn_private_data_get (void *conn)
+void *corosync_conn_private_data_get (void *conn)
{
struct conn_info *conn_info = (struct conn_info *)conn;
/*
* Get the conn info partner connection
*/
-void *openais_conn_partner_get (void *conn)
+void *corosync_conn_partner_get (void *conn)
{
struct conn_info *conn_info = (struct conn_info *)conn;
}
}
-int openais_conn_send_response (
+int corosync_conn_send_response (
void *conn,
void *msg,
int mlen)
return (0);
}
-void openais_ipc_flow_control_create (
+void corosync_ipc_flow_control_create (
void *conn,
unsigned int service,
char *id,
{
struct conn_info *conn_info = (struct conn_info *)conn;
- openais_flow_control_create (
+ corosync_flow_control_create (
conn_info->flow_control_handle,
service,
id,
conn_info->conn_info_partner->flow_control_handle = conn_info->flow_control_handle;
}
-void openais_ipc_flow_control_destroy (
+void corosync_ipc_flow_control_destroy (
void *conn,
unsigned int service,
unsigned char *id,
{
struct conn_info *conn_info = (struct conn_info *)conn;
- openais_flow_control_destroy (
+ corosync_flow_control_destroy (
conn_info->flow_control_handle,
service,
id,
id_len);
}
-void openais_ipc_flow_control_local_increment (
+void corosync_ipc_flow_control_local_increment (
void *conn)
{
struct conn_info *conn_info = (struct conn_info *)conn;
pthread_mutex_unlock (&conn_info->flow_control_mutex);
}
-void openais_ipc_flow_control_local_decrement (
+void corosync_ipc_flow_control_local_decrement (
void *conn)
{
struct conn_info *conn_info = (struct conn_info *)conn;
extern int message_source_is_local (mar_message_source_t *source);
-extern void *openais_conn_partner_get (void *conn);
+extern void *corosync_conn_partner_get (void *conn);
-extern void *openais_conn_private_data_get (void *conn);
+extern void *corosync_conn_private_data_get (void *conn);
-extern int openais_conn_send_response (void *conn, void *msg, int mlen);
+extern int corosync_conn_send_response (void *conn, void *msg, int mlen);
-extern void openais_ipc_init (
+extern void corosync_ipc_init (
void (*serialize_lock_fn) (void),
void (*serialize_unlock_fn) (void),
unsigned int gid_valid);
-extern int openais_ipc_timer_add (
+extern int corosync_ipc_timer_add (
void *conn,
void (*timer_fn) (void *data),
void *data,
unsigned int msec_in_future,
timer_handle *handle);
-extern void openais_ipc_timer_del (
+extern void corosync_ipc_timer_del (
void *conn,
timer_handle timer_handle);
-extern void openais_ipc_timer_del_data (
+extern void corosync_ipc_timer_del_data (
void *conn,
timer_handle timer_handle);
-extern void openais_ipc_flow_control_create (
+extern void corosync_ipc_flow_control_create (
void *conn,
unsigned int service,
char *id,
void (*flow_control_state_set_fn) (void *context, enum corosync_flow_control_state flow_control_state_set),
void *context);
-extern void openais_ipc_flow_control_destroy (
+extern void corosync_ipc_flow_control_destroy (
void *conn,
unsigned int service,
unsigned char *id,
int id_len);
-extern void openais_ipc_flow_control_local_increment (
+extern void corosync_ipc_flow_control_local_increment (
void *conn);
-extern void openais_ipc_flow_control_local_decrement (
+extern void corosync_ipc_flow_control_local_decrement (
void *conn);
#endif /* IPC_H_DEFINED */
newstring[strlen (newstring) - 1] = '\0';
}
len = sprintf (log_string,
- "%s - prior to this log entry, openais logger dropped '%d' messages because of overflow.", newstring, dropped_log_entries + 1);
+ "%s - prior to this log entry, corosync logger dropped '%d' messages because of overflow.", newstring, dropped_log_entries + 1);
} else {
len = vsprintf (log_string, newstring, ap);
}
static void *aisexec_exit (void *arg)
{
if (api) {
- openais_service_unlink_all (api);
+ corosync_service_unlink_all (api);
}
#ifdef DEBUG_MEMPOOL
totempg_finalize ();
logsys_flush ();
- openais_exit_error (AIS_DONE_EXIT);
+ corosync_exit_error (AIS_DONE_EXIT);
/* never reached */
return NULL;
#define LOCALHOST_IP inet_addr("127.0.0.1")
-totempg_groups_handle openais_group_handle;
+totempg_groups_handle corosync_group_handle;
-struct totempg_group openais_group = {
+struct totempg_group corosync_group = {
.group = "a",
.group_len = 1
};
}
-static void openais_sync_completed (void)
+static void corosync_sync_completed (void)
{
}
-static int openais_sync_callbacks_retrieve (int sync_id,
+static int corosync_sync_callbacks_retrieve (int sync_id,
struct sync_callbacks *callbacks)
{
unsigned int ais_service_index;
passwd = getpwnam(main_config->user);
if (passwd == 0) {
log_printf (LOG_LEVEL_ERROR, "ERROR: The '%s' user is not found in /etc/passwd, please read the documentation.\n", main_config->user);
- openais_exit_error (AIS_DONE_UID_DETERMINE);
+ corosync_exit_error (AIS_DONE_UID_DETERMINE);
}
ais_uid = passwd->pw_uid;
endpwent ();
group = getgrnam (main_config->group);
if (group == 0) {
log_printf (LOG_LEVEL_ERROR, "ERROR: The '%s' group is not found in /etc/group, please read the documentation.\n", group->gr_name);
- openais_exit_error (AIS_DONE_GID_DETERMINE);
+ corosync_exit_error (AIS_DONE_GID_DETERMINE);
}
gid_valid = group->gr_gid;
endgrent ();
res = mempool_init (pool_sizes);
if (res == ENOMEM) {
log_printf (LOG_LEVEL_ERROR, "Couldn't allocate memory pools, not enough memory");
- openais_exit_error (AIS_DONE_MEMPOOL_INIT);
+ corosync_exit_error (AIS_DONE_MEMPOOL_INIT);
}
}
switch (fork ()) {
case -1:
- openais_exit_error (AIS_DONE_FORK);
+ corosync_exit_error (AIS_DONE_FORK);
break;
case 0:
/*
int iov_len,
unsigned int guarantee)
{
- return (totempg_groups_mcast_joined (openais_group_handle, iovec, iov_len, guarantee));
+ return (totempg_groups_mcast_joined (corosync_group_handle, iovec, iov_len, guarantee));
}
extern int main_send_ok (
struct iovec *iovec,
int iov_len)
{
- return (totempg_groups_send_ok_joined (openais_group_handle, iovec, iov_len));
+ return (totempg_groups_send_ok_joined (corosync_group_handle, iovec, iov_len));
}
int main (int argc, char **argv)
signal (SIGABRT, sigabrt_handler);
signal (SIGQUIT, sigquit_handler);
- openais_timer_init (
+ corosync_timer_init (
serialize_mutex_lock,
serialize_mutex_unlock);
0);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, "Corosync Executive couldn't open configuration object database component.\n");
- openais_exit_error (AIS_DONE_OBJDB);
+ corosync_exit_error (AIS_DONE_OBJDB);
}
objdb = (struct objdb_iface_ver0 *)objdb_p;
/*
* Bootstrap in the default configuration parser or use
- * the openais default built in parser if the configuration parser
+ * the corosync default built in parser if the configuration parser
* isn't overridden
*/
config_iface = getenv("COROSYNC_DEFAULT_CONFIG_IFACE");
config = (struct config_iface_ver0 *)config_p;
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, "Corosync Executive couldn't open configuration component '%s'\n", iface);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
res = config->config_readconfig(objdb, &error_string);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, error_string);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
log_printf (LOG_LEVEL_NOTICE, error_string);
config_modules[num_config_modules++] = config;
if (config_iface)
free(config_iface);
- res = openais_main_config_read (objdb, &error_string, &main_config);
+ res = corosync_main_config_read (objdb, &error_string, &main_config);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, error_string);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
res = totem_config_read (objdb, &totem_config, &error_string);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, error_string);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
res = totem_config_keyread (objdb, &totem_config, &error_string);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, error_string);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
res = totem_config_validate (&totem_config, &error_string);
if (res == -1) {
log_printf (LOG_LEVEL_ERROR, error_string);
- openais_exit_error (AIS_DONE_MAINCONFIGREAD);
+ corosync_exit_error (AIS_DONE_MAINCONFIGREAD);
}
- logsys_config_facility_set ("openais", main_config.syslog_facility);
+ logsys_config_facility_set ("corosync", main_config.syslog_facility);
logsys_config_mode_set (main_config.logmode);
logsys_config_file_set (&error_string, main_config.logfile);
&totem_config);
totempg_groups_initialize (
- &openais_group_handle,
+ &corosync_group_handle,
deliver_fn,
confchg_fn);
totempg_groups_join (
- openais_group_handle,
- &openais_group,
+ corosync_group_handle,
+ &corosync_group,
1);
/*
* This must occur after totempg is initialized because "this_ip" must be set
*/
- res = openais_service_defaults_link_and_init (api);
+ res = corosync_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);
+ corosync_exit_error (AIS_DONE_INIT_SERVICES);
}
- sync_register (openais_sync_callbacks_retrieve, openais_sync_completed,
+ sync_register (corosync_sync_callbacks_retrieve, corosync_sync_completed,
totem_config.vsf_type);
- res = openais_flow_control_initialize ();
+ res = corosync_flow_control_initialize ();
/*
* Drop root privleges to user 'ais'
aisexec_mempool_init ();
- openais_ipc_init (
+ corosync_ipc_init (
serialize_mutex_lock,
serialize_mutex_unlock,
gid_valid);
#define SIZEINB MESSAGE_SIZE_MAX
-extern struct totempg_group openais_group;
+extern struct totempg_group corosync_group;
-extern totempg_groups_handle openais_group_handle;
+extern totempg_groups_handle corosync_group_handle;
poll_handle aisexec_poll_handle;
unsigned int tags;
} logsys_logger;
-int openais_main_config_read (
+int corosync_main_config_read (
struct objdb_iface_ver0 *objdb,
char **error_string,
struct main_config *main_config)
char *group;
};
-extern int openais_main_config_read (
+extern int corosync_main_config_read (
struct objdb_iface_ver0 *objdb,
char **error_string,
struct main_config *main_config);
return (-1);
}
-unsigned int openais_service_link_and_init (
+unsigned int corosync_service_link_and_init (
struct corosync_api_v1 *corosync_api,
char *service_name,
unsigned int service_ver)
return (res);
}
-static int openais_service_unlink_common (
+static int corosync_service_unlink_common (
struct corosync_api_v1 *corosync_api,
unsigned int object_service_handle,
const char *service_name,
(void *)&service_id,
NULL);
- log_printf(LOG_LEVEL_NOTICE, "Unloading openais component: %s v%u\n",
+ log_printf(LOG_LEVEL_NOTICE, "Unloading corosync component: %s v%u\n",
service_name, service_version);
if (ais_service[*service_id]->exec_exit_fn) {
return lcr_ifact_release (*found_service_handle);
}
-extern unsigned int openais_service_unlink_and_exit (
+extern unsigned int corosync_service_unlink_and_exit (
struct corosync_api_v1 *corosync_api,
char *service_name,
unsigned int service_ver)
if ((strcmp (service_name, found_service_name) == 0) &&
(service_ver == *found_service_ver)) {
- res = openais_service_unlink_common (
+ res = corosync_service_unlink_common (
corosync_api, object_service_handle,
service_name, service_ver);
return (-1);
}
-extern unsigned int openais_service_unlink_all (
+extern unsigned int corosync_service_unlink_all (
struct corosync_api_v1 *corosync_api)
{
char *service_name;
unsigned int object_find_handle;
int found;
- log_printf(LOG_LEVEL_NOTICE, "Unloading all openais components\n");
+ log_printf(LOG_LEVEL_NOTICE, "Unloading all corosync components\n");
/*
* TODO
(void *)&service_ver,
NULL);
- openais_service_unlink_common (
+ corosync_service_unlink_common (
corosync_api, object_service_handle,
service_name, *service_ver);
/*
* Links default services into the executive
*/
-unsigned int openais_service_defaults_link_and_init (struct corosync_api_v1 *corosync_api)
+unsigned int corosync_service_defaults_link_and_init (struct corosync_api_v1 *corosync_api)
{
unsigned int i;
found_service_ver_atoi = atoi (found_service_ver);
- openais_service_link_and_init (
+ corosync_service_link_and_init (
corosync_api,
found_service_name,
found_service_ver_atoi);
for (i = 0;
i < sizeof (default_services) / sizeof (struct default_service); i++) {
- openais_service_link_and_init (
+ corosync_service_link_and_init (
corosync_api,
default_services[i].name,
default_services[i].ver);
/*
* Link and initialize a service
*/
-extern unsigned int openais_service_link_and_init (
+extern unsigned int corosync_service_link_and_init (
struct corosync_api_v1 *objdb,
char *service_name,
unsigned int service_ver);
/*
* Unlink and exit a service
*/
-extern unsigned int openais_service_unlink_and_exit (
+extern unsigned int corosync_service_unlink_and_exit (
struct corosync_api_v1 *objdb,
char *service_name,
unsigned int service_ver);
/*
- * Unlink and exit all openais services
+ * Unlink and exit all corosync services
*/
-extern unsigned int openais_service_unlink_all (
+extern unsigned int corosync_service_unlink_all (
struct corosync_api_v1 *objdb);
/*
* Load all of the default services
*/
-extern unsigned int openais_service_defaults_link_and_init (
+extern unsigned int corosync_service_defaults_link_and_init (
struct corosync_api_v1 *objdb);
extern struct corosync_service_engine *ais_service[];
static struct barrier_data barrier_data_process[PROCESSOR_COUNT_MAX];
-static struct openais_vsf_iface_ver0 *vsf_iface;
+static struct corosync_vsf_iface_ver0 *vsf_iface;
static int sync_barrier_send (struct memb_ring_id *ring_id);
unsigned int res;
unsigned int vsf_handle;
void *vsf_iface_p;
- char openais_vsf_type[1024];
+ char corosync_vsf_type[1024];
res = totempg_groups_initialize (
&sync_group_handle,
} else {
vsf_none = 0;
- sprintf (openais_vsf_type, "openais_vsf_%s", vsf_type);
+ sprintf (corosync_vsf_type, "corosync_vsf_%s", vsf_type);
res = lcr_ifact_reference (
&vsf_handle,
- openais_vsf_type,
+ corosync_vsf_type,
0,
&vsf_iface_p,
0);
}
log_printf (LOG_LEVEL_NOTICE,
- "Using virtual synchrony filter %s\n", openais_vsf_type);
+ "Using virtual synchrony filter %s\n", corosync_vsf_type);
- vsf_iface = (struct openais_vsf_iface_ver0 *)vsf_iface_p;
+ vsf_iface = (struct corosync_vsf_iface_ver0 *)vsf_iface_p;
vsf_iface->init (sync_primary_callback_fn);
}
#endif
}
-int openais_timer_init (
+int corosync_timer_init (
void (*serialize_lock_fn) (void),
void (*serialize_unlock_fn) (void))
{
return (res);
}
-int openais_timer_add_absolute (
+int corosync_timer_add_absolute (
unsigned long long nanosec_from_epoch,
void *data,
void (*timer_fn) (void *data),
return (res);
}
-int openais_timer_add_duration (
+int corosync_timer_add_duration (
unsigned long long nanosec_duration,
void *data,
void (*timer_fn) (void *data),
return (res);
}
-void openais_timer_delete (
+void corosync_timer_delete (
timer_handle timer_handle)
{
int unlock;
}
}
-void openais_timer_lock (void)
+void corosync_timer_lock (void)
{
pthread_mutex_lock (&timer_mutex);
}
-void openais_timer_unlock (void)
+void corosync_timer_unlock (void)
{
pthread_mutex_unlock (&timer_mutex);
}
#ifndef TIMER_H_DEFINED
#define TIMER_H_DEFINED
-typedef void * openais_timer_handle;
+typedef void * corosync_timer_handle;
-extern void openais_timer_init (
+extern void corosync_timer_init (
void (*serialize_lock) (void),
void (*serialize_unlock) (void));
-extern int openais_timer_add_duration (
+extern int corosync_timer_add_duration (
unsigned long long nanoseconds_in_future,
void *data,
void (*timer_fn) (void *data),
- openais_timer_handle *handle);
+ corosync_timer_handle *handle);
-extern int openais_timer_add_absolute (
+extern int corosync_timer_add_absolute (
unsigned long long nanoseconds_from_epoch,
void *data,
void (*timer_fn) (void *data),
- openais_timer_handle *handle);
+ corosync_timer_handle *handle);
-extern void openais_timer_delete (openais_timer_handle timer_handle);
+extern void corosync_timer_delete (corosync_timer_handle timer_handle);
-extern void openais_timer_delete_data (openais_timer_handle timer_handle);
+extern void corosync_timer_delete_data (corosync_timer_handle timer_handle);
-extern void openais_timer_lock (void);
+extern void corosync_timer_lock (void);
-extern void openais_timer_unlock (void);
+extern void corosync_timer_unlock (void);
#endif /* TIMER_H_DEFINED */
rundir = getenv ("OPENAIS_RUN_DIR");
if (rundir == NULL) {
- rundir = "/var/lib/openais";
+ rundir = "/var/lib/corosync";
}
res = mkdir (rundir, 0700);
}
-void _openais_exit_error (
+void _corosync_exit_error (
enum e_ais_done err, const char *file, unsigned int line)
{
log_printf (LOG_LEVEL_ERROR, "AIS Executive exiting "
*/
extern int name_match(SaNameT *name1, SaNameT *name2);
extern int mar_name_match(mar_name_t *name1, mar_name_t *name2);
-#define openais_exit_error(err) _openais_exit_error ((err), __FILE__, __LINE__)
-extern void _openais_exit_error (
+#define corosync_exit_error(err) _corosync_exit_error ((err), __FILE__, __LINE__)
+extern void _corosync_exit_error (
enum e_ais_done err, const char *file, unsigned int line);
extern char *getSaNameT (SaNameT *name);
extern char *strstr_rs (const char *haystack, const char *needle);
#ifndef VSF_H_DEFINED
#define VSF_H_DEFINED
-struct openais_vsf_iface_ver0 {
+struct corosync_vsf_iface_ver0 {
/*
* Executes a callback whenever component changes
/*
* lcrso object definition
*/
-static struct openais_vsf_iface_ver0 vsf_ykd_iface_ver0 = {
+static struct corosync_vsf_iface_ver0 vsf_ykd_iface_ver0 = {
.init = ykd_init,
.primary = ykd_primary
};
-static struct lcr_iface openais_vsf_ykd_ver0[1] = {
+static struct lcr_iface corosync_vsf_ykd_ver0[1] = {
{
- .name = "openais_vsf_ykd",
+ .name = "corosync_vsf_ykd",
.version = 0,
.versions_replace = 0,
.versions_replace_count = 0,
static struct lcr_comp vsf_ykd_comp_ver0 = {
.iface_count = 1,
- .ifaces = openais_vsf_ykd_ver0
+ .ifaces = corosync_vsf_ykd_ver0
};
__attribute__ ((constructor)) static void vsf_ykd_comp_register (void) {
#include <netinet/in.h>
#include "saAis.h"
-typedef SaUint64T openais_cfg_handle_t;
+typedef SaUint64T corosync_cfg_handle_t;
typedef enum {
OPENAIS_CFG_ADMINISTRATIVETARGET_SERVICEUNIT = 0,
typedef struct {
OpenaisCfgStateTrackCallbackT
- openaisCfgStateTrackCallback;
+ corosyncCfgStateTrackCallback;
} OpenaisCfgCallbacksT;
/*
#endif
SaAisErrorT
-openais_cfg_initialize (
- openais_cfg_handle_t *cfg_handle,
+corosync_cfg_initialize (
+ corosync_cfg_handle_t *cfg_handle,
const OpenaisCfgCallbacksT *cfgCallbacks);
SaAisErrorT
-openais_cfg_fd_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_fd_get (
+ corosync_cfg_handle_t cfg_handle,
SaSelectionObjectT *selectionObject);
SaAisErrorT
-openais_cfg_dispatch (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_dispatch (
+ corosync_cfg_handle_t cfg_handle,
SaDispatchFlagsT dispatchFlags);
SaAisErrorT
-openais_cfg_finalize (
- openais_cfg_handle_t cfg_handle);
+corosync_cfg_finalize (
+ corosync_cfg_handle_t cfg_handle);
SaAisErrorT
-openais_cfg_ring_status_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_ring_status_get (
+ corosync_cfg_handle_t cfg_handle,
char ***interface_names,
char ***status,
unsigned int *interface_count);
SaAisErrorT
-openais_cfg_ring_reenable (
- openais_cfg_handle_t cfg_handle);
+corosync_cfg_ring_reenable (
+ corosync_cfg_handle_t cfg_handle);
SaAisErrorT
-openais_cfg_service_load (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_service_load (
+ corosync_cfg_handle_t cfg_handle,
char *service_name,
unsigned int service_ver);
SaAisErrorT
-openais_cfg_service_unload (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_service_unload (
+ corosync_cfg_handle_t cfg_handle,
char *service_name,
unsigned int service_ver);
SaAisErrorT
-openais_cfg_administrative_state_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_administrative_state_get (
+ corosync_cfg_handle_t cfg_handle,
OpenaisCfgAdministrativeTargetT administrativeTarget,
OpenaisCfgAdministrativeStateT *administrativeState);
SaAisErrorT
-openais_cfg_administrative_state_set (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_administrative_state_set (
+ corosync_cfg_handle_t cfg_handle,
OpenaisCfgAdministrativeTargetT administrativeTarget,
OpenaisCfgAdministrativeStateT administrativeState);
SaAisErrorT
-openais_cfg_state_track (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_state_track (
+ corosync_cfg_handle_t cfg_handle,
SaUint8T trackFlags,
const OpenaisCfgStateNotificationT *notificationBuffer);
SaAisErrorT
-openais_cfg_state_track_stop (
- openais_cfg_handle_t cfg_handle);
+corosync_cfg_state_track_stop (
+ corosync_cfg_handle_t cfg_handle);
#ifdef __cplusplus
}
#define OPENAIS_CONFDB_H_DEFINED
/**
- * @addtogroup confdb_openais
+ * @addtogroup confdb_corosync
*
* @{
*/
#include <netinet/in.h>
/**
- * @addtogroup cpg_openais
+ * @addtogroup cpg_corosync
*
* @{
*/
#define LOG_LEVEL_CRIT LOG_CRIT
#define LOG_LEVEL_ERROR LOG_ERR
#define LOG_LEVEL_WARNING LOG_WARNING
-#define LOG_LEVEL_SECURITY LOG_WARNING // openais specific
+#define LOG_LEVEL_SECURITY LOG_WARNING // corosync specific
#define LOG_LEVEL_NOTICE LOG_NOTICE
#define LOG_LEVEL_INFO LOG_INFO
#define LOG_LEVEL_DEBUG LOG_DEBUG
#include <netinet/in.h>
/**
- * @defgroup openais Other API services provided by openais
+ * @defgroup corosync Other API services provided by corosync
*/
/**
- * @addtogroup evs_openais
+ * @addtogroup evs_corosync
*
* @{
*/
AIS_AMF_ADMINISTRATIVETARGET_SERVICEGROUP = 1,
AIS_AMF_ADMINISTRATIVETARGET_COMPONENTSERVICEINSTANCE = 2,
AIS_AMF_ADMINISTRATIVETARGET_NODE = 3
-} openaisAdministrativeTarget;
+} corosyncAdministrativeTarget;
typedef enum {
AIS_AMF_ADMINISTRATIVESTATE_UNLOCKED = 0,
AIS_AMF_ADMINISTRATIVESTATE_LOCKED = 1,
AIS_AMF_ADMINISTRATIVESTATE_STOPPING = 2
-} openaisAdministrativeState;
+} corosyncAdministrativeState;
#endif /* AIS_IPC_CFG_H_DEFINED */
/*
* Array location of various timeouts as
- * specified in openais.conf. The last enum
+ * specified in corosync.conf. The last enum
* specifies the size of the timeouts array and
* needs to remain the last item in the list.
*/
#!/bin/sh
#
-# openais Start the openais cluster service
+# corosync Start the corosync cluster service
#
# Author: Andrew Beekhof <abeekhof@suse.de>
# License: Revised BSD
# description: OpenAIS daemon
#
### BEGIN INIT INFO
-# Description: openais....
+# Description: corosync....
#
-# Short-Description: openais cluster services.
-# Provides: openais
+# Short-Description: corosync cluster services.
+# Provides: corosync
# Required-Start: $network
# Should-Start: $syslog
# Required-Stop: $network
Components generally depend upon other components and sometimes classes from
other components.
-Some components of openais are the evt service, the ckpt service, the clm
+Some components of corosync are the evt service, the ckpt service, the clm
service, the totem protocol, and others. If a defect is found in any of
these components, the entire ais executive must be stopped, replaced, and
restarted.
}
SaAisErrorT
-openais_cfg_initialize (
- openais_cfg_handle_t *cfg_handle,
+corosync_cfg_initialize (
+ corosync_cfg_handle_t *cfg_handle,
const OpenaisCfgCallbacksT *cfgCallbacks)
{
struct cfg_instance *cfg_instance;
}
SaAisErrorT
-openais_cfg_fd_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_fd_get (
+ corosync_cfg_handle_t cfg_handle,
SaSelectionObjectT *selectionObject)
{
struct cfg_instance *cfg_instance;
}
SaAisErrorT
-openais_cfg_dispatch (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_dispatch (
+ corosync_cfg_handle_t cfg_handle,
SaDispatchFlagsT dispatchFlags)
{
struct pollfd ufds;
int dispatch_avail;
struct cfg_instance *cfg_instance;
#ifdef COMPILE_OUT
- struct res_lib_openais_healthcheckcallback *res_lib_openais_healthcheckcallback;
- struct res_lib_openais_readinessstatesetcallback *res_lib_openais_readinessstatesetcallback;
- struct res_lib_openais_csisetcallback *res_lib_openais_csisetcallback;
- struct res_lib_openais_csiremovecallback *res_lib_openais_csiremovecallback;
+ struct res_lib_corosync_healthcheckcallback *res_lib_corosync_healthcheckcallback;
+ struct res_lib_corosync_readinessstatesetcallback *res_lib_corosync_readinessstatesetcallback;
+ struct res_lib_corosync_csisetcallback *res_lib_corosync_csisetcallback;
+ struct res_lib_corosync_csiremovecallback *res_lib_corosync_csiremovecallback;
struct res_lib_cfg_statetrackcallback *res_lib_cfg_statetrackcallback;
#endif
OpenaisCfgCallbacksT callbacks;
}
SaAisErrorT
-openais_cfg_finalize (
- openais_cfg_handle_t cfg_handle)
+corosync_cfg_finalize (
+ corosync_cfg_handle_t cfg_handle)
{
struct cfg_instance *cfg_instance;
SaAisErrorT error;
}
SaAisErrorT
-openais_cfg_ring_status_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_ring_status_get (
+ corosync_cfg_handle_t cfg_handle,
char ***interface_names,
char ***status,
unsigned int *interface_count)
}
SaAisErrorT
-openais_cfg_ring_reenable (
- openais_cfg_handle_t cfg_handle)
+corosync_cfg_ring_reenable (
+ corosync_cfg_handle_t cfg_handle)
{
struct cfg_instance *cfg_instance;
struct req_lib_cfg_ringreenable req_lib_cfg_ringreenable;
}
SaAisErrorT
-openais_cfg_service_load (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_service_load (
+ corosync_cfg_handle_t cfg_handle,
char *service_name,
unsigned int service_ver)
{
}
SaAisErrorT
-openais_cfg_service_unload (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_service_unload (
+ corosync_cfg_handle_t cfg_handle,
char *service_name,
unsigned int service_ver)
{
return (error);
}
SaAisErrorT
-openais_cfg_state_track (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_state_track (
+ corosync_cfg_handle_t cfg_handle,
SaUint8T trackFlags,
const OpenaisCfgStateNotificationT *notificationBuffer)
{
}
SaAisErrorT
-openais_cfg_state_track_stop (
- openais_cfg_handle_t cfg_handle)
+corosync_cfg_state_track_stop (
+ corosync_cfg_handle_t cfg_handle)
{
struct cfg_instance *cfg_instance;
struct req_lib_cfg_statetrackstop req_lib_cfg_statetrackstop;
}
SaAisErrorT
-openais_cfg_admin_state_get (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_admin_state_get (
+ corosync_cfg_handle_t cfg_handle,
OpenaisCfgAdministrativeTargetT administrativeTarget,
OpenaisCfgAdministrativeStateT *administrativeState)
{
}
SaAisErrorT
-openais_cfg_admin_state_set (
- openais_cfg_handle_t cfg_handle,
+corosync_cfg_admin_state_set (
+ corosync_cfg_handle_t cfg_handle,
OpenaisCfgAdministrativeTargetT administrativeTarget,
OpenaisCfgAdministrativeStateT administrativeState)
{
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * Provides access to data in the openais object database
+ * Provides access to data in the corosync object database
*/
#include <stdlib.h>
}
/**
- * @defgroup confdb_openais
- * @ingroup openais
+ * @defgroup confdb_corosync
+ * @ingroup corosync
*
* @{
*/
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * Provides a closed process group API using the openais executive
+ * Provides a closed process group API using the corosync executive
*/
#include <stdlib.h>
/**
- * @defgroup cpg_openais The closed process group API
- * @ingroup openais
+ * @defgroup cpg_corosync The closed process group API
+ * @ingroup corosync
*
* @{
*/
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * Provides an extended virtual synchrony API using the openais executive
+ * Provides an extended virtual synchrony API using the corosync executive
*/
#include <stdlib.h>
/**
- * @defgroup evs_openais The extended virtual synchrony passthrough API
- * @ingroup openais
+ * @defgroup evs_corosync The extended virtual synchrony passthrough API
+ * @ingroup corosync
*
* @{
*/
OPENAIS_CFG_0.82 {
global:
- openais_cfg_initialize;
- openais_cfg_fd_get;
- openais_cfg_dispatch;
- openais_cfg_finalize;
- openais_cfg_administrative_state_get;
- openais_cfg_administrative_state_set;
- openais_cfg_track;
- openais_cfg_track_stop;
- openais_cfg_ring_status_get;
- openais_cfg_ring_reenable;
- openais_cfg_service_load;
- openais_cfg_service_unload;
+ corosync_cfg_initialize;
+ corosync_cfg_fd_get;
+ corosync_cfg_dispatch;
+ corosync_cfg_finalize;
+ corosync_cfg_administrative_state_get;
+ corosync_cfg_administrative_state_set;
+ corosync_cfg_track;
+ corosync_cfg_track_stop;
+ corosync_cfg_ring_status_get;
+ corosync_cfg_ring_reenable;
+ corosync_cfg_service_load;
+ corosync_cfg_service_unload;
local:
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * Provides stand-alone access to data in the openais object database
+ * Provides stand-alone access to data in the corosync object database
* when aisexec is not running.
*/
html:
mkdir html
- groff -mandoc -Thtml openais_overview.8 > html/openais_overview.html
- groff -mandoc -Thtml openais.conf.5 > html/openais.conf.html
+ groff -mandoc -Thtml corosync_overview.8 > html/corosync_overview.html
+ groff -mandoc -Thtml corosync.conf.5 > html/corosync.conf.html
groff -mandoc -Thtml evs_overview.8 > html/evs_overview.html
groff -mandoc -Thtml evs_initialize.3 > html/evs_initialize.html
groff -mandoc -Thtml evs_finalize.3 > html/evs_finalize.html
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH AMF.CONF 5 2006-08-29 "openais Man Page"
+.TH AMF.CONF 5 2006-08-29 "corosync Man Page"
.SH NAME
-amf.conf - openais AMF configuration file
+amf.conf - corosync AMF configuration file
.SH DESCRIPTION
.B amf.conf
is the configuration file that determines the behaviour of the AIS Availability
-Management Framework service, AMF in the openais implementation.
+Management Framework service, AMF in the corosync implementation.
Entries in this file will for example determine what applications AMF will start
and how to supervise them.
domain name) as given to the host at boot time. This name is returned by the
shell command 'hostname'.
-Currently, AMF is enabled/disabled by an entry in the openais.conf file, see [1].
+Currently, AMF is enabled/disabled by an entry in the corosync.conf file, see [1].
It is default disabled.
Hans.Feldt at ericsson.com
.SH EXAMPLE
-For an AMF configuration file example, see the amf.conf file under the openais
+For an AMF configuration file example, see the amf.conf file under the corosync
.B conf
directory.
.TP
/etc/ais/amf.conf
.TP
-/etc/ais/openais.conf
+/etc/ais/corosync.conf
.SH "SEE ALSO"
-[1] openais_conf (5)
+[1] corosync_conf (5)
.TP
-[2] openais_overview (8)
+[2] corosync_overview (8)
.TP
[3] README.amf
.TP
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_DISPATCH 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_DISPATCH 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_dispatch \- Dispatches callbacks from the CONFDB service
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "int confdb_dispatch(confdb_handle_t " handle ", confdb_dispatch_t *" dispatch_types ");"
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_FD_GET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_FD_GET 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_fd_get \- Dispatches callbacks from the CONFDB service
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "int confdb_fd_get(confdb_handle_t " handle ", int *" fd ");"
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_FINALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_FINALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_finalize \- Terminate a connection to the CONFDB service
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "int confdb_finalize(confdb_handle_t " handle ");"
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_INITIALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_INITIALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_initialize \- Create a new connection to the ConfDb service
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "int confdb_initialize(confdb_handle_t *" handle ", confdb_callbacks_t *" callbacks ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_KEY_CREATE 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_KEY_CREATE 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_key_create \- Add a new key/value pair to the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_key_create(confdb_handle_t " handle ",
.BI unsigned int " parent_object_handle ",
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_KEY_DELETE 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_KEY_DELETE 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_key_delete \- Delete a key/value pair from the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_key_delete(confdb_handle_t " handle ",
.BI unsigned int " parent_object_handle ",
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_KEY_ITER 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_KEY_ITER 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_key_iter \- Iterate through key/value pairs in the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_key_iter_start(confdb_handle_t " handle ", unsigned int " parent_object_handle " ); "
.sp
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_KEY_REPLACE 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_KEY_REPLACE 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_key_replace \- Replace a key/value pair from the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_key_replace(confdb_handle_t " handle ", unsigned int " parent_object_handle ", void " *key_name ",
.BI int " key_name_len ",
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_OBJECT_CREATE 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_OBJECT_CREATE 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_object_create \- Create a new object in the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_object_create(confdb_handle_t " handle ", unsigned int " parent_object_handle ",
.BI void " *object_name ",
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_* 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_* 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_object_destroy \- Remove an object from the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_destroy(confdb_handle_t " handle ", unsigned int " object_handle ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_OBJECT_FIND 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_OBJECT_FIND 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_object_find \- Find a named object in the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_object_find_start(confdb_handle_t " handle ", unsigned int " parent_object_handle " ); "
.sp
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_OBJECT_ITER 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_OBJECT_ITER 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_object_iter \- Iterate through objects in the Configuration Database
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_object_iter_start(confdb_handle_t " handle ", unsigned int " parent_object_handle " ); "
.sp
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_OBJECT_PARENT_GET 3 2008-04-17 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_OBJECT_PARENT_GET 3 2008-04-17 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
confdb_parent_get \- Configuration Database Object Parent
.SH SYNOPSIS
-.B #include <openais/confdb.h>
+.B #include <corosync/confdb.h>
.sp
.BI "confdb_error_t confdb_object_parent_get(confdb_handle_t " handle ", unsigned int " object_handle ", unsigned int " *parent_object_handle ");"
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CONFDB_OVERVIEW 8 2006-03-06 "openais Man Page" "Openais Programmer's Manual"
+.TH CONFDB_OVERVIEW 8 2006-03-06 "corosync Man Page" "Openais Programmer's Manual"
.SH OVERVIEW
-The CONFDB library is delivered with the openais project. This library is used
-to examine manipulate the configuratin databser used by openais.
+The CONFDB library is delivered with the corosync project. This library is used
+to examine manipulate the configuratin databser used by corosync.
.PP
The library provides a mechanism to:
* Create new objects
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH OPENAIS_CONF 5 2006-03-28 "openais Man Page" "Openais Programmer's Manual"
+.TH OPENAIS_CONF 5 2006-03-28 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
-openais.conf - openais executive configuration file
+corosync.conf - corosync executive configuration file
.SH SYNOPSIS
-/etc/ais/openais.conf
+/etc/ais/corosync.conf
.SH DESCRIPTION
-The openais.conf instructs the openais executive about various parameters
-needed to control the openais executive. The configuration file consists of
+The corosync.conf instructs the corosync executive about various parameters
+needed to control the corosync executive. The configuration file consists of
bracketed top level directives. The possible directive choices are
.IR "totem { } , logging { } , event { } , and amf { }".
These directives are described below.
.TP
bindnetaddr
-This specifies the address which the openais executive should bind.
+This specifies the address which the corosync executive should bind.
This address should always end in zero. If the totem traffic should
be routed over 192.168.5.92, set bindnetaddr to 192.168.5.0.
.TP
mcastaddr
-This is the multicast address used by openais executive. The default
+This is the multicast address used by corosync executive. The default
should work for most networks, but the network administrator should be queried
about a multicast address to use. Avoid 224.x.x.x because this is a "config"
multicast address.
.TP
mcastport
This specifies the UDP port number. It is possible to use the same multicast
-address on a network with the openais services configured for different
+address on a network with the corosync services configured for different
UDP ports.
.PP
This timeout specifies in milliseconds after how long before receiving a token
the token is retransmitted. This will be automatically calculated if token
is modified. It is not recommended to alter this value without guidance from
-the openais community.
+the corosync community.
The default is 238 milliseconds.
hold
This timeout specifies in milliseconds how long the token should be held by
the representative when the protocol is under low utilization. It is not
-recommended to alter this value without guidance from the openais community.
+recommended to alter this value without guidance from the corosync community.
The default is 180 milliseconds.
is necessary to ensure the NIC is not overflowed with join messages on
formation of a new ring. A reasonable value for large rings (128 nodes) would
be 80msec. Other timer values must also change if this value is changed. Seek
-advice from the openais mailing list if trying to run larger configurations.
+advice from the corosync mailing list if trying to run larger configurations.
The default is 0 milliseconds.
This value will automatically be calculated from the token timeout and
problem_count_threshold but may be overridden. It is not recommended to
-override this value without guidance from the openais community.
+override this value without guidance from the corosync community.
The default is 47 milliseconds.
.SH "FILES"
.TP
-/etc/ais/openais.conf
-The openais executive configuration file.
+/etc/ais/corosync.conf
+The corosync executive configuration file.
.TP
/etc/ais/amf.conf
-The openais AMF configuration file.
+The corosync AMF configuration file.
.SH "SEE ALSO"
-.BR openais_overview (8), README.amf
+.BR corosync_overview (8), README.amf
.PP
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH OPENAIS_OVERVIEW 8 2006-05-10 "openais Man Page" "Openais Programmer's Manual"
+.TH OPENAIS_OVERVIEW 8 2006-05-10 "corosync Man Page" "Openais Programmer's Manual"
.SH OVERVIEW
-The openais project is a project to implement a production quality "Revised BSD"
+The corosync project is a project to implement a production quality "Revised BSD"
licensed implementation of the most recent SA Forum's Application Interface
Specification. The Application Interface Specification is a software API and
policies which are used to develop applications that maintain service during
state using the checkpointing service. When an active application fails,
a standby application recovers the state of the application. This
technique, called stateful application failover, provides the fundamental
-difference between openais and other systems that have come before it.
+difference between corosync and other systems that have come before it.
With stateful application failover, the end-application user doesn't
have to reload the application or redial a telephone. The full state
is recorded, so the end-application user sees no interruption in service.
end to end messaging. Finally a mechanism to synchronize access is
provided by the distributed lock service.
-The openais project also provides a group messaging toolkit called EVS.
+The corosync project also provides a group messaging toolkit called EVS.
The EVS service implements a messaging model known as Extended Virtual
Synchrony. This model allows one sender to transmit to many receivers.
Certain guarantees are provided for message and membership delivery
which make virtual synchrony ideal for developing distributed applications.
.SH QUICKSTART
-The openais executive must be configured. In the directory conf in the
+The corosync executive must be configured. In the directory conf in the
source distribution are several files that must be copied to the /etc/ais
-directory. If openais is packaged by a distro, this may be complete.
+directory. If corosync is packaged by a distro, this may be complete.
-The directory contains the file openais.conf. Please read the openais.conf(5)
-man page for details on the configuration options. The openais project will
+The directory contains the file corosync.conf. Please read the corosync.conf(5)
+man page for details on the configuration options. The corosync project will
work out of the box with the default configuration options, although the
administrator may desire different options.
-An user and group of the name "ais" must be added to the system. If openais
+An user and group of the name "ais" must be added to the system. If corosync
is packaged from a distro, this step should already be completed.
This can be achieved by executing:
[root@slickdeal root]# adduser ais -g ais
-The openais executive uses cryptographic techniques to ensure authenticity
-and privacy of the messages. In order for openais to be secure and operate,
+The corosync executive uses cryptographic techniques to ensure authenticity
+and privacy of the messages. In order for corosync to be secure and operate,
a private key must be generated and shared to all processors.
First generate the key on one of the nodes:
unix# ais-keygen
-openais authentication key generator.
+corosync authentication key generator.
.PP
Gathering 1024 bits for key from /dev/random.
.PP
-Writing openais key to /etc/ais/authkey.
+Writing corosync key to /etc/ais/authkey.
.PP
After this operation, a private key will be in the file /etc/ais/authkey.
unix#: install -D --group=0 --owner=0 --mode=0400 /path_to_authkey/authkey /etc/ais/authkey
-If a message "Invalid digest" appears from the openais executive, the keys
+If a message "Invalid digest" appears from the corosync executive, the keys
are not consistent between processors.
-Finally run the openais executive. If openais is packaged from a distro, it
+Finally run the corosync executive. If corosync is packaged from a distro, it
may be set to start on system start. It may also be turned off by default in
-which case the init script for openais must be enabled.
+which case the init script for corosync must be enabled.
After running aisexec, a list of all processors IP addresses running the ais
executive and configured on the same multicast address will appear. If they
don't appear, there may be a problem with multicast in the distro or hardware.
-If this happens, participation in the openais mailing list may help solve the
-problem. The email address is openais@lists.osdl.org.
+If this happens, participation in the corosync mailing list may help solve the
+problem. The email address is corosync@lists.osdl.org.
.SH USING LIBRARIES
-The openais AIS libraries have header files which must be included in the
+The corosync AIS libraries have header files which must be included in the
developer's application. Once the header file is included, the developer can
reference the AIS interfaces.
-The openais project recommends to distros to place include files in
-/usr/include/openais. The following include lines must be added to
+The corosync project recommends to distros to place include files in
+/usr/include/corosync. The following include lines must be added to
the application to use each of the following services:
-#include <openais/saClm.h> For the Cluster Membership B.01.01 service.
+#include <corosync/saClm.h> For the Cluster Membership B.01.01 service.
.PP
-#include <openais/saCkpt.h> For the Checkpointing B.01.01 service.
+#include <corosync/saCkpt.h> For the Checkpointing B.01.01 service.
.PP
-#include <openais/saEvt.h> For the Eventing B.01.01 service.
+#include <corosync/saEvt.h> For the Eventing B.01.01 service.
.PP
-#include <openais/ais_amf.h> For the AMF A.01.01 service.
+#include <corosync/ais_amf.h> For the AMF A.01.01 service.
.PP
-The openais project recommends to distros to place library files in
+The corosync project recommends to distros to place library files in
/usr/lib. The following link lines must be added to the LDFLAGS section
of the makefile.
each library individually.
.SH IPv6
-The openais project supports both IPv4 and IPv6 network addresses. The entire
+The corosync project supports both IPv4 and IPv6 network addresses. The entire
cluster must use either IPv4 or IPv6 for the cluster communication mechanism.
In order to use IPv6, IPv6 addresses must be specified in the bindnetaddr and
mcastaddr fields in the configuration file. The nodeid field must also be
IPv6 traffic.
.SH ARCHITECTURE
-The AIS libraries are a thin IPC interface to the openais executive. The
-openais executive provides services for the SA Forum AIS libraries as well
+The AIS libraries are a thin IPC interface to the corosync executive. The
+corosync executive provides services for the SA Forum AIS libraries as well
as the EVS and CPG libraries.
-The openais executive uses the Totem extended virtual synchrony protocol. The
+The corosync executive uses the Totem extended virtual synchrony protocol. The
advantage to the end user is excellent performance characteristics and a proven
protocol with excellent reliability. This protocol connects the processors
in a configuration together so they may communicate.
.SH ENVIRONMENT VARIABLES
-The openais executive process uses four environment variables during startup.
+The corosync executive process uses four environment variables during startup.
If these environment variables are not set, defaults will be used.
.TP
OPENAIS_MAIN_CONFIG_FILE
-This specifies the fully qualified path to the openais configuration file.
+This specifies the fully qualified path to the corosync configuration file.
-The default is /etc/ais/openais.conf.
+The default is /etc/ais/corosync.conf.
.TP
OPENAIS_AMF_CONFIG_FILE
-This specifies the fully qualified path to the openais Availability Management
+This specifies the fully qualified path to the corosync Availability Management
Framework configuration file.
The default is /etc/ais/amf.conf.
This specifies the LCRSO that is used to parse the configuration file. This
allows other configuration file parsers to be implemented within the system.
-The default is to use the default openais configuration file parser which
-parses the format specified in openais.conf (5).
+The default is to use the default corosync configuration file parser which
+parses the format specified in corosync.conf (5).
.TP
OPENAIS_TOTEM_AUTHKEY_FILE
The default is /etc/ais/authkey.
.SH SECURITY
-The openais executive optionally encrypts all messages sent over the network
-using the SOBER-128 stream cipher. The openais executive uses HMAC and SHA1 to
-authenticate all messages. The openais executive library uses SOBER-128
+The corosync executive optionally encrypts all messages sent over the network
+using the SOBER-128 stream cipher. The corosync executive uses HMAC and SHA1 to
+authenticate all messages. The corosync executive library uses SOBER-128
as a pseudo random number generator. The EVS library feeds the PRNG using
the /dev/random Linux device.
likely already compromised and a DOS attack is the least of the administration's
worries.
-The security in openais does not offer perfect forward secrecy because the keys
+The security in corosync does not offer perfect forward secrecy because the keys
are reused. It may be possible for an intruder by capturing packets in an
automated fashion to determine the shared key. No such automated attack has
been published as of yet. In this scenario, the cluster is likely already
compromised to allow the long-term capture of transmitted data.
-For security reasons, the openais executive binary aisexec should NEVER
+For security reasons, the corosync executive binary aisexec should NEVER
be setuid or setgid in the filesystem.
.PP
.SH SAFTEST COMPLIANCE
-The openais libraries are now nearly compliant with every aspect of the SA
+The corosync libraries are now nearly compliant with every aspect of the SA
Forum's AIS specification. The AMF service, however, is not compliant with the
B.01.01 specification. The remaining services pass most of the tests of the
saftest suite against the B.01.01 specification.
deployment..
.SH "SEE ALSO"
-.BR openais.conf (5),
+.BR corosync.conf (5),
.BR evs_overview (8)
.PP
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_CONTEXT_GET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_CONTEXT_GET 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_context_get \- Gets the context variable for a CPG instance
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_context_get(cpg_handle_t " handle ", void **" context ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_CONTEXT_SET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_CONTEXT_SET 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_context_set \- Sets the context variable for a CPG instance
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_context_set(cpg_handle_t " handle ", void *" context ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_DISPATCH 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_DISPATCH 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_dispatch \- Dispatches callbacks from the CPG service
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_dispatch(cpg_handle_t " handle ", cpg_dispatch_t *" dispatch_types ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_FD_GET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_FD_GET 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_fd_get \- Dispatches callbacks from the CPG service
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_fd_get(cpg_handle_t " handle ", int *" fd ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_FINALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_FINALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_finalize \- Terminate a connection to the CPG service
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_finalize(cpg_handle_t " handle ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_INITIALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_INITIALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_initialize \- Create a new connection to the CPG service
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_initialize(cpg_handle_t *" handle ", cpg_callbacks_t *" callbacks ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_JOIN 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_JOIN 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_join \- Joins one or more groups in the CPG library
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_join(cpg_handle_t " handle ", struct cpg_name *" group ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_LEAVE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_LEAVE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_leave \- Leave a group in the CPG library
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_leave(cpg_handle_t " handle ", struct cpg_name *" group ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_LOCAL_GET 3 2007-06-12 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_LOCAL_GET 3 2007-06-12 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_local_get \- Returns the local processor id
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_local_get(cpg_handle_t " handle ", unsigned int *" local_nodeid ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_MCAST_JOINED 3 3004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_mcast_joined \- Multicasts to all groups joined to a handle
.SH SYNOPSIS
.B #include <sys/uio.h>
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_mcast_joined(cpg_handle_t " handle ", cpg_gurantee_t " guarantee ", struct iovec *" iovec ", int " iov_len ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_MEMBERSHIP_GET 3 2006-02-06 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_MEMBERSHIP_GET 3 2006-02-06 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
cpg_membership_get \- Returns a list of members of a CPG library group
.SH SYNOPSIS
-.B #include <openais/cpg.h>
+.B #include <corosync/cpg.h>
.sp
.BI "int cpg_membership_get(cpg_handle_t " handle ", struct cpg_name *" groupName ", struct cpg_address *" member_list ", int *" member_list_entries ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH CPG_OVERVIEW 8 2006-03-06 "openais Man Page" "Openais Programmer's Manual"
+.TH CPG_OVERVIEW 8 2006-03-06 "corosync Man Page" "Openais Programmer's Manual"
.SH OVERVIEW
-The CPG library is delivered with the openais project. This library is used
+The CPG library is delivered with the corosync project. This library is used
to create distributed applications that operate properly during partitions, merges,
and faults.
.PP
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_DISPATCH 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_DISPATCH 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_dispatch \- Dispatches callbacks from the EVS service
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_dispatch(evs_handle_t " handle ", evs_dispatch_t *" dispatch_types ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_FD_GET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_FD_GET 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_fd_get \- Dispatches callbacks from the EVS service
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_fd_get(evs_handle_t " handle ", int *" fd ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_FINALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_FINALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_finalize \- Terminate a connection to the EVS service
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_finalize(evs_handle_t " handle ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_INITIALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_INITIALIZE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_initialize \- Create a new connection to the EVS service
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_initialize(evs_handle_t *" handle ", evs_callbacks_t *" callbacks ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_JOIN 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_JOIN 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_join \- Joins one or more groups in the EVS library
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_join(evs_handle_t " handle ", evs_group_t *" groups ", int " group_entries ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_LEAVE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_LEAVE 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_leave \- Leave one or more groups in the EVS library
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_leave(evs_handle_t " handle ", evs_group_t *" groups ", int group_entries);
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_MCAST_GROUPS 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_MCAST_GROUPS 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_join \- Multicast a message to selected groups
.SH SYNOPSIS
.B #include <sys/uio.h>
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_mcast_gruops(evs_handle_t " handle ", evs_guraantee_t " guarantee ", evs_group_t *" groups ", int group_entries, struct iovec *" iovec ", int " iov_len ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_MCAST_JOINED 3 3004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_MCAST_JOINED 3 3004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_join \- Multicasts to all groups joined to an handle
.SH SYNOPSIS
.B #include <sys/uio.h>
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_mcast_joined(evs_handle_t " handle ", evs_guraantee_t " guarantee ", struct iovec *" iovec ", int " iov_len ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_JOIN 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_JOIN 3 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH NAME
evs_join \- Joins one or more groups in the EVS library
.SH SYNOPSIS
-.B #include <openais/evs.h>
+.B #include <corosync/evs.h>
.sp
.BI "int evs_membership_get(evs_handle_t " handle ", struct evs_address *" local_addr ", struct evs_address *" member_list ", int *" member_list_entries ");
.SH DESCRIPTION
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH EVS_OVERVIEW 8 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.TH EVS_OVERVIEW 8 2004-08-31 "corosync Man Page" "Openais Programmer's Manual"
.SH OVERVIEW
-The EVS library is delivered with the openais project. This library is used
+The EVS library is delivered with the corosync project. This library is used
to create distributed applications that operate properly during partitions, merges,
and faults.
.PP
and merges. Since the configuration is sent in the stream of messages to the application,
the application can alter its behavior based upon the configuration changes.
.SH ARCHITECTURE AND ALGORITHM
-The EVS library is a thin IPC interface to the openais executive. The openais executive
+The EVS library is a thin IPC interface to the corosync executive. The corosync executive
provides services for the SA Forum AIS libraries as well as the EVS library.
.PP
-The openais executive uses a ring protocol and membership protocol to send messages
+The corosync executive uses a ring protocol and membership protocol to send messages
according to the semantics required by extended virtual synchrony. The ring protocol
creates a virtual ring of processors. A token is rotated around the ring of processors.
When the token is possessed by a processor, that processor may multicast messages to
larger message. Smaller messages obtain better messages per second, because the
time to send a message is not exactly the same.
.PP
-80% of CPU utilization occurs because of encryption and authentication. The openais
+80% of CPU utilization occurs because of encryption and authentication. The corosync
can be built without encryption and authentication for those with no security
requirements and low CPU utilization requirements. Even without encryption or
authentication, under heavy load, processor utilization can reach 25% on 1.5 GHZ
CPU processors.
.PP
-The current openais executive supports 16 processors, however, support for more processors is possible by changing defines in the openais executive. This is untested, however.
+The current corosync executive supports 16 processors, however, support for more processors is possible by changing defines in the corosync executive. This is untested, however.
.SH SECURITY
The EVS library encrypts all messages sent over the network using the SOBER-128
stream cipher. The EVS library uses HMAC and SHA1 to authenticate all messages.
<P>
-Welcome to the openais project's manual pages.
+Welcome to the corosync project's manual pages.
<P>
-<A HREF="openais_overview.html">openais_overview(8)</A>: Overview of the openais system.
+<A HREF="corosync_overview.html">corosync_overview(8)</A>: Overview of the corosync system.
<BR>
-<A HREF="openais.conf.html">openais.conf(5)</A>: Description of configuration options for openais.
+<A HREF="corosync.conf.html">corosync.conf(5)</A>: Description of configuration options for corosync.
<BR>
<P>
<A HREF="evs_overview.html">evs_overview(8)</A>: Overview of the evs extended virtual synchrony group communication toolkit.
.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" * THE POSSIBILITY OF SUCH DAMAGE.
.\" */
-.TH LOGSYS_OVERVIEW 8 2007-05-15 "openais Man Page" "Openais Programmer's Manual"
+.TH LOGSYS_OVERVIEW 8 2007-05-15 "corosync Man Page" "Openais Programmer's Manual"
.SH OVERVIEW
The logsys library provides a generically usable logging and tracing system for
use by applications. It supports many features including:
An example declaration would be:
-#include <openais/logsys.h>
+#include <corosync/logsys.h>
... (other #includes)
.corosync_get_service_engine_ver0 = evs_get_service_engine_ver0
};
-static struct lcr_iface openais_evs_ver0[1] = {
+static struct lcr_iface corosync_evs_ver0[1] = {
{
.name = "corosync_evs",
.version = 0,
static struct lcr_comp evs_comp_ver0 = {
.iface_count = 1,
- .ifaces = openais_evs_ver0
+ .ifaces = corosync_evs_ver0
};
static struct corosync_service_engine *evs_get_service_engine_ver0 (void)
}
__attribute__ ((constructor)) static void evs_comp_register (void) {
- lcr_interfaces_set (&openais_evs_ver0[0], &evs_service_engine_iface);
+ lcr_interfaces_set (&corosync_evs_ver0[0], &evs_service_engine_iface);
lcr_component_register (&evs_comp_ver0);
}
# author: Angus Salkeld (ahsalkeld@gmail.com)
#
# usage:
-# run this from the base directory of openais
+# run this from the base directory of corosync
#
SRCDIR=$(pwd)
ALL_TESTS="1 2 3 4"
-MAKE_LOG=/tmp/openais-make-test.log
+MAKE_LOG=/tmp/corosync-make-test.log
test_1()
{
test_3()
{
- local BUILD_DIR=/tmp/openais-make-test
+ local BUILD_DIR=/tmp/corosync-make-test
echo "O=$BUILD_DIR" > $SRCDIR/make_o_path
TEST="[3] make objects separately from the source"
test_4()
{
- BUILD_DIR=/tmp/openais-make-test
+ BUILD_DIR=/tmp/corosync-make-test
rm -f $SRCDIR/make_o_path
TEST="[4] make -f SRCDIR/Makefile from the builddir"
endif
LIBS = ../lib/libconfdb.a ../lib/libcfg.a
-BINARIES=corosync-objctl corosync-cfgtool keygen
+BINARIES=corosync-objctl corosync-cfgtool corosync-keygen
APPS_SRC=$(addsuffix .c,$(BINARIES))
EXTRA_CFLAGS = -I$(srcdir)include
corosync-cfgtool: corosync-cfgtool.o $(LIBS)
$(CC) $(LDFLAGS) -o $@ $< $(LIBS)
-keygen: keygen.o
+corosync-keygen: corosync-keygen.o
$(CC) $(LDFLAGS) -o $@ $<
clean:
static void ringstatusget_do (void)
{
SaAisErrorT result;
- openais_cfg_handle_t handle;
+ corosync_cfg_handle_t handle;
unsigned int interface_count;
char **interface_names;
char **interface_status;
unsigned int i;
printf ("Printing ring status.\n");
- result = openais_cfg_initialize (&handle, NULL);
+ result = corosync_cfg_initialize (&handle, NULL);
if (result != SA_AIS_OK) {
- printf ("Could not initialize openais configuration API error %d\n", result);
+ printf ("Could not initialize corosync configuration API error %d\n", result);
exit (1);
}
- openais_cfg_ring_status_get (handle,
+ corosync_cfg_ring_status_get (handle,
&interface_names,
&interface_status,
&interface_count);
printf ("\tstatus\t= %s\n", interface_status[i]);
}
- openais_cfg_finalize (handle);
+ corosync_cfg_finalize (handle);
}
static void ringreenable_do (void)
{
SaAisErrorT result;
- openais_cfg_handle_t handle;
+ corosync_cfg_handle_t handle;
printf ("Re-enabling all failed rings.\n");
- result = openais_cfg_initialize (&handle, NULL);
+ result = corosync_cfg_initialize (&handle, NULL);
if (result != SA_AIS_OK) {
- printf ("Could not initialize openais configuration API error %d\n", result);
+ printf ("Could not initialize corosync configuration API error %d\n", result);
exit (1);
}
- result = openais_cfg_ring_reenable (handle);
+ result = corosync_cfg_ring_reenable (handle);
if (result != SA_AIS_OK) {
printf ("Could not reenable ring error %d\n", result);
}
- openais_cfg_finalize (handle);
+ corosync_cfg_finalize (handle);
}
void service_load_do (char *service, unsigned int version)
{
SaAisErrorT result;
- openais_cfg_handle_t handle;
+ corosync_cfg_handle_t handle;
printf ("Loading service '%s' version '%d'\n", service, version);
- result = openais_cfg_initialize (&handle, NULL);
+ result = corosync_cfg_initialize (&handle, NULL);
if (result != SA_AIS_OK) {
- printf ("Could not initialize openais configuration API error %d\n", result);
+ printf ("Could not initialize corosync configuration API error %d\n", result);
exit (1);
}
- result = openais_cfg_service_load (handle, service, version);
+ result = corosync_cfg_service_load (handle, service, version);
if (result != SA_AIS_OK) {
printf ("Could not load service (error = %d)\n", result);
}
- openais_cfg_finalize (handle);
+ corosync_cfg_finalize (handle);
}
void service_unload_do (char *service, unsigned int version)
{
SaAisErrorT result;
- openais_cfg_handle_t handle;
+ corosync_cfg_handle_t handle;
printf ("Unloading service '%s' version '%d'\n", service, version);
- result = openais_cfg_initialize (&handle, NULL);
+ result = corosync_cfg_initialize (&handle, NULL);
if (result != SA_AIS_OK) {
- printf ("Could not initialize openais configuration API error %d\n", result);
+ printf ("Could not initialize corosync configuration API error %d\n", result);
exit (1);
}
- result = openais_cfg_service_unload (handle, service, version);
+ result = corosync_cfg_service_unload (handle, service, version);
if (result != SA_AIS_OK) {
printf ("Could not unload service (error = %d)\n", result);
}
- openais_cfg_finalize (handle);
+ corosync_cfg_finalize (handle);
}
void usage_do (void)
{
- printf ("openais-cfgtool [-s] [-r] [-l] [-u] [service_name] [-v] [version]\n\n");
- printf ("A tool for displaying and configuring active parameters within openais.\n");
+ printf ("corosync-cfgtool [-s] [-r] [-l] [-u] [service_name] [-v] [version]\n\n");
+ printf ("A tool for displaying and configuring active parameters within corosync.\n");
printf ("options:\n");
printf ("\t-s\tDisplays the status of the current rings on this node.\n");
printf ("\t-r\tReset redundant ring state cluster wide after a fault to\n");
res = fchown (authkey_fd, 0, 0);
fchmod (authkey_fd, 0400);
- printf ("Writing openais key to /etc/ais/authkey.\n");
+ printf ("Writing corosync key to /etc/ais/authkey.\n");
/*
* Write key