#!/bin/sh

. /scripts/functions

handler() {
	[ ! -L /dev/.initramfs/root ] ||
		return 0

	. "/tmp/net-$INTERFACE.conf"

	# get nfs root from dhcp
	if [ "$NFSROOT" = 'auto' ]; then
		NFSROOT="$ROOTPATH"
		[ "${NFSROOT#*:}" != "$NFSROOT" ] || NFSROOT="$ROOTSERVER:$ROOTPATH"
	else
	# nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
		[ "${NFSROOT#*,}" = "$NFSROOT" ] || NFSOPTS="-o ${NFSROOT#*,}"
		NFSROOT=${NFSROOT%%,*}
		[ "${NFSROOT#*:}" != "$NFSROOT" ] || NFSROOT="$ROOTSERVER:$NFSROOT"
	fi

	# nfs options are an optional arg
	[ -n "$NFSOPTS" ] || NFSOPTS="-o retrans=10"

	local roflag='-o rw'
	[ -z "$readonly" ] || roflag='-o ro'

	nfsmount -o nolock $roflag $NFSOPTS "$NFSROOT" "$rootmnt" ||
		return 0
	message "Mount '$NFSROOT' as $rootmnt"
	ln -s /dev/nfs /dev/.initramfs/root
}

rc=0
for e in "$handler_eventdir"/nfsroot.*; do
	( . "$e"; handler; ) ||
		rc=1
	done_event "$e"
done

exit $rc
