Blame usr/flashnode.h

Packit Service 646995
/*
Packit Service 646995
 * iSCSI flashnode helpers
Packit Service 646995
 *
Packit Service 646995
 * Copyright (C) 2013 QLogic Corporation.
Packit Service 646995
 * Maintained by open-iscsi@googlegroups.com
Packit Service 646995
 *
Packit Service 646995
 * This program is free software; you can redistribute it and/or modify
Packit Service 646995
 * it under the terms of the GNU General Public License as published
Packit Service 646995
 * by the Free Software Foundation; either version 2 of the License, or
Packit Service 646995
 * (at your option) any later version.
Packit Service 646995
 *
Packit Service 646995
 * This program is distributed in the hope that it will be useful, but
Packit Service 646995
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 646995
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Packit Service 646995
 * General Public License for more details.
Packit Service 646995
 *
Packit Service 646995
 * See the file COPYING included with this distribution for more details.
Packit Service 646995
 */
Packit Service 646995
#ifndef FLASHNODE_H
Packit Service 646995
#define FLASHNODE_H
Packit Service 646995
#include <sys/types.h>
Packit Service 646995
#include <netdb.h>
Packit Service 646995
#include <net/if.h>
Packit Service 646995
Packit Service 646995
#include "types.h"
Packit Service 646995
#include "config.h"
Packit Service 646995
#include "auth.h"
Packit Service 646995
Packit Service 646995
#define MAX_FLASHNODE_IDX UINT_MAX
Packit Service 646995
Packit Service 646995
typedef enum portal_type {
Packit Service 646995
	IPV4,
Packit Service 646995
	IPV6,
Packit Service 646995
} portal_type_e;
Packit Service 646995
Packit Service 646995
typedef struct flashnode_sess_rec {
Packit Service 646995
	char			targetname[TARGET_NAME_MAXLEN];
Packit Service 646995
	char			targetalias[TARGET_NAME_MAXLEN];
Packit Service 646995
	char			username[AUTH_STR_MAX_LEN];
Packit Service 646995
	char			username_in[AUTH_STR_MAX_LEN];
Packit Service 646995
	char			password[AUTH_STR_MAX_LEN];
Packit Service 646995
	char			password_in[AUTH_STR_MAX_LEN];
Packit Service 646995
	/* indicates if discovery was done through iSNS discovery service
Packit Service 646995
	 * or through sendTarget */
Packit Service 646995
	char			discovery_parent_type[ISCSI_MAX_STR_LEN];
Packit Service 646995
	char			isid[16];
Packit Service 646995
	char			portal_type[5]; /* ipv4 or ipv6 */
Packit Service 646995
	unsigned		first_burst_len;
Packit Service 646995
	unsigned		max_burst_len;
Packit Service 646995
	uint16_t		def_time2wait;
Packit Service 646995
	uint16_t		def_time2retain;
Packit Service 646995
	uint16_t		max_outstanding_r2t;
Packit Service 646995
	uint16_t		tsid;
Packit Service 646995
	uint16_t		def_taskmgmt_tmo;
Packit Service 646995
	uint16_t		tpgt;
Packit Service 646995
	uint16_t		chap_out_idx;
Packit Service 646995
	uint16_t		chap_in_idx;
Packit Service 646995
	/* index of iSCSI discovery session if the entry is
Packit Service 646995
	 * discovered by iSCSI discovery session
Packit Service 646995
	 */
Packit Service 646995
	uint16_t		discovery_parent_idx;
Packit Service 646995
	/* Firmware auto sendtarget discovery disable */
Packit Service 646995
	uint8_t			auto_snd_tgt_disable;
Packit Service 646995
	uint8_t			discovery_session;
Packit Service 646995
	/* indicates if this flashnode entry is enabled or disabled */
Packit Service 646995
	uint8_t			entry_enable;
Packit Service 646995
	uint8_t			immediate_data;
Packit Service 646995
	uint8_t			initial_r2t;
Packit Service 646995
	uint8_t			data_seq_in_order;
Packit Service 646995
	uint8_t			data_pdu_in_order;
Packit Service 646995
	uint8_t			chap_auth_en;
Packit Service 646995
	/* enables firmware to auto logout the discovery session on discovery
Packit Service 646995
	 * completion
Packit Service 646995
	 */
Packit Service 646995
	uint8_t			discovery_logout_en;
Packit Service 646995
	uint8_t			bidi_chap_en;
Packit Service 646995
	/* makes authentication for discovery session optional */
Packit Service 646995
	uint8_t			discovery_auth_optional;
Packit Service 646995
	uint8_t			erl;
Packit Service 646995
	uint8_t			is_boot_target;
Packit Service 646995
} flashnode_sess_rec_t;
Packit Service 646995
Packit Service 646995
typedef struct flashnode_conn_rec {
Packit Service 646995
	char			ipaddress[NI_MAXHOST];
Packit Service 646995
	char			redirect_ipaddr[NI_MAXHOST];
Packit Service 646995
	char			link_local_ipv6[NI_MAXHOST];
Packit Service 646995
	unsigned		max_recv_dlength;
Packit Service 646995
	unsigned		max_xmit_dlength;
Packit Service 646995
	unsigned		max_segment_size;
Packit Service 646995
	unsigned		tcp_xmit_wsf;
Packit Service 646995
	unsigned		tcp_recv_wsf;
Packit Service 646995
	uint32_t		stat_sn;
Packit Service 646995
	uint32_t		exp_stat_sn;
Packit Service 646995
	uint16_t		keepalive_tmo;
Packit Service 646995
	uint16_t		port;
Packit Service 646995
	uint16_t		local_port;
Packit Service 646995
	uint16_t		ipv6_flow_lbl;
Packit Service 646995
	/* Link local IPv6 address is assigned by firmware or driver */
Packit Service 646995
	uint8_t			is_fw_assigned_ipv6;
Packit Service 646995
	uint8_t			header_digest_en;
Packit Service 646995
	uint8_t			data_digest_en;
Packit Service 646995
	uint8_t			snack_req_en;
Packit Service 646995
	/* tcp timestamp negotiation status */
Packit Service 646995
	uint8_t			tcp_timestamp_stat;
Packit Service 646995
	uint8_t			tcp_nagle_disable;
Packit Service 646995
	/* tcp window scale factor */
Packit Service 646995
	uint8_t			tcp_wsf_disable;
Packit Service 646995
	uint8_t			tcp_timer_scale;
Packit Service 646995
	uint8_t			tcp_timestamp_en;
Packit Service 646995
	uint8_t			fragment_disable;
Packit Service 646995
	uint8_t			ipv4_tos;
Packit Service 646995
	uint8_t			ipv6_traffic_class;
Packit Service 646995
} flashnode_conn_rec_t;
Packit Service 646995
Packit Service 646995
struct flashnode_rec {
Packit Service 646995
	struct list_head	list;
Packit Service 646995
	char			transport_name[ISCSI_TRANSPORT_NAME_MAXLEN];
Packit Service 646995
	flashnode_sess_rec_t	sess;
Packit Service 646995
	flashnode_conn_rec_t	conn[ISCSI_CONN_MAX];
Packit Service 646995
};
Packit Service 646995
Packit Service 646995
extern int flashnode_info_print_flat(void *data, struct flashnode_rec *tgt,
Packit Service 646995
				     uint32_t host_no, uint32_t flashnode_idx);
Packit Service 646995
extern int iscsi_logout_flashnode_sid(struct iscsi_transport *t,
Packit Service 646995
				      uint32_t host_no, uint32_t sid);
Packit Service 646995
extern int flashnode_build_config(struct list_head *params,
Packit Service 646995
				  struct flashnode_rec *flashnode,
Packit Service 646995
				  struct iovec *iovs);
Packit Service 646995
#endif