186d7f5d3SJohn Marino /* $NetBSD: clvmd-comms.h,v 1.1.1.3 2009/12/02 00:27:01 haad Exp $ */ 286d7f5d3SJohn Marino 386d7f5d3SJohn Marino /* 486d7f5d3SJohn Marino * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. 586d7f5d3SJohn Marino * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved. 686d7f5d3SJohn Marino * 786d7f5d3SJohn Marino * This file is part of LVM2. 886d7f5d3SJohn Marino * 986d7f5d3SJohn Marino * This copyrighted material is made available to anyone wishing to use, 1086d7f5d3SJohn Marino * modify, copy, or redistribute it subject to the terms and conditions 1186d7f5d3SJohn Marino * of the GNU General Public License v.2. 1286d7f5d3SJohn Marino * 1386d7f5d3SJohn Marino * You should have received a copy of the GNU General Public License 1486d7f5d3SJohn Marino * along with this program; if not, write to the Free Software Foundation, 1586d7f5d3SJohn Marino * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1686d7f5d3SJohn Marino */ 1786d7f5d3SJohn Marino 1886d7f5d3SJohn Marino /* 1986d7f5d3SJohn Marino * Abstraction layer for clvmd cluster communications 2086d7f5d3SJohn Marino */ 2186d7f5d3SJohn Marino 2286d7f5d3SJohn Marino #ifndef _CLVMD_COMMS_H 2386d7f5d3SJohn Marino #define _CLVMD_COMMS_H 2486d7f5d3SJohn Marino 2586d7f5d3SJohn Marino struct local_client; 2686d7f5d3SJohn Marino 2786d7f5d3SJohn Marino struct cluster_ops { 2886d7f5d3SJohn Marino void (*cluster_init_completed) (void); 2986d7f5d3SJohn Marino 3086d7f5d3SJohn Marino int (*cluster_send_message) (const void *buf, int msglen, 3186d7f5d3SJohn Marino const char *csid, 3286d7f5d3SJohn Marino const char *errtext); 3386d7f5d3SJohn Marino int (*name_from_csid) (const char *csid, char *name); 3486d7f5d3SJohn Marino int (*csid_from_name) (char *csid, const char *name); 3586d7f5d3SJohn Marino int (*get_num_nodes) (void); 3686d7f5d3SJohn Marino int (*cluster_fd_callback) (struct local_client *fd, char *buf, int len, 3786d7f5d3SJohn Marino const char *csid, 3886d7f5d3SJohn Marino struct local_client **new_client); 3986d7f5d3SJohn Marino int (*get_main_cluster_fd) (void); /* gets accept FD or cman cluster socket */ 4086d7f5d3SJohn Marino int (*cluster_do_node_callback) (struct local_client *client, 4186d7f5d3SJohn Marino void (*callback) (struct local_client *, 4286d7f5d3SJohn Marino const char *csid, 4386d7f5d3SJohn Marino int node_up)); 4486d7f5d3SJohn Marino int (*is_quorate) (void); 4586d7f5d3SJohn Marino 4686d7f5d3SJohn Marino void (*get_our_csid) (char *csid); 4786d7f5d3SJohn Marino void (*add_up_node) (const char *csid); 4886d7f5d3SJohn Marino void (*reread_config) (void); 4986d7f5d3SJohn Marino void (*cluster_closedown) (void); 5086d7f5d3SJohn Marino 5186d7f5d3SJohn Marino int (*get_cluster_name)(char *buf, int buflen); 5286d7f5d3SJohn Marino 5386d7f5d3SJohn Marino int (*sync_lock) (const char *resource, int mode, 5486d7f5d3SJohn Marino int flags, int *lockid); 5586d7f5d3SJohn Marino int (*sync_unlock) (const char *resource, int lockid); 5686d7f5d3SJohn Marino 5786d7f5d3SJohn Marino }; 5886d7f5d3SJohn Marino 5986d7f5d3SJohn Marino #ifdef USE_GULM 6086d7f5d3SJohn Marino # include "tcp-comms.h" 6186d7f5d3SJohn Marino struct cluster_ops *init_gulm_cluster(void); 6286d7f5d3SJohn Marino #define MAX_CSID_LEN GULM_MAX_CSID_LEN 6386d7f5d3SJohn Marino #define MAX_CLUSTER_MEMBER_NAME_LEN GULM_MAX_CLUSTER_MEMBER_NAME_LEN 6486d7f5d3SJohn Marino #endif 6586d7f5d3SJohn Marino 6686d7f5d3SJohn Marino #ifdef USE_CMAN 6786d7f5d3SJohn Marino # include <netinet/in.h> 6886d7f5d3SJohn Marino # include "libcman.h" 6986d7f5d3SJohn Marino # define CMAN_MAX_CSID_LEN 4 7086d7f5d3SJohn Marino # ifndef MAX_CSID_LEN 7186d7f5d3SJohn Marino # define MAX_CSID_LEN CMAN_MAX_CSID_LEN 7286d7f5d3SJohn Marino # endif 7386d7f5d3SJohn Marino # undef MAX_CLUSTER_MEMBER_NAME_LEN 7486d7f5d3SJohn Marino # define MAX_CLUSTER_MEMBER_NAME_LEN CMAN_MAX_NODENAME_LEN 7586d7f5d3SJohn Marino # define CMAN_MAX_CLUSTER_MESSAGE 1500 7686d7f5d3SJohn Marino # define CLUSTER_PORT_CLVMD 11 7786d7f5d3SJohn Marino struct cluster_ops *init_cman_cluster(void); 7886d7f5d3SJohn Marino #endif 7986d7f5d3SJohn Marino 8086d7f5d3SJohn Marino #ifdef USE_OPENAIS 8186d7f5d3SJohn Marino # include <openais/saAis.h> 8286d7f5d3SJohn Marino # include <corosync/totem/totem.h> 8386d7f5d3SJohn Marino # define OPENAIS_CSID_LEN (sizeof(int)) 8486d7f5d3SJohn Marino # define OPENAIS_MAX_CLUSTER_MESSAGE MESSAGE_SIZE_MAX 8586d7f5d3SJohn Marino # define OPENAIS_MAX_CLUSTER_MEMBER_NAME_LEN SA_MAX_NAME_LENGTH 8686d7f5d3SJohn Marino # ifndef MAX_CLUSTER_MEMBER_NAME_LEN 8786d7f5d3SJohn Marino # define MAX_CLUSTER_MEMBER_NAME_LEN SA_MAX_NAME_LENGTH 8886d7f5d3SJohn Marino # endif 8986d7f5d3SJohn Marino # ifndef CMAN_MAX_CLUSTER_MESSAGE 9086d7f5d3SJohn Marino # define CMAN_MAX_CLUSTER_MESSAGE MESSAGE_SIZE_MAX 9186d7f5d3SJohn Marino # endif 9286d7f5d3SJohn Marino # ifndef MAX_CSID_LEN 9386d7f5d3SJohn Marino # define MAX_CSID_LEN sizeof(int) 9486d7f5d3SJohn Marino # endif 9586d7f5d3SJohn Marino struct cluster_ops *init_openais_cluster(void); 9686d7f5d3SJohn Marino #endif 9786d7f5d3SJohn Marino 9886d7f5d3SJohn Marino #ifdef USE_COROSYNC 9986d7f5d3SJohn Marino # include <corosync/corotypes.h> 10086d7f5d3SJohn Marino # define COROSYNC_CSID_LEN (sizeof(int)) 10186d7f5d3SJohn Marino # define COROSYNC_MAX_CLUSTER_MESSAGE 65535 10286d7f5d3SJohn Marino # define COROSYNC_MAX_CLUSTER_MEMBER_NAME_LEN CS_MAX_NAME_LENGTH 10386d7f5d3SJohn Marino # ifndef MAX_CLUSTER_MEMBER_NAME_LEN 10486d7f5d3SJohn Marino # define MAX_CLUSTER_MEMBER_NAME_LEN CS_MAX_NAME_LENGTH 10586d7f5d3SJohn Marino # endif 10686d7f5d3SJohn Marino # ifndef CMAN_MAX_CLUSTER_MESSAGE 10786d7f5d3SJohn Marino # define CMAN_MAX_CLUSTER_MESSAGE 65535 10886d7f5d3SJohn Marino # endif 10986d7f5d3SJohn Marino # ifndef MAX_CSID_LEN 11086d7f5d3SJohn Marino # define MAX_CSID_LEN sizeof(int) 11186d7f5d3SJohn Marino # endif 11286d7f5d3SJohn Marino struct cluster_ops *init_corosync_cluster(void); 11386d7f5d3SJohn Marino #endif 11486d7f5d3SJohn Marino 11586d7f5d3SJohn Marino 11686d7f5d3SJohn Marino #endif 117