Blame usr/iscsi_sysfs.h

Packit eace71
/*
Packit eace71
 * iSCSI sysfs
Packit eace71
 *
Packit eace71
 * Copyright (C) 2006 Mike Christie
Packit eace71
 * Copyright (C) 2006 Red Hat, Inc. All rights reserved.
Packit eace71
 *
Packit eace71
 * This program is free software; you can redistribute it and/or modify
Packit eace71
 * it under the terms of the GNU General Public License as published
Packit eace71
 * by the Free Software Foundation; either version 2 of the License, or
Packit eace71
 * (at your option) any later version.
Packit eace71
 *
Packit eace71
 * This program is distributed in the hope that it will be useful, but
Packit eace71
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit eace71
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Packit eace71
 * General Public License for more details.
Packit eace71
 */
Packit eace71
#ifndef ISCSI_SYSFS_H
Packit eace71
#define ISCSI_SYSFS_H
Packit eace71
Packit eace71
#include <sys/types.h>
Packit eace71
Packit eace71
#include "sysfs.h"
Packit eace71
#include "types.h"
Packit eace71
#include "iscsi_proto.h"
Packit eace71
#include "config.h"
Packit eace71
Packit eace71
struct session_info;
Packit eace71
struct host_info;
Packit eace71
struct iscsi_session;
Packit eace71
struct iscsi_conn;
Packit eace71
struct iscsi_session_operational_config;
Packit eace71
struct iscsi_conn_operational_config;
Packit eace71
struct iscsi_auth_config;
Packit eace71
struct flashnode_rec;
Packit eace71
Packit eace71
#define SCSI_MAX_STATE_VALUE 32
Packit eace71
Packit eace71
extern void free_transports(void);
Packit eace71
extern char *iscsi_sysfs_get_iscsi_kernel_version(void);
Packit eace71
extern int iscsi_sysfs_get_sessioninfo_by_id(struct session_info *info,
Packit eace71
					     char *sys_session);
Packit eace71
extern int iscsi_sysfs_session_has_leadconn(uint32_t sid);
Packit eace71
Packit eace71
typedef int (iscsi_sysfs_session_op_fn)(void *, struct session_info *);
Packit eace71
typedef int (iscsi_sysfs_host_op_fn)(void *, struct host_info *);
Packit eace71
typedef int (iscsi_sysfs_flashnode_op_fn)(void *, struct flashnode_rec *,
Packit eace71
					  uint32_t, uint32_t);
Packit eace71
typedef int (iscsi_sysfs_iface_op_fn)(void *, struct iface_rec *);
Packit eace71
Packit eace71
extern int iscsi_sysfs_for_each_iface_on_host(void *data, uint32_t host_no,
Packit eace71
					      int *nr_found,
Packit eace71
					      iscsi_sysfs_iface_op_fn *fn);
Packit eace71
extern int iscsi_sysfs_for_each_session(void *data, int *nr_found,
Packit eace71
					iscsi_sysfs_session_op_fn *fn,
Packit eace71
					int in_parallel);
Packit eace71
extern int iscsi_sysfs_count_sessions(void);
Packit eace71
extern int iscsi_sysfs_for_each_host(void *data, int *nr_found,
Packit eace71
				     iscsi_sysfs_host_op_fn *fn);
Packit eace71
extern uint32_t iscsi_sysfs_get_host_no_from_sid(uint32_t sid, int *err);
Packit eace71
extern uint32_t iscsi_sysfs_get_host_no_from_hwinfo(struct iface_rec *iface,
Packit eace71
						    int *rc);
Packit eace71
extern uint32_t iscsi_sysfs_get_host_no_from_hwaddress(char *hwaddress, int *rc);
Packit eace71
extern int iscsi_sysfs_get_hostinfo_by_host_no(struct host_info *hinfo);
Packit eace71
extern int iscsi_sysfs_for_each_flashnode(void *data, uint32_t host_no,
Packit eace71
					  int *nr_found,
Packit eace71
					  iscsi_sysfs_flashnode_op_fn *fn);
Packit eace71
extern int iscsi_sysfs_get_flashnode_info(struct flashnode_rec *fnode,
Packit eace71
					  uint32_t host_no,
Packit eace71
					  uint32_t flashnode_id);
Packit eace71
extern int iscsi_sysfs_update_flashnode_param(uint32_t host_no,
Packit eace71
					      uint32_t flashnode_id,
Packit eace71
					      char *name, char *val);
Packit eace71
extern int iscsi_sysfs_create_flashnode(uint32_t host_no, char *ipver);
Packit eace71
extern int iscsi_sysfs_del_flashnode(uint32_t host_no, uint32_t flashnode_id);
Packit eace71
extern int iscsi_sysfs_login_flashnode(uint32_t host_no, uint32_t flashnode_id);
Packit eace71
extern int iscsi_sysfs_logout_flashnode(uint32_t host_no,
Packit eace71
					uint32_t flashnode_id);
Packit eace71
extern int iscsi_sysfs_get_sid_from_path(char *session);
Packit eace71
extern char *iscsi_sysfs_get_blockdev_from_lun(int hostno, int target, int sid);
Packit eace71
Packit eace71
static inline int is_valid_operational_value(int value)
Packit eace71
{
Packit eace71
	return value != -1;
Packit eace71
}
Packit eace71
Packit eace71
extern void iscsi_sysfs_get_auth_conf(int sid, struct iscsi_auth_config *conf);
Packit eace71
extern void iscsi_sysfs_get_negotiated_session_conf(int sid,
Packit eace71
				struct iscsi_session_operational_config *conf);
Packit eace71
extern void iscsi_sysfs_get_negotiated_conn_conf(int sid,
Packit eace71
				struct iscsi_conn_operational_config *conf);
Packit eace71
extern pid_t iscsi_sysfs_scan_host(int hostno, int async, int autoscan);
Packit eace71
extern int iscsi_sysfs_get_session_state(char *state, int sid);
Packit eace71
extern int iscsi_sysfs_get_host_state(char *state, int host_no);
Packit eace71
extern int iscsi_sysfs_get_device_state(char *state, int host_no, int target,
Packit eace71
					int lun);
Packit eace71
extern int iscsi_sysfs_get_exp_statsn(int sid);
Packit eace71
extern void iscsi_sysfs_set_queue_depth(void *data, int hostno, int target,
Packit eace71
					int lun);
Packit eace71
extern void iscsi_sysfs_set_device_online(void *data, int hostno, int target,
Packit eace71
					  int lun);
Packit eace71
extern void iscsi_sysfs_rescan_device(void *data, int hostno, int target,
Packit eace71
				      int lun);
Packit eace71
extern int iscsi_sysfs_for_each_device(void *data, int host_no, uint32_t sid,
Packit eace71
				void (* fn)(void *, int host_no, int target,
Packit eace71
					    int lun));
Packit eace71
extern struct iscsi_transport *iscsi_sysfs_get_transport_by_hba(uint32_t host_no);
Packit eace71
extern struct iscsi_transport *iscsi_sysfs_get_transport_by_session(char *sys_session);
Packit eace71
extern struct iscsi_transport *iscsi_sysfs_get_transport_by_sid(uint32_t sid);
Packit eace71
extern struct iscsi_transport *iscsi_sysfs_get_transport_by_name(char *transport_name);
Packit eace71
extern int iscsi_sysfs_is_transport_loaded(char *transport_name);
Packit eace71
extern int iscsi_sysfs_session_supports_nop(int sid);
Packit eace71
extern int iscsi_sysfs_session_user_created(int sid);
Packit eace71
Packit eace71
extern struct list_head transports;
Packit eace71
Packit eace71
#endif