#!/bin/sh
#
# /sbin/iscsi-gen-initiatorname
#
# Generate a default iSCSI Initiatorname for SUSE installations.
#
# Copyright (c) 2011 Hannes Reinecke, SUSE Labs
# This script is licensed under the GPL.
#

if [ "$1" ] ; then
    if [ "$1" = "-f" ] ; then
	FORCE=1
    else
	echo "Invalid option $1"
	echo "Usage: $0 [-f]"
	exit 1
    fi
fi

if [ -d /sys/firmware/ibft/initiator ] ; then
    read iSCSI_INITIATOR_NAME < /sys/firmware/ibft/initiator/initiator-name
fi

if [ -f /etc/iscsi/initiatorname.iscsi -a -z "$FORCE" ] ; then
    if [ "$iSCSI_INITIATOR_NAME" ] ; then
	eval $(cat /etc/iscsi/initiatorname.iscsi | sed -e '/^#/d')
	if [ "$iSCSI_INITIATOR_NAME" != "$InitiatorName" ] ; then
	    echo "iSCSI Initiatorname from iBFT is different from the current setting."
	    echo "Please call '/sbin/iscsi-gen-initiatorname -f' to update the iSCSI Initiatorname."
	    exit 1
	fi
    fi
fi

if [ "$iSCSI_INITIATOR_NAME" ] ; then
    cat << EOF >> /etc/iscsi/initiatorname.iscsi
##
## /etc/iscsi/iscsi.initiatorname
##
## iSCSI Initiatorname taken from iBFT BIOS tables.
##
## DO NOT EDIT OR REMOVE THIS FILE! 
## If you remove this file, the iSCSI daemon will not start.
## Any change here will not be reflected to the iBFT BIOS tables.
## If a different initiatorname is required please change the 
## initiatorname in the BIOS setup and call
## /sbin/iscsi-gen-initiatorname -f
## to recreate an updated version of this file.
##
InitiatorName=$iSCSI_INITIATOR_NAME
EOF
fi

if [ ! -f /etc/iscsi/initiatorname.iscsi ] ; then
    cat << EOF >> /etc/iscsi/initiatorname.iscsi
##
## /etc/iscsi/iscsi.initiatorname
##
## Default iSCSI Initiatorname.
##
## DO NOT EDIT OR REMOVE THIS FILE! 
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator.  The InitiatorName must be unique
## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
EOF
	YEAR=$(date +"%Y")
	MONTH=$(date +"%m")
	ISSUEDATE="$YEAR$MONTH"
	INAME=$(iscsi-iname -p iqn.$ISSUEDATE.local.openwrt:01)
	printf "InitiatorName=$INAME\n"  >>/etc/iscsi/initiatorname.iscsi
	chmod 0600 /etc/iscsi/initiatorname.iscsi
fi

