--- iSCSITarget	2012-05-25 09:23:59.000000000 -0700
+++ ../../iSCSITarget	2012-06-28 06:35:56.586100686 -0700
@@ -134,6 +134,23 @@
 <content type="string"/>
 </parameter>
 
+<parameter name="mutualchap_username" required="0" unique="0">
+<longdesc lang="en">
+A username used for incoming Mutual CHAP initiator authentication. If unspecified,
+allowed initiators will be able to log in without authentication.
+</longdesc>
+<shortdesc lang="en">Mutual CHAP  username</shortdesc>
+<content type="string"/>
+</parameter>
+
+<parameter name="mutualchap_password" required="0" unique="0">
+<longdesc lang="en">
+A password used for Mutual CHAP initiator authentication.
+</longdesc>
+<shortdesc lang="en">Mutual CHAP password</shortdesc>
+<content type="string"/>
+</parameter>
+
 <parameter name="additional_parameters" required="0" unique="0">
 <longdesc lang="en">
 Additional target parameters. A space-separated list of "name=value"
@@ -301,9 +318,25 @@
 		    exit $OCF_ERR_GENERIC
 		fi
 	    fi
-	    # TODO: add CHAP authentication support when it gets added
-	    # back into LIO
-	    ocf_run lio_node --disableauth ${OCF_RESKEY_iqn} 1 || exit $OCF_ERR_GENERIC
+	    # Authentication
+	    if [ -n "${OCF_RESKEY_incoming_username}" ] || [ -n "${OCF_RESKEY_mutualchap_username}" ]; then
+		# enableaclmode is required in case disableaclmode was ever used
+		ocf_run lio_node --enableaclmode ${OCF_RESKEY_iqn} 1 || exit $OCF_ERR_GENERIC
+	    else
+		ocf_run lio_node --disableauth ${OCF_RESKEY_iqn} 1 || exit $OCF_ERR_GENERIC
+	    fi
+	    if [ -n "${OCF_RESKEY_incoming_username}" ]; then
+		# CHAP
+		for initiator in ${OCF_RESKEY_allowed_initiators}; do
+		    ocf_run lio_node --setchapauth ${OCF_RESKEY_iqn} 1 ${initiator} ${OCF_RESKEY_incoming_username} ${OCF_RESKEY_incoming_password} || exit $OCF_ERR_GENERIC
+	    	done
+	    fi
+	    if [ -n "${OCF_RESKEY_mutualchap_username}" ]; then
+		# Mutual CHAP
+		for initiator in ${OCF_RESKEY_allowed_initiators}; do
+		    ocf_run lio_node --setchapmutualauth ${OCF_RESKEY_iqn} 1 ${initiator} ${OCF_RESKEY_mutualchap_username} ${OCF_RESKEY_mutualchap_password} || exit $OCF_ERR_GENERIC
+	    	done
+	    fi
 	    # Finally, we need to enable the target to allow
 	    # initiators to connect
 	    ocf_run lio_node --enabletpg=${OCF_RESKEY_iqn} 1 || exit $OCF_ERR_GENERIC
@@ -461,6 +494,9 @@
 	tgt)
 	    required_vars="iqn tid"
 	    ;;
+	lio)
+	    required_vars="iqn"
+	    ;;
     esac
     for var in ${required_vars}; do
 	param="OCF_RESKEY_${var}"
@@ -500,9 +536,7 @@
 	    unsupported_params="portals"
 	    ;;
 	lio)
-	    # TODO: Remove incoming_username and incoming_password
-	    # from this check when LIO 3.0 gets CHAP authentication
-	    unsupported_params="tid incoming_username incoming_password"
+	    unsupported_params="tid"
 	    ;;
     esac
     for var in ${unsupported_params}; do
