/* * Copyright (C) 2017 Red Hat, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Author: Gris Ge */ #ifndef _LIB_OPEN_ISCSI_USR_SESSION_H_ #define _LIB_OPEN_ISCSI_USR_SESSION_H_ #include "libopeniscsiusr_common.h" #include /** * iscsi_session_sid_get() - Retrieve iSCSI session ID of specified session. * * Retrieve iSCSI session ID. The session ID here is the integer used * in '/sys/class/iscsi_session/session/' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * uint32_t. */ __DLL_EXPORT uint32_t iscsi_session_sid_get(struct iscsi_session *se); /** * iscsi_session_persistent_address_get() - Retrieve iSCSI target persistent * address of specified session * * Retrieve the iSCSI target persistent address of specified iSCSI session. * The 'persistent address' is the network address where iSCSI initiator send * initial request. When iSCSI redirection in use, this address might not be * the network address used for actual iSCSI transaction. * Please use `iscsi_session_address_get()` for target network address of * iSCSI transaction. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not supported. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_persistent_address_get (struct iscsi_session *se); /** * iscsi_session_persistent_port_get() - Retrieve iSCSI target persistent * port of specified session * * Retrieve the iSCSI target persistent port of specified iSCSI session. * The 'persistent port' is the network port where iSCSI initiator send * initial request. When iSCSI redirection in use, this port might not be * the network port used for actual iSCSI transaction. * Please use `iscsi_session_port_get()` for target network address of * iSCSI transaction. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_persistent_port_get (struct iscsi_session *se); /** * iscsi_session_target_name_get() - Retrieve iSCSI target name of specified * session * * Retrieve the iSCSI target name of specified iSCSI session. * The iSCSI Target Name specifies the worldwide unique name of the target. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_target_name_get (struct iscsi_session *se); /** * iscsi_session_username_get() - Retrieve authentication username of specified * session. * * Retrieve the authentication username of specified iSCSI session. * Currently open-iscsi only support CHAP authentication method. * It's controlled this setting in iscsid.conf: * 'node.session.auth.username' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not using CHAP authentication or failed * to read authentication information. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_username_get(struct iscsi_session *se); /** * iscsi_session_password_get() - Retrieve authentication password of specified * session. * * Retrieve the authentication password of specified iSCSI session. * Currently open-iscsi only support CHAP authentication method. * It's controlled this setting in iscsid.conf: * 'node.session.auth.password' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not using CHAP authentication or failed * to read authentication information. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_password_get(struct iscsi_session *se); /** * iscsi_session_username_in_get() - Retrieve authentication username of * specified session. * * Retrieve the inbound authentication username of specified iSCSI session. * Currently open-iscsi only support CHAP authentication method. * The inbound authentication here means the iSCSI initiator authenticates the * iSCSI target using CHAP. * It's controlled this setting in iscsid.conf: * 'node.session.auth.username_in' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not using inbound CHAP authentication or * failed to read authentication information. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_username_in_get (struct iscsi_session *se); /** * iscsi_session_password_in_get() - Retrieve authentication password of * specified session. * * Retrieve the inbound authentication password of specified iSCSI session. * Currently open-iscsi only support CHAP authentication method. * The inbound authentication here means the iSCSI initiator authenticates the * iSCSI target using CHAP. * It's controlled this setting in iscsid.conf: * 'node.session.auth.password_in' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not using inbound CHAP authentication or * failed to read authentication information. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_password_in_get (struct iscsi_session *se); /** * iscsi_session_recovery_tmo_get() - Retrieve recovery timeout value of * specified session * * Retrieve the recovery timeout value of specified iSCSI session. * The recovery timeout here means the seconds of time to wait for session * re-establishment before failing SCSI commands back to the application when * running the Linux SCSI Layer error handler. * It could be controlled via this setting in iscsid.conf: * 'node.session.timeo.replacement_timeout'. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. If the value is 0, IO will be failed immediately. If the value * is less than 0, IO will remain queued until the session is logged back * in, or until the user runs the logout command. */ __DLL_EXPORT int32_t iscsi_session_recovery_tmo_get(struct iscsi_session *se); /** * iscsi_session_lu_reset_tmo_get() - Retrieve logical unit timeout value of * specified session * * Retrieve the logical unit timeout value of specified iSCSI session. * The logical unit timeout here means the seconds of time to wait for a logical * unit response before before failing the operation and trying session * re-establishment. * It could be controlled via this setting in iscsid.conf: * 'node.session.err_timeo.lu_reset_timeout' * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_lu_reset_tmo_get(struct iscsi_session *se); /** * iscsi_session_tgt_reset_tmo_get() - Retrieve target response timeout value of * of specified session * * Retrieve the target response timeout value of specified iSCSI session. * The target response timeout here means the seconds of time to wait for a * target response before before failing the operation and trying session * re-establishment. * It could be controlled via this setting in iscsid.conf: * 'node.session.err_timeo.tgt_reset_timeout'. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_tgt_reset_tmo_get(struct iscsi_session *se); /** * iscsi_session_abort_tmo_get() - Retrieve abort response timeout value of * specified session * * Retrieve the abort response timeout value of specified iSCSI session. * The abort response timeout here means the seconds of time to wait for a * abort response before before failing the operation and trying session * re-establishment. * It could be controlled via this setting in iscsid.conf: * 'node.session.err_timeo.abort_timeout'. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_abort_tmo_get(struct iscsi_session *se); /** * iscsi_session_tpgt_get() - Retrieve target portal group tag of specified * session * * Retrieve the target portal group tag of specified iSCSI session. * * The target portal group tag is a value that uniquely identifies a portal * group within an iSCSI target node. This key carries the value of the tag of * the portal group that is servicing the Login request. The iSCSI target * returns this key to the initiator in the Login Response PDU to the first * Login Request PDU that has the C bit set to 0 when TargetName is given by the * initiator. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_tpgt_get(struct iscsi_session *se); /** * iscsi_session_address_get() - Retrieve iSCSI target address of specified * session * * Retrieve the iSCSI target network address of specified iSCSI session. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * const char *. Empty string if not supported. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT const char *iscsi_session_address_get (struct iscsi_session *se); /** * iscsi_session_port_get() - Retrieve iSCSI target port of specified session * * Retrieve the iSCSI target port of specified iSCSI session. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * int32_t. -1 if not supported. */ __DLL_EXPORT int32_t iscsi_session_port_get(struct iscsi_session *se); /** * iscsi_session_iface_get() - Retrieve iSCSI interface information of * specified session * * Retrieve the iSCSI interface information of specified iSCSI session. * For the properties of 'struct iscsi_iface', please refer to the functions * defined in 'libopeniscsiusr_iface.h' file. * * @se: * Pointer of 'struct iscsi_session'. * If this pointer is NULL, your program will be terminated by assert. * * Return: * Pointer of 'struct iscsi_iface'. NULL if not supported. * No need to free this memory, the resources will get freed by * iscsi_session_free() or iscsi_sessions_free(). */ __DLL_EXPORT struct iscsi_iface *iscsi_session_iface_get (struct iscsi_session *se); #endif /* End of _LIB_OPEN_ISCSI_USR_SESSION_H_ */