#ifndef _MPATHADM_H
#define _MPATHADM_H
#ifdef __cplusplus
extern "C" {
#endif
#define LIST SUBCOMMAND(0)
#define SHOW SUBCOMMAND(1)
#define MODIFY SUBCOMMAND(2)
#define ENABLE SUBCOMMAND(3)
#define DISABLE SUBCOMMAND(4)
#define FAILOVER SUBCOMMAND(5)
#define OVERRIDE SUBCOMMAND(6)
#define ADD SUBCOMMAND(7)
#define REMOVE SUBCOMMAND(8)
#define MPATH_SUPPORT OBJECT(0)
#define LOGICAL_UNIT OBJECT(1)
#define INITIATOR_PORT OBJECT(2)
#define PATH OBJECT(3)
#define MAX_PLUGINNAME_LEN 256
#define ERROR_CLI_FAILED 99
int listMpathSupport(int operandLen, char *operand[]);
int showMpathSupport(int operandLen, char *operand[]);
int modifyMpathSupport(int operandLen, char *operand[], cmdOptions_t *options);
int listLogicalUnit(int operandLen, char *operand[], cmdOptions_t *options);
int listIndividualLogicalUnit(MP_OID luOid,
MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES luProps);
int showLogicalUnit(int operandLen, char *operand[]);
int showIndividualLogicalUnit(MP_OID luOid,
MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES luProps, MP_PLUGIN_PROPERTIES);
int modifyLogicalUnit(int operandLen, char *operand[], cmdOptions_t *options);
int failoverLogicalUnit(char *operand[]);
boolean_t getLogicalUnitOid(MP_CHAR *luFileName, MP_OID *pluOid);
int listInitiatorPort(int operandLen, char *operand[]);
int listIndividualInitiatorPort(MP_INITIATOR_PORT_PROPERTIES initProps);
int showInitiatorPort(int operandLen, char *operand[]);
int showIndividualInitiatorPort(MP_INITIATOR_PORT_PROPERTIES initProps);
int enablePath(cmdOptions_t *options);
int disablePath(cmdOptions_t *options);
int overridePath(cmdOptions_t *options);
boolean_t getPathOid(cmdOptions_t *options, MP_OID *pPathOid);
MP_LOAD_BALANCE_TYPE getLbValueFromString(char *str);
char *getMpStatusStr(MP_STATUS mpstatus);
void displayArray(MP_CHAR *arrayToDisplay, int arraySize);
void displayWideArray(MP_WCHAR *arrayToDisplay, int arraySize);
char *getPathStateStr(MP_PATH_STATE pathState);
char *getAccessStateStr(MP_ACCESS_STATE_TYPE accessState);
MP_CHAR *getStringArray(MP_CHAR *arrayToDisplay, int arraySize);
boolean_t compareLUName(MP_CHAR *cmpString, MP_CHAR *deviceFileName);
void displayLoadBalanceString(MP_LOAD_BALANCE_TYPE lbVal);
void displayLogicalUnitNameTypeString(MP_LOGICAL_UNIT_NAME_TYPE typeVal);
void displayTransportTypeString(MP_PORT_TRANSPORT_TYPE transportTypeVal);
#ifdef __cplusplus
}
#endif
#endif