| /* |
| * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. |
| * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved. |
| * |
| * This file is part of LVM2. |
| * |
| * This copyrighted material is made available to anyone wishing to use, |
| * modify, copy, or redistribute it subject to the terms and conditions |
| * of the GNU General Public License v.2. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| /* |
| * Abstraction layer for clvmd cluster communications |
| */ |
| |
| #ifndef _CLVMD_COMMS_H |
| #define _CLVMD_COMMS_H |
| |
| struct local_client; |
| |
| struct cluster_ops { |
| const char *name; |
| void (*cluster_init_completed) (void); |
| |
| int (*cluster_send_message) (const void *buf, int msglen, |
| const char *csid, |
| const char *errtext); |
| int (*name_from_csid) (const char *csid, char *name); |
| int (*csid_from_name) (char *csid, const char *name); |
| int (*get_num_nodes) (void); |
| int (*cluster_fd_callback) (struct local_client *fd, char *buf, int len, |
| const char *csid, |
| struct local_client **new_client); |
| int (*get_main_cluster_fd) (void); /* gets accept FD or cman cluster socket */ |
| int (*cluster_do_node_callback) (struct local_client *client, |
| void (*callback) (struct local_client *, |
| const char *csid, |
| int node_up)); |
| int (*is_quorate) (void); |
| |
| void (*get_our_csid) (char *csid); |
| void (*add_up_node) (const char *csid); |
| void (*reread_config) (void); |
| void (*cluster_closedown) (void); |
| |
| int (*get_cluster_name)(char *buf, int buflen); |
| |
| int (*sync_lock) (const char *resource, int mode, |
| int flags, int *lockid); |
| int (*sync_unlock) (const char *resource, int lockid); |
| |
| }; |
| |
| #ifdef USE_CMAN |
| # include <netinet/in.h> |
| # include "libcman.h" |
| # define CMAN_MAX_CSID_LEN 4 |
| # ifndef MAX_CSID_LEN |
| # define MAX_CSID_LEN CMAN_MAX_CSID_LEN |
| # endif |
| # undef MAX_CLUSTER_MEMBER_NAME_LEN |
| # define MAX_CLUSTER_MEMBER_NAME_LEN CMAN_MAX_NODENAME_LEN |
| # define CMAN_MAX_CLUSTER_MESSAGE 1500 |
| # define CLUSTER_PORT_CLVMD 11 |
| struct cluster_ops *init_cman_cluster(void); |
| #endif |
| |
| #ifdef USE_OPENAIS |
| # include <openais/saAis.h> |
| # include <corosync/totem/totem.h> |
| # define OPENAIS_CSID_LEN (sizeof(int)) |
| # define OPENAIS_MAX_CLUSTER_MESSAGE MESSAGE_SIZE_MAX |
| # define OPENAIS_MAX_CLUSTER_MEMBER_NAME_LEN SA_MAX_NAME_LENGTH |
| # ifndef MAX_CLUSTER_MEMBER_NAME_LEN |
| # define MAX_CLUSTER_MEMBER_NAME_LEN SA_MAX_NAME_LENGTH |
| # endif |
| # ifndef CMAN_MAX_CLUSTER_MESSAGE |
| # define CMAN_MAX_CLUSTER_MESSAGE MESSAGE_SIZE_MAX |
| # endif |
| # ifndef MAX_CSID_LEN |
| # define MAX_CSID_LEN sizeof(int) |
| # endif |
| struct cluster_ops *init_openais_cluster(void); |
| #endif |
| |
| #ifdef USE_COROSYNC |
| # include <corosync/corotypes.h> |
| # define COROSYNC_CSID_LEN (sizeof(int)) |
| # define COROSYNC_MAX_CLUSTER_MESSAGE 65535 |
| # define COROSYNC_MAX_CLUSTER_MEMBER_NAME_LEN CS_MAX_NAME_LENGTH |
| # ifndef MAX_CLUSTER_MEMBER_NAME_LEN |
| # define MAX_CLUSTER_MEMBER_NAME_LEN CS_MAX_NAME_LENGTH |
| # endif |
| # ifndef CMAN_MAX_CLUSTER_MESSAGE |
| # define CMAN_MAX_CLUSTER_MESSAGE 65535 |
| # endif |
| # ifndef MAX_CSID_LEN |
| # define MAX_CSID_LEN sizeof(int) |
| # endif |
| struct cluster_ops *init_corosync_cluster(void); |
| #endif |
| |
| #ifdef USE_SINGLENODE |
| # define SINGLENODE_CSID_LEN (sizeof(int)) |
| # ifndef MAX_CLUSTER_MEMBER_NAME_LEN |
| # define MAX_CLUSTER_MEMBER_NAME_LEN 64 |
| # endif |
| # define SINGLENODE_MAX_CLUSTER_MESSAGE 65535 |
| # ifndef MAX_CSID_LEN |
| # define MAX_CSID_LEN sizeof(int) |
| # endif |
| struct cluster_ops *init_singlenode_cluster(void); |
| #endif |
| |
| #endif |