*** Don't forget to increment the version number in nfs.cl for each commit *** [and leave this message at the top of the file] 2003-11-06 Ahmon Dancy * Updated readme.txt to discuss proper use of *nfs-fw-uids*. 2003-07-03 Ahmon Dancy * Updated readme.txt Updated nfs.cfg.sample. 2003-07-03 * mountd and nfsd can now use an existing portmapper instead of the built-in one. This will help for people who have Microsoft's SFU installed. 2003-07-02 * nfs.cl: Added *nfs-set-mode-bits* variable and corresponding code for allow the administrator to set extra mode bits before returning them to the client. 2003-06-06 * nfs.cl: Bumped version to 1.1.4 Updated nfs-okay-to-write so that it checks *nfs-rw-uids* for other user ids that are granted write access. * nfs.cfg.sample: New parameter *nfs-rw-uids*. * readme.txt: Added documentation about *nfs-rw-uids*. * util.cl: Fixed stupid signed/unsigned bug in the ULARGE_INTEGER foreign struct definition. It was screwing up the results of the diskfree function. Also added :foreign-static-gc allocation type to ff:allocate-fobject calls. * loadem.cl: Modified function 'main' for convenience during debugging. * notes.txt: Clarifications 2003-05-10 * mountd.cl: mountd-export: Return no group information for exported filesystems. This means that the export is for "everyone". This enhances interoperability with more picky clients. 2003-03-19 * nfs.cl: Bumped version to 1.1.3. Added additional mappings to map-errno-to-nfs-error-code. Added ~% to format string in get-open-file. Added a with-nfs-err-handler macro to use as a generic error handler around general operations. Right now, it is only used for nfsd-read. Changed nfsd-read to use new with-nfs-err-handler. * Makefile: Updated to use cygwin zip. 2003-03-13 Ahmon Dancy * util.cl: Fixed up the remaining foreign calls for case mode issues. * nfs.cl: Bumped version to 1.1.2. ******************************************************************************* 1.1.1 public release ******************************************************************************* 2003-01-22 1.1.1 * Makefile: break on warnings during compile * loadem.cl: declare parse-addr :fbound * nfs.cl: update for 6.2 osi patch -- NOTE: compilation now requires a fully patched ACL 6.2 * readme.txt: update 2003-01-22 * loadem.cl: Use the new :start keyword argument to ntservice:create-service. 2003-01-20 1.1.0 * ipaddr.cl/access.cl: New files for use w/ new access control stuff. * access-control.txt: New documentation. * loadem.cl: Added ipaddr.cl and access.cl to list of source files. Updates read-nfs-cfg to handle the new *hosts-allow* and *hosts-deny* parameters. Added command line switches for added and removing the nfs service. Added better error handling to the service add/remove stuff. * mountd.cl: Do access checking on mount requests. * nfs.cfg.sample: Added new *hosts-allow* and *hosts-deny* parameters. Both default to 'nil' which allows open access. * nfs.cl: Set version number to 1.1.0 since some features were added. Removed a big chunk of useless comments. Added access checking. * readme.txt: Made a new section for 'Execution' which explains how to install the NFS server as a service. Added mention of *hosts-allow* and *hosts-deny* (the docs for these are in access-control.txt). * sunrpc.cl: Cosmetic changes. ******************************************************************************* 1.0.36 public release ******************************************************************************* 2002-09-23 Kevin Layer * readme.txt: improve instructions 2002-09-20 * (NEW) binary-license.txt * (REMOVED) makezip * Makefile: add `dist' rule * loadem.cl: let Makefile copy nfs.cfg * nfs.cfg.sample: add d:\ mapping 2002-09-20 1.0.36 * fhandle.cl: Added func remove-fhandle-by-pathname to remove file handles for deleted files. * nfs.cl: Reformatted code in a few places and replaced some if's with if*'s. Added func remove-statcache to uncached information that becomes invalid during a remove or rename. This fixes a bug that existed in the rename operation. 2002-09-19 1.0.35 * mountd.cl: * Added debugging control variable *mountd-debug* for mountd operations. And wrapped any debugging output w/ a test of this variable. * mountd now keeps track of mounts that are in use. Added a function (showmounts) which displays the list. The list isn't used for anything other than this. * nfs.cl: * Made some output debugging-mode only. * nfs-setattr now checks the return status of (truncate-file). * portmap.cl: * Added *portmap-debug* variable and wrapped some debugging output w/ a test of this variable. * sunrpc.cl: * Added *debugrpc* variable and wrapped some debugging output w/ a test of this variable. * util.cl: * Fixed ascii/unicode string problem in createfile. This was preventing file truncation from working properly. 2002-07-24 1.0.34 * Makefile: make 6.2 the default * sunrpc.cl: *gather* -> nil; add force-output's in rpc-send ******************************************************************************* 1.0.33 public release ******************************************************************************* 2002-02-27 1.0.33 * nfs.ico: minorly updated * loadem.cl: make icon changes dependent 6.2.pre-beta.13 2002-02-12 Kevin Layer 1.0.32 (because this is the 32nd changelog entry) * (NEW) Makefile * nfs.cl: add version number * fixes.cl: require delete-directory patch for 5.0.1 and 6.0. * (NEW, from jkf) nfs.ico * loadem.cl: use new icon file in ACL 6.2; set program title, too 2001-09-06 * nfs.cl (nfsd-setattr): Changes and new functions to make sure file attributes are properly handled. 2001-09-05 * nfs.cl (update-stat-times-and-size): Added a keyword arg 'trunc' that can be used to set the new file size to a specific value. (nfsd-setattr): Make use of the new keyword are to update-stat-times-and-size when truncating a file. (parent-dir): new function that computes the parent pathname of a pathname. Note that the parent of c:\ is c:\. (nfsd-lookup): Make use of new parent-dir function when the 'filename' is "..". This ensures that filehandles remain consistent. 2001-09-04 * mountd.cl (mountd-message-handler): Added checks to make sure the version of the mount protocol being requested is the one we support (version 1). If not, let the client know so that it'll (hopefully) downgrade versions. I copied this code from nfs.cl where I made the same change a short while ago. Also changed the big 'cond' to a 'case' statement. 2001-08-16 * nfs.cl (nfsd-rename): Close the from file before trying to rename it. Also, added a general error handler around rename-file. Rename errors will return NFSERR_IO. * portmap.cl: Don't print information for the callit function. 2001-08-16 * nfs.cl: fix syntax error 2001-08-16 Kevin Layer * pretty things up 2001-08-15 * nfs.html: update doc 2001-08-15 Ahmon Dancy * added preamble to all source files * NOTES.txt: fleshed out. * makezip: added id string. Also, use -f flag for rm. * nfs.cl: Added error catcher around make-directory call. * nfs.html: Added link to source code zip. 2001-08-14 * nfs.cl: Added fixes to allow *nfs-dircachereaptime* to be 0 (for debugging and experimentation. Only call set-file-time on files that were open for writing. 2001-08-13 Ahmon Dancy * NOTES.txt: added file to store implementation notes and bugs. * makezip: Script to collect relevant files for a source distribution. * nfs.cfg.sample: New sample config file. * nfs.html: opensource web page. * rfc*: relevant RFCs * readme.txt: Formatting and additional notes. 2001-08-13 * sunrpc.cl (read-record): Added handler-case wrapper. 2001-08-13 Ahmon Dancy * loadem.cl: parameterized the create-service function.. Added delete-service function. * readme.txt: Added building instructions and additional notes. 2001-08-11 * nfs.cl: Added comment to *statcachereaptime* to indicate that it should be larger than *openfilereaptime*. Added code to return an IO error for the symlink call. Made some stat slot accessor macro. Removed some unused functions. Modernized the fsinfo handler. Updated the open file reaper so that it resets the file modification time on the file after closing it (since closing may update the modification time to a value we don't want). * util.cl: Added set-file-time function to adjust the modification/access time of a file. * util.cl: Added truncate-file function which uses foreign functions. * removed extra.c, extra.cl, and Makefile. No more C code. 2001-08-10 * portmap.cl (portmap-callit): add declare to get rid of compiler warning * loadem.cl: load ntservice from ntservice/ 2001-08-10 Kevin Layer * nfs.cl: lower dircachereaptime; work around strange problem with spot's nfs (copying from spot to hobart); some debugging info 2001-08-10 * sunrpc.cl: Added new function rpc-send-prog-mismatch to send PROG_MISMATCH RPC responses. * loadem.cl: Many changes. Mostly to support the use of the nfs server as an NT service. Requires "service.fasl". The new way to build the program: :cl loadem (loadem) (main) ;; changed from (startem) Moved config file reading into this file (out of nfs.cl). Added function (create-service) which will add the nfs server to the list of services in Windows. Make sure you call (buildit) to build a standalone executable. * mountd.cl: Changed the formatting of some debugging output. The default list of exports is now nil. * nfs.cl: Now check for incorrect NFS version request and send back a PROG_MISMATCH RPC reply. * portmap.cl: Don't use the program version when matching. This is gross.. but it makes things work better with amd (but I'm trying to convince the maintainer of am-utils that there is a bug in amd). 2001-08-03 * loadem.cl: Added a (buildit) function to build an nfs executable. Added a (main) function. * nfs.cl: Minor change that turned out to be unnecessary regarding the initialization of *nfsdxdr*. 2001-07-11 * nfs.cl (nfsd-statfs): Added check for stale file handle. 2001-07-04 * fhandle.cl: Added function swap-fhandles which is used by the rename code. * nfs.cl: Added #+(version> 6 1) near calls to (set-socket-options) so that this code will continue to work in a 6.0 Allegro CL. Removed a bunch of obsolete diropargs stuff. Try to catch bad pathnames earlier by adding check to add-filename-to-dirname. Also changed a bunch of code that calls add-filename-to-dirname to check its result. Fixed nfsd-rename code. 2001-07-03 * nfs.cl: Moved some defparameters closer to the top of the file. Set the directory cache reap time parameter to 30 seconds. This should help w/ 'rm -r' behavior. Added a new parameter *socketbuffersize* which is used when creating the udp and tcp communications sockets. It looks like the default receive buffer size for UDP packets was pretty small (somewhere around 8KB) so writes from high-performance operating systems such as Solaris would cause a lot of packets to be dropped... resulting in very slow performance. Undo the addition of '.' and '..' to directories. It doesn't appear to be necessary and it may have been causing problems. (add-direntries): Added error handler to handle weird directories like "c:\System Volume Information" on Windows 2000. Also added/changed some debugging output. * sunrpc.cl: Added an error handler around mp:wait-for-input-available. Apparently errors will occur here if a socket in the waitlist gets a connection refused message. This new code will handle that situation. Added (ignore-errors) around write-sequence and send-to calls. If they fail, the client will try. 2001-07-02 * nfs.cl: Lowered *statcachereaptime* from 50000 to 5. The 50000 was for testing. * portmap.cl: Changed the main 'cond' into a 'case'. Implemented portmpap-null. Added portmap-callit. It doesn't do anything... just prints out the parameters. As far as I can tell, there is no reason to implement this right now. * sunrpc.cl: Added a parameter *gather* that chooses between two behaviors when it comes to TCP traffic. If *gather* is t, the packet size plus the packet data will be combined into a single buffer and sent all at once. This requires copying the the packet data into a new buffer which may prove to be slow. A potential advantage of this is that network overhead will be reduced since one packet will be sent instead of one small packet (4 bytes) followed by a larger one. One definite advantage of this is that it allows packet analyzers (like tcpdump) to read the packet properly. * xdr.cl: Important bug fix in xdr-opaque-variable-from-stream. Opaque data is supposed to be blocked to a 4-byte boundary. I wasn't doing that. Non-linux clients got very upset by this. 2001-06-22 * nfs.cl: Use excl::filesys-delete-file instead of delete-file so that I can get errno information. 2001-06-20 * fhandle.cl: Removed the ensure-* functions. Removed any unused functions. Added some type declarations to possibly speed some operations up. Changed one function to a macro. * mountd.cl: Updated the code to use with-successful-reply. Removed some calls to obsolete functions in fhandle.cl. * mpsocketfix.cl: Added #-(version>= 6 1) conditionals since this fix is in 6.1. * nfs.cl: Added some type declarations. Added a check or two to make sure certain functions were being called w/ pathnames (not strings). Removed some calls to obsolete functions in fhandle.cl. Removed some unused functions. * sunrpc.cl: Added a #-(version>= 6 1) conditional around the code that caused the EWOULDBLOCK in 6.0. * xdr.cl: Added a gang of type declarations. Fixed the syntax error I had in defstruct that was making my attempts at type declarations useless. 2001-06-14 * nfs.cl: Remove extra debugging output. Added extra error checking to nfsd-create. * loadem.cl: Added 'fixes' to the load/compile list. * nfs.cl: Zillions of changes for optimization. Added in a blocksize hack to improve 'rm -r' behavior w/ linux clients. * xdr.cl: removed a debugging message.. did some minor optimizations. 2001-06-07 * nfs.cl: Changed a zillion calls from ff:fslot-value to ff:fslot-value-typed. Added a function to update file mtime, atime, and filesize in the statcache (used for nfsd-write). Cleaned up nfsd-remove. Cleaned up nfsd-write. * xdr.cl: Changed the way xdr-opaque-fixed/variable return things (during extraction). * mountd.cl (mountd-make-fhstatus): Specify the size of the xdr to speed things up. * loadem.cl (startem): Run (nfsd) as a separate process now. * fhandle.cl (opaque-fhandle-to-pathname): New function. * Many many changes that hopefully will improve performance 2001-05-23 * nfs.cl: nfsd-getattr: Added check for stale file handle. Commented out some debugging lines. nfsd-read: Changed call to xdr-opaque-variable to be more efficient (no subseq). * xdr.cl: Changed xdr-opaque-variable to allow for efficient operation. Added a function xdr-opaque-variable-from-stream which isn't used yet. 2001-05-23 * nfs.cl (nfsd-write): handle case of fhandle-vec-to-pathname returning nil 2001-05-23 * nfs.cl: Changed a debugging message * sunrpc.cl: Update send-successful-reply so that it doesn't call rpc-send-msg (which saves an xdr-xdr call). * xdr.cl: Added a 'pos' slot to the xdr structure to use to avoid subseq calls in xdr-advance. Updated other code to use this new slot. Probably introduced a buncha bugs. 2001-05-23 * extra.cl: make warning go away * nfs.cl: fix nfsd-remove to handle permission denied 2001-05-23 Kevin Layer * many files, CRLF conversion 2001-05-22 * fhandle.cl: Make sure pathnames are always canonicalized before hashing. Also, added a function for dumping the file handle hash table. * mountd.cl: added (in-package :user) and cvs Id * mpsocketfix.cl: added (in-package :user) and cvs Id * nfs.cl added (in-package :user) and cvs Id Added a function to make sure directory names end w/ a backslash. Increased debugging info for nfs-readdir. Removed readdir caching code. Increased debugging info for add-direntries and also attempted to add a workaround for what I believe is a bug in the Linux NFS v2 client implementation w/ regard to readdir. * portmap.cl: added (in-package :user) and cvs Id * sunrpc.cl: added (in-package :user) and cvs Id * utils.cl: added (in-package :user) and cvs Id added :strings-convert nil to calls to def-foreign-call to remove warnings. * xdr.cl: added (in-package :user) and cvs Id * nfs.cl: Send rpc PROC_UNAVAIL for procedures that we don't handle. This will prevent nfs clients from wedging. * sunrpc.cl: Added rpc-send-proc-unavail function to send PROC_UNAVAIL responses. * Added .cvsignore * added nfs.txt which is the NFS V2 RFC. * Updated the readme to show how to edit the export list * Updated extra.c to only defined INVALID_SET_FILE_POINTER if it isn't already defined. * Added Makefile and ChangeLog