What's new or changed in 0.9.15
===============================

The server now only allows mount requests coming from source
ports below 1024. This behaviour matches other NFS server
implementations and provides some shallow security against
mount requests from user space clients. Such a mount could
be used to obtain a file handle for an export and then use
it for NFS requests with arbitrary user ids, thus being
able to access any exported files regardless of real
ownership. It should be noted that this doesn't help against
a client's root user or users capable of sniffing the
network used for NFS traffic. Patch by Frank v Waveren.


ChangeLog
=========

Version 0.9.15

  - only allow mount requests from source ports below 1024

Version 0.9.14

  - accept SET_TO_SERVER_TIME in object creation calls
  - update maintainer email address

Version 0.9.13

  - add support for CREATE EXCLUSIVE procedure call
  - fix some minor compiler warnings

Version 0.9.12

  - add option for binding to a specified interface
  - lots of compile fixes for Solaris/AIX/Irix/Mac OS X
  - make redirection of operating system calls possible
  - fix READDIR error reporting
  - fix handling of . and .. lookups for Irix clients

Version 0.9.11

  - handle case where a tagged file exists but the master file doesn't
  - make clustering work in non-readable directories
  - make filehandle resolution work on non-readable directories
  - fix file creation by Solaris NFS clients

Version 0.9.10

  - fix building with gcc 2.95.x or 2.96
  - make ALWAYS cluster tag take effect for file creations
  - fix possible use-after-free bug in fh.c:fh_rec

Version 0.9.9

  - add support for mount passwords, for use with secure links
  - make exports parser accept dashes in hostnames and leading whitespace
  - fix debug mode to use line buffering, useful for redirections
  - make exporting of (automounted) removable media possible

Version 0.9.8

  - fix cache LRU algorithm, could lead to unreliable operations once
    the filehandle cache filled up

Version 0.9.7

  - make renames across directories not cause stale filehandles
  - allow clients to read files they only have execute permission for
  - lift restrictions on attribute setting
  - fix bug in special-casing of root directory filehandles
  - add file$$$$ tag to clustering extensions

Version 0.9.6

  - run the source through indent to improve style consistency
  - fix bug in READDIR that resulted in truncated replies
  - add options to specify which ports and protocols to use

Version 0.9.5

  - code cleanups, remove now impossible cases (stale filehandles)
  - fix bug in READDIR that could return EOF one entry too early

Version 0.9.4

  - support the DUMP and EXPORT mount protocol procedures
  - use a simple counter instead of the system time for cache LRU
  - document tagged files in a seperate manpage, tags(7)
  - introduce a new ALWAYS tag for forced redirection

Version 0.9.3

  - fix mount handler not properly initializing return status 
  - send messages to syslog for some mount problems
  - make it possible to export and mount symlinks to directories
  - fix cluster extensions breakage from 0.9.1 code merge
  - prevent filehandle cache from storing redundant information

Version 0.9.2

  - clean up lots of duplicate code in nfs.c
  - move configuration parser and cluster extensions into subdirectories
  - use real write verifier in WRITE and COMMIT

Version 0.9.1

  - add -d option to prevent forking into background (for debugging)
  - merge in lots of cleaner code from the experimental branch
  - merge nfsd and mountd into one program
  - better /etc/exports parser using lex and yacc

Version 0.9.0

  - check for clients attempting to use invalid pathnames
  - include cluster extensions (optional at compile and run time)

Version 0.8.8

  - fix ACCESS compatibility problem affecting HP-UX clients

Version 0.8.7

  - fixed chmod handling to make us pass the Connectathon 2003 NFS
    testsuite's "basic" and "general" tests
  - improve filehandle integrity checking

Version 0.8.6

  - use inode generation numbers only in SETATTR and fd cache because
    it is a huge performance hit everywhere else
  - use 32 bit device and inode numbers to save space in filehandles
  - have nfsd bind to port number 2049 (nfs) by default

Version 0.8.5

  - undo refusal to use "." and ".." since it confuses NetBSD clients
  - include inode generation number in filehandles whenever possible

Version 0.8.4

  - handle export of the root directory correctly
  - return XDEV error in RENAME and LINK if export options for given
    objects do not match (needed for squash options differences)
  - prevent the use of "." and ".." as names
  - use largefile API to enable access to files greater than 2 GB
  - check filehandles for integrity before using them
  - we no longer need GNU make

Version 0.8.3

  - use shorter filehandles whenever possible
  - use stat cache in unfs3_readdir()
  - switch filehandle cache to use static allocation of entries
  - make unfs3_readdir() account for XDR overhead correctly

Version 0.8.2

  - simplify and speed up low-level filehandle routines
  - fix a serious bug in READDIR, cookie == 0 was handled incorrectly
  - make it build and run on NetBSD 1.6.1/i386

Version 0.8.1

  - use svc_getcaller instead of our own hack (well, duh)
  - don't attempt to service v1 mount calls, only v1 umount
  - check incoming object names for validity

Version 0.8

  - support for export controls via /etc/exports
  - introduce caching of stat() results to improve performance
  - explicitly check for gcc in the configure script
  - make user/group id squashing be based on export options
  - remove the now obsolete -r and -a nfsd options

Version 0.7

  - attempt at race protection/detection code for many NFS procedures
  - add comments to all error code paths

Version 0.6.1

  - document possible races with local fs activity on server
  - minor fix in LOOKUP error handling

Version 0.6

  - initial public release
