/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos72X src/bos/kernext/cluster/inc/cluster_states.h 1.13.2.14          */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* Restricted Materials of IBM                                            */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2010,2022              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)33       1.13.2.14  src/bos/kernext/cluster/inc/cluster_states.h, sysxcluster, bos72X, x2022_06A1 2/1/22 10:09:32 */

#ifndef _CLUSTER_STATES_H
#define _CLUSTER_STATES_H

/* Generic states applied to all resources. May eventually be 64 bit */

#define STATE_UP            0x00010000
#define STATE_DOWN          0x00020000
#define STATE_MEMBER        0x00040000
#define STATE_DOWN_2        0x00080000 /* Down waiting for post */
#define STATE_STALE         0x00100000 /* Was up at one point of time */
#define STATE_STOPPED       0x00200000 
#define STATE_PROD_JOIN     STATE_DOWN_2
/* the downbeat state is the cluster services are
 * down but the node is still heartbeating
 */
#define STATE_DOWNBEAT      0x00400000
#define STATE_JOIN_PENDING  0x00800000 /* To bring the state UP after join completed */ 
#define STATE_AST_PENDING   0x01000000 /* To indicate a node is being selected for AST */

/* Resource specific states follow */

/* Network Interfaces */
/* for kif_flags */
#define IF_CONF             0x00000001 /* IF is configured */
#define IF_NOADDR           0x00000002 /* IF has no addresses configured */
#define IF_NOIF             0X00000004 /* IF doesn't utilize network services */
#define IF_STORAGE          0x00000008 /* IF is storage based (ie: SANCOMM) */
#define IF_TCP_SOCK         0x00000010 /* IF is TCP socket based */
#define IF_REM              0x00000020 /* IF removal stage A */
#define IF_REM1             0x00000040 /* IF removal stage B */
#define IF_CNT              0x00000080 /* CAA must count I/O as lower layers don't */
#define IF_IPV4             0x00000100 /* IF contains IPV4 address(es) */
#define IF_IPV6             0x00000200 /* IF contains IPV6 address(es) */
#define IF_ATTACHING        0x00000400 /* IF is attaching, needs address(es) initialized */
#define IF_NDD_STATS_IOCTL  0x00000800 /* IF needs to have NDD stats refreshed via IOCTL */
#define IF_IB               0x00001000 /* Infiniband */
#define IF_GW               0x00002000 /* IF has a gateway IP configured on it */
#define IF_NDD_STATS_SKIP   0x00004000 /* IF stat refresh not required */


/* for kif_state */
#define IF_DOWN_SW          0x00000002 /* IF down because of sw flags */
#define IF_DOWN_HW_RECV     0x00000004 /* IF down because of failure to recv */
#define IF_DOWN_HW_XMIT     0x00000008 /* IF down because of failure to transmit */
#define IF_RESTRICTED       0x00000010 /* IF restricted from cluster monitoring */
#define IF_STALE            0x00000020 /* IF configuration data is stale */
#define IF_AIX_CONTROLLED   0x00000040 /* IF controlled by system */
#define IF_POLLING          0x00000080 /* System polling ping disk */
#define IF_STOP_IO          0x00000100 /* Stop polling ping disk */
#define IF_PRIORITY_IPV6    0x00000200 /* IPv6 prioritized over IPv4 for this IF */
#define IF_NM_PING          0x00000400 /* Netmon ping configured on the IF */
/* CAUTION: Any new state added here, should be restored in if_monitor otherwise
 * if_monitor will unset it
 */

/* for netmon_state */
#define NETMON_UP           0x0001 /* NETMON state is up for the IF */
#define NETMON_DOWN         0x0002 /* NETMON state is down for the IF */

/* Node specifics */
/* for knd_flags */
#define NODE_CONF           IF_CONF    /* Node data structures are configured. */
#define NODE_DELETED        0x00000002 /* Node deleted from cluster. Id not yet reclaimed. */
#define NODE_JOINED         0x00000004 /* Node has joined the cluster */
#define NODE_NEEDS_SFW_POST 0x00000008 /* Node has joined the cluster */
#define NODE_LOCAL          0x00000010 /* Node is local node in cluster */
#define NODE_DISK_COM       0x00000020 /* Node reachable only through repository disk */
#define NODE_LOST_LAN       0x00000040 /* Node reachable only through repository disk */

/* Node reason for down for t_node_data_t, 4 bits for this */

/* Downbeat implied         0 */
#define FLAG_LINK_UP        1
#define FLAG_LINK_DOWN      2
#define FLAG_NODE_SHUTDOWN  3
#define FLAG_FORCE_DOWN     4 
#define FLAG_FORCE_UP       5 

#endif /* _CLUSTER_STATES_H */
