#!/bin/bash

. /.initrd/initenv
. uevent-sh-functions
. network-sh-functions

handler() {
	# get nfs root from dhcp
	if [ "$NFSROOT" = 'auto' ]; then
		NFSROOT="$(cat "$net_autoconfdir/ifaces/$INTERFACE/rootpath)")"
	else
	# nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
		[ "${NFSROOT#*,}" = "$NFSROOT" ] || NFSOPTS="-o ${NFSROOT#*,}"
		NFSROOT=${NFSROOT%%,*}
	fi
	[ "${NFSROOT#*:}" != "$NFSROOT" ] || NFSROOT="$ROOTSERVER:$NFSROOT"

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

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

	mountpoint -q "$rootmnt" ||
		nfsmount -o nolock $roflag $NFSOPTS "$NFSROOT" "$rootmnt" ||
		return 1
}

rc=0
for e in "$eventdir"/nfsroot.*; do
	[ -f "$e" ] || break
	( . "$e"; handler; ) ||
		rc=1
	done_event "$e"
done

exit $rc
