From: Jakub Bogusz Date: Tue, 8 Nov 2005 19:54:10 +0000 (+0000) Subject: - included in cluster source X-Git-Tag: auto/th/cman-2_00_00-2~16 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fcman.git;a=commitdiff_plain;h=06164ec1f5ec920437d5a9e7870e1eee93c7b424 - included in cluster source Changed files: cnxman-socket.h -> 1.2 --- diff --git a/cnxman-socket.h b/cnxman-socket.h deleted file mode 100644 index 8094a49..0000000 --- a/cnxman-socket.h +++ /dev/null @@ -1,234 +0,0 @@ -/****************************************************************************** -******************************************************************************* -** -** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. -** Copyright (C) 2004 Red Hat, Inc. All rights reserved. -** -** 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. -** -******************************************************************************* -******************************************************************************/ - -/* CMAN socket interface header, - may be include by user or kernel code */ - -#ifndef __CNXMAN_SOCKET_H -#define __CNXMAN_SOCKET_H - -/* A currently unused number. TIPC also uses this number and you're unlikely - to be using both. - */ -#define AF_CLUSTER 30 -#define PF_CLUSTER AF_CLUSTER - -/* Protocol(socket) types */ -#define CLPROTO_MASTER 2 -#define CLPROTO_CLIENT 3 - -/* ioctls -- should register these properly */ -#define SIOCCLUSTER_NOTIFY _IOW('x', 0x01, int) -#define SIOCCLUSTER_REMOVENOTIFY _IO( 'x', 0x02) -#define SIOCCLUSTER_GETMEMBERS _IOR('x', 0x03, struct cl_cluster_nodelist) -#define SIOCCLUSTER_SETEXPECTED_VOTES _IOW('x', 0x04, int) -#define SIOCCLUSTER_ISQUORATE _IO( 'x', 0x05) -#define SIOCCLUSTER_ISLISTENING _IOW('x', 0x06, struct cl_listen_request) -#define SIOCCLUSTER_GETALLMEMBERS _IOR('x', 0x07, struct cl_cluster_nodelist) -#define SIOCCLUSTER_SET_VOTES _IOW('x', 0x08, int) -#define SIOCCLUSTER_GET_VERSION _IOR('x', 0x09, struct cl_version) -#define SIOCCLUSTER_SET_VERSION _IOW('x', 0x0a, struct cl_version) -#define SIOCCLUSTER_ISACTIVE _IO( 'x', 0x0b) -#define SIOCCLUSTER_KILLNODE _IOW('x', 0x0c, int) -#define SIOCCLUSTER_GET_JOINCOUNT _IO( 'x', 0x0d) -#define SIOCCLUSTER_SERVICE_REGISTER _IOW('x', 0x0e, char) -#define SIOCCLUSTER_SERVICE_UNREGISTER _IO('x', 0x0f) -#define SIOCCLUSTER_SERVICE_JOIN _IO( 'x', 0x10) -#define SIOCCLUSTER_SERVICE_LEAVE _IO( 'x', 0x20) -#define SIOCCLUSTER_SERVICE_SETSIGNAL _IOW('x', 0x30, int) -#define SIOCCLUSTER_SERVICE_STARTDONE _IOW('x', 0x40, unsigned int) -#define SIOCCLUSTER_SERVICE_GETEVENT _IOR('x', 0x50, struct cl_service_event) -#define SIOCCLUSTER_SERVICE_GETMEMBERS _IOR('x', 0x60, struct cl_cluster_nodelist) -#define SIOCCLUSTER_SERVICE_GLOBALID _IOR('x', 0x70, uint32_t) -#define SIOCCLUSTER_SERVICE_SETLEVEL _IOR('x', 0x80, int) -#define SIOCCLUSTER_GETNODE _IOWR('x', 0x90, struct cl_cluster_node) -#define SIOCCLUSTER_GETCLUSTER _IOWR('x', 0x91, struct cl_cluster_info) -#define SIOCCLUSTER_BARRIER _IOW('x', 0x0a0, struct cl_barrier_info) - -/* These were setsockopts */ -#define SIOCCLUSTER_PASS_SOCKET _IOW('x', 0x0b0, struct cl_passed_sock) -#define SIOCCLUSTER_SET_NODENAME _IOW('x', 0x0b1, char *) -#define SIOCCLUSTER_SET_NODEID _IOW('x', 0x0b2, int) -#define SIOCCLUSTER_JOIN_CLUSTER _IOW('x', 0x0b3, struct cl_join_cluster_info) -#define SIOCCLUSTER_LEAVE_CLUSTER _IOW('x', 0x0b4, int) - - -/* Maximum size of a cluster message */ -#define MAX_CLUSTER_MESSAGE 1500 -#define MAX_CLUSTER_MEMBER_NAME_LEN 255 -#define MAX_BARRIER_NAME_LEN 33 -#define MAX_SA_ADDR_LEN 12 -#define MAX_CLUSTER_NAME_LEN 16 - -/* Well-known cluster port numbers */ -#define CLUSTER_PORT_MEMBERSHIP 1 /* Mustn't block during cluster - * transitions! */ -#define CLUSTER_PORT_SERVICES 2 -#define CLUSTER_PORT_SYSMAN 10 /* Remote execution daemon */ -#define CLUSTER_PORT_CLVMD 11 /* Cluster LVM daemon */ -#define CLUSTER_PORT_SLM 12 /* LVM SLM (simple lock manager) */ - -/* Port numbers above this will be blocked when the cluster is inquorate or in - * transition */ -#define HIGH_PROTECTED_PORT 9 - -/* Reasons for leaving the cluster */ -#define CLUSTER_LEAVEFLAG_DOWN 0 /* Normal shutdown */ -#define CLUSTER_LEAVEFLAG_KILLED 1 -#define CLUSTER_LEAVEFLAG_PANIC 2 -#define CLUSTER_LEAVEFLAG_REMOVED 3 /* This one can reduce quorum */ -#define CLUSTER_LEAVEFLAG_REJECTED 4 /* Not allowed into the cluster in the - * first place */ -#define CLUSTER_LEAVEFLAG_INCONSISTENT 5 /* Our view of the cluster is - * in a minority */ -#define CLUSTER_LEAVEFLAG_DEAD 6 /* Discovered to be dead */ -#define CLUSTER_LEAVEFLAG_NORESPONSE 7 /* Didn't ACK message */ -#define CLUSTER_LEAVEFLAG_FORCE 0x10 /* Forced by command-line */ - -/* OOB messages sent to a local socket */ -#define CLUSTER_OOB_MSG_PORTCLOSED 1 -#define CLUSTER_OOB_MSG_STATECHANGE 2 -#define CLUSTER_OOB_MSG_SERVICEEVENT 3 - -/* Sendmsg flags, these are above the normal sendmsg flags so they don't - * interfere */ -#define MSG_NOACK 0x010000 /* Don't need an ACK for this message */ -#define MSG_QUEUE 0x020000 /* Queue the message for sending later */ -#define MSG_MULTICAST 0x080000 /* Message was sent to all nodes in the cluster - */ -#define MSG_ALLINT 0x100000 /* Send out of all interfaces */ -#define MSG_REPLYEXP 0x200000 /* Reply is expected */ -#define MSG_BCASTSELF 0x400000 /* Broadcast message also gets send to us */ - -typedef enum { NODESTATE_JOINING=1, NODESTATE_MEMBER, - NODESTATE_DEAD } nodestate_t; - - -struct sockaddr_cl { - unsigned short scl_family; - unsigned char scl_flags; - unsigned char scl_port; - int scl_nodeid; -}; - -/* - * This is how we pass the multicast & receive sockets into kernel space. - */ -struct cl_passed_sock { - int fd; /* FD of master socket to do multicast on */ - int number; /* Socket number, to match up recvonly & bcast - * sockets */ - int multicast; /* Is it multicast or receive ? */ -}; - -/* Cluster configuration info passed when we join the cluster */ -struct cl_join_cluster_info { - unsigned char votes; - unsigned int expected_votes; - unsigned int two_node; - unsigned int config_version; - - char cluster_name[17]; -}; - - -/* This is the structure, per node, returned from the membership ioctl */ -struct cl_cluster_node { - unsigned int size; - unsigned int node_id; - unsigned int us; - unsigned int leave_reason; - unsigned int incarnation; - nodestate_t state; - char name[MAX_CLUSTER_MEMBER_NAME_LEN]; - unsigned char votes; -}; - -/* The struct passed to the membership ioctls */ -struct cl_cluster_nodelist { - uint32_t max_members; - struct cl_cluster_node *nodes; -}; - -/* Structure passed to SIOCCLUSTER_ISLISTENING */ -struct cl_listen_request { - unsigned char port; - int nodeid; -}; - -/* A Cluster PORTCLOSED message - received by a local user as an OOB message */ -struct cl_portclosed_oob { - unsigned char cmd; /* CLUSTER_OOB_MSG_PORTCLOSED */ - unsigned char port; -}; - -/* Get all version numbers or set the config version */ -struct cl_version { - unsigned int major; - unsigned int minor; - unsigned int patch; - unsigned int config; -}; - -/* structure passed to barrier ioctls */ -struct cl_barrier_info { - char cmd; - char name[MAX_BARRIER_NAME_LEN]; - unsigned int flags; - unsigned long arg; -}; - -struct cl_cluster_info { - char name[MAX_CLUSTER_NAME_LEN+1]; - uint16_t number; -}; - -typedef enum { SERVICE_EVENT_STOP, SERVICE_EVENT_START, SERVICE_EVENT_FINISH, - SERVICE_EVENT_LEAVEDONE } service_event_t; - -typedef enum { SERVICE_START_FAILED, SERVICE_START_JOIN, SERVICE_START_LEAVE } - service_start_t; - -struct cl_service_event { - service_event_t type; - service_start_t start_type; - unsigned int event_id; - unsigned int last_stop; - unsigned int last_start; - unsigned int last_finish; - unsigned int node_count; -}; - - -/* Commands to the barrier ioctl */ -#define BARRIER_IOCTL_REGISTER 1 -#define BARRIER_IOCTL_CHANGE 2 -#define BARRIER_IOCTL_DELETE 3 -#define BARRIER_IOCTL_WAIT 4 - -/* Attributes of a barrier - bitmask */ -#define BARRIER_ATTR_AUTODELETE 1 -#define BARRIER_ATTR_MULTISTEP 2 -#define BARRIER_ATTR_MANUAL 4 -#define BARRIER_ATTR_ENABLED 8 -#define BARRIER_ATTR_CALLBACK 16 - -/* Attribute setting commands */ -#define BARRIER_SETATTR_AUTODELETE 1 -#define BARRIER_SETATTR_MULTISTEP 2 -#define BARRIER_SETATTR_ENABLED 3 -#define BARRIER_SETATTR_NODES 4 -#define BARRIER_SETATTR_CALLBACK 5 -#define BARRIER_SETATTR_TIMEOUT 6 - -#endif