#include <u.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/syslog.h>
#include <rpc/rpc.h>
#include <rpc/pmap_clnt.h>
#include <rpc/pmap_prot.h>
#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000
#include <fs/nfs/rpcv2.h>
#include <fs/nfs/nfsproto.h>
# else
#include <nfs/rpcv2.h>
#include <nfs/nfsproto.h>
#endif
#if defined(__FreeBSD_version) && __FreeBSD_version >= 500000
#	include <nfsclient/nfs.h>
#	ifndef MNT_NODEV
#		define MNT_NODEV 0
#	endif
#else
#	include <nfs/nfs.h>
#endif
#ifdef __NetBSD__
#	include <nfs/nfsmount.h>
#endif
#include <libc.h>
#include "mountnfs.h"
#ifndef MNT_NOATIME
#	define MNT_NOATIME 0
#endif

void
mountnfs(int proto, struct sockaddr_in *sa,
	uchar *handle, int nhandle, char *mtpt)
{
	int mflag;
	struct nfs_args na;

	memset(&na, 0, sizeof na);
	na.version = NFS_ARGSVERSION;
	na.addr = (struct sockaddr*)sa;
	na.addrlen = sizeof *sa;
	na.sotype = proto;
	na.proto = (proto == SOCK_STREAM) ? IPPROTO_TCP : IPPROTO_UDP;
	na.fh = handle;
	na.fhsize = nhandle;
	na.flags = NFSMNT_RESVPORT|NFSMNT_NFSV3|NFSMNT_INT;
	na.wsize = NFS_WSIZE;
	na.rsize = NFS_RSIZE;
	na.readdirsize = NFS_READDIRSIZE;
	na.timeo = 200;
	na.retrans = NFS_RETRANS;
	na.maxgrouplist = NFS_MAXGRPS;
	na.hostname = "backup";
#if !defined(__NetBSD__) && !defined(__APPLE__)
	na.acregmin = 60;
	na.acregmax = 600;
	na.acdirmin = 60;
	na.acdirmax = 600;
#endif
	mflag = MNT_RDONLY|MNT_NOSUID|MNT_NOATIME|MNT_NODEV;
#ifdef __NetBSD__
	if(mount("nfs", mtpt, mflag, &na, sizeof(na)) < 0)
#else
	if(mount("nfs", mtpt, mflag, &na) < 0)
#endif
		sysfatal("mount: %r");
}
