#!/bin/sh

BASEDIR=`dirname $0`
myname=$0

usage () {
        echo "Usage: $0 -e ethernetid -t host_type -v os_ver -s js_server client_name platform_grp"
	echo "  eg : $0 -e 0:8:20:12:34:56 -t server -s servername clientname sun4u"
	echo ""
	echo "       host_type is one of  server, workst"
	echo "       os_ver is one of  2.6, 7 or 8"
	echo "       js_server is the server to use as a root/install server"
	echo "       platform_grp is one of sun4c, sun4d, sun4m or sun4u"
	exit 1
}

VERSION=2.6

while [ "$1"x != "x" ]; do
    case $1 in
    -e) ETHER_ADDR="$2";
        if [ ! "$ETHER_ADDR" ]; then
            usage ;
        fi
	shift 2;;
    -s) SERVER="$2"
        if [ ! "$SERVER" ]; then
            usage ;
        fi
	shift 2;;
    -t) MACHINE_TYPE="$2"
        if [ ! "$MACHINE_TYPE" ]; then
            usage ;
        fi
	shift 2;;
    -v) VERSION="$2"
        if [ ! "$VERSION" ]; then
            usage ;
        fi
	shift 2;;
    [a-zA-Z]*)  # must be the client name
        # ought to be last two things, eh?
        if [ $# -ne 2 ]; then
            usage ;
        fi
        CLIENT_NAME="$1";
        PLATFORM="$2";
        shift 2
	;;
     *) usage;;
    esac
done

if [ ! "${ETHER_ADDR}" ]; then
	echo ${myname}: No Ethernet address supplied
	echo
	usage
fi

if [ ! "${MACHINE_TYPE}" ]; then
	echo "${myname}: Machine type (server/workstation) must be supplied"
	echo
	usage
fi

if [ ! "${CLIENT_NAME}" ]; then
	echo ${myname}: No client name given
	echo
	usage
fi

if [ ! "${PLATFORM}" ]; then
	echo ${myname}: No client platform group given
	echo
	usage
fi

case $MACHINE_TYPE in
	server|workst)	 	;;
	work|workstation) 	MACHINE_TYPE=workst;;
	*)			echo "Invalid host_type."
				usage;;
esac

case $VERSION in
	2.6|6)		OSVER="sol2.6"
			OSVERLONG="Solaris_2.6";;
	2.7|7)		OSVER="sol7"
			OSVERLONG="Solaris_2.7";;
	2.8|8)		OSVER="sol8"
			OSVERLONG="Solaris_8";;
	*)		echo "Invalid OS Version"
			usage;;
esac

MYNETMASK=`netstat -rnv | awk ' / 255.255/ && !/lo0/ { print $2;exit } '`

if [ "$MYNETMASK" = "255.255.0.0" ]; then
	NMBITS=16
elif [ "$MYNETMASK" = "255.255.224.0" ]; then
	NMBITS=19
elif [ "$MYNETMASK" = "255.255.255.0" ]; then
	NMBITS=24
elif [ "$MYNETMASK" = "255.255.255.224" ]; then
	NMBITS=27
else
	echo "Unable to work out netmask correctly. Exiting"
	exit 2
fi

# Find what network we're on
NETWORK=`netstat -in | awk ' $1!="Name" && $1!="lo0" { print $3; exit } '`

if [ -z "$SERVER" ]; then
	SERVER=`awk " \\$1==\"${NETWORK}-${OSVER}\" { print \\$3; exit } " < $BASEDIR/Jumpstart_Servers 2> /dev/null`
	if [ -z "$SERVER" ]; then
		SERVER=`ypmatch "${NETWORK}-${OSVER}" jsservers 2> /dev/null`
		if [ -z "$SERVER" ]; then
			echo "Unable to find Jumpstart server for $OSVER on network $NETWORK"
			exit 1
		fi
	fi
	echo "Using $SERVER as Jumpstart server"
fi


$BASEDIR/${OSVER}/add_install_client -e ${ETHER_ADDR} -s ${SERVER}:/jumpstart/${OSVER} -c ${SERVER}:/jumpstart/${OSVER}/conf/$MACHINE_TYPE -p ${SERVER}:/jumpstart/${OSVER}/conf/${MACHINE_TYPE}/sysidcfg${NMBITS} -r ${SERVER}:/jumpstart/${OSVER}/${OSVERLONG}/Tools/Boot ${CLIENT_NAME} ${PLATFORM}

