-#define REDIS_CLUSTER_SLOTS 4096
-#define REDIS_CLUSTER_OK 0 /* Everything looks ok */
-#define REDIS_CLUSTER_FAIL 1 /* The cluster can't work */
-#define REDIS_CLUSTER_NEEDHELP 2 /* The cluster works, but needs some help */
-#define REDIS_CLUSTER_NAMELEN 40 /* sha1 hex length */
-#define REDIS_CLUSTER_PORT_INCR 10000 /* Cluster port = baseport + PORT_INCR */
-
-struct clusterNode;
-
-/* clusterLink encapsulates everything needed to talk with a remote node. */
-typedef struct clusterLink {
- int fd; /* TCP socket file descriptor */
- sds sndbuf; /* Packet send buffer */
- sds rcvbuf; /* Packet reception buffer */
- struct clusterNode *node; /* Node related to this link if any, or NULL */
-} clusterLink;
-
-/* Node flags */
-#define REDIS_NODE_MASTER 1 /* The node is a master */
-#define REDIS_NODE_SLAVE 2 /* The node is a slave */
-#define REDIS_NODE_PFAIL 4 /* Failure? Need acknowledge */
-#define REDIS_NODE_FAIL 8 /* The node is believed to be malfunctioning */
-#define REDIS_NODE_MYSELF 16 /* This node is myself */
-#define REDIS_NODE_HANDSHAKE 32 /* We have still to exchange the first ping */
-#define REDIS_NODE_NOADDR 64 /* We don't know the address of this node */
-#define REDIS_NODE_MEET 128 /* Send a MEET message to this node */
-#define REDIS_NODE_NULL_NAME "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
-
-struct clusterNode {
- char name[REDIS_CLUSTER_NAMELEN]; /* Node name, hex string, sha1-size */
- int flags; /* REDIS_NODE_... */
- unsigned char slots[REDIS_CLUSTER_SLOTS/8]; /* slots handled by this node */
- int numslaves; /* Number of slave nodes, if this is a master */
- struct clusterNode **slaves; /* pointers to slave nodes */
- struct clusterNode *slaveof; /* pointer to the master node */
- time_t ping_sent; /* Unix time we sent latest ping */
- time_t pong_received; /* Unix time we received the pong */
- char *configdigest; /* Configuration digest of this node */
- time_t configdigest_ts; /* Configuration digest timestamp */
- char ip[16]; /* Latest known IP address of this node */
- int port; /* Latest known port of this node */
- clusterLink *link; /* TCP/IP link with this node */
-};
-typedef struct clusterNode clusterNode;