# Example iscsi target configuration
#
# Everything until the first target definition belongs
# to the global configuration.
# Right now this is only the user configuration used
# during discovery sessions. "IncomingUser" specifies credentials the
# initiator has to provide - several of these are supported. If mutual
# CHAP shall be employed, "OutgoingUser" specifies the user/pass
# combination the target will provide - only one is supported.
# Leave them alone (keep them commented out) if you don't want to use
# authentication for discovery sessions.

#iSNSServer 192.168.1.16
#iSNSAccessControl No

#IncomingUser joe secret
#OutgoingUser jack 12charsecret

# Targets definitions start with "Target" and the target name.
# The target name must be a globally unique name, the iSCSI
# standard defines the "iSCSI Qualified Name" as follows:
#
# iqn.yyyy-mm.<reversed domain name>[:identifier]
#
# "yyyy-mm" is the date at which the domain is valid and the identifier
# is freely selectable. For further details please check the iSCSI spec.

Target iqn.2007-05.com.example:storage.disk2.sys1.xyz
	# Users, who can access this target. The same rules as for discovery
	# users apply here.
	# Leave them alone if you don't want to use authentication.
	#IncomingUser joe secret
	#OutgoingUser jim 12charpasswd
	# Alias name for this target
	# Alias Test
	# various iSCSI parameters
	# (not all are used right now, see also iSCSI spec for details)
	#MaxConnections		1
	#InitialR2T		No
	#ImmediateData		Yes
	#MaxRecvDataSegmentLength 1048576
	#MaxXmitDataSegmentLength 1048576
	#MaxBurstLength		1048576
	#FirstBurstLength	1048576
	#DefaultTime2Wait	2
	#DefaultTime2Retain	20
	#MaxOutstandingR2T	20
	#DataPDUInOrder		Yes
	#DataSequenceInOrder	Yes
	#ErrorRecoveryLevel	0
	#HeaderDigest		CRC32C,None
	#DataDigest		CRC32C,None
	# various target parameters
	#QueuedCommands		32

