]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/amd/NEWS
MFC r368207,368607:
[FreeBSD/stable/10.git] / contrib / amd / NEWS
1 *** Notes specific to am-utils version 6.2
2
3     - Removed license advertising clause
4     - Removed expn program
5
6 *** Notes specific to am-utils version 6.2-rc1
7
8 Filesystem Support:
9     - Add support for NFSv4
10     - Add support for Lustre
11     - Add support for ext{2,3,4}
12     - Add support for linux autofs version 5
13     - Add support for TMPFS and UDF
14 New features:
15     - Add amq -i (prints information about maps)
16     - Add synchronous unmount code for amq -uu
17     - Allow a comma-separated list of LDAP servers for failover
18 Changes in behavior:
19     - Empty variable assignments, now unset the variable value.
20     - Share LDAP connections between different maps to save resources
21 Portability fixes:
22     - Changes to work with Linux-2.6.x, Linux-3.x and NetBSD-5.x, NetBSD-6.x,
23       FreeBSD 7.x, Solaris
24 Bug fixes:
25     - Many bug fixes, see ChangeLog
26
27 *** Notes specific to am-utils version 6.2a3
28
29 - minor new ports:
30         i386-apple-darwin8.8.1
31         i386-pc-linux-centos4.4 (RHEL4 clone)
32         i386-pc-linux-fc6 (Fedora Core 6)
33         i386-pc-solaris2.11-nexentaos (GNU/OpenSolaris)
34         ia64-hp-hpux11.23 (gcc and cc)
35         powerpc-apple-darwin8.7.0
36
37 - Bugs fixed:
38         * reduce annoying warnings from xstrlcpy when expanding options.
39         * translate '*' Sun maps correctly with "${key}"
40
41 *** Notes specific to am-utils version 6.2a2
42
43 New amd.conf global parameter: nfs_allow_any_interface.  By default it is
44 set to 'no' which means that Amd accepts local NFS packets only from
45 127.0.0.1.  If set to 'yes' then Amd will accept local NFS packets from any
46 local interface; this is useful on hosts that may have multiple interfaces
47 where the system is forced to send all outgoing packets (even those bound to
48 the same host) via an address other than 127.0.0.1.
49
50 Add support for specifying the host to match in the mount selectors netgrp
51 and netgrpd.  Now one can use either netgrp(<group-name>) or
52 netgrp(<group-name>,<host-name>).
53
54 Support new mount options for type:=pcfs mounts: longname, nowin95,
55 shortname, user=N, group=N, mask=N, and dirmask=N.
56
57 Two new amd.conf [global] parameters: nfs_retry_interval_toplvl and
58 nfs_retransmit_counter_toplvl.  They are similar to nfs_retry_interval and
59 nfs_retransmit_counter, and allow you to set the "timeo" and "retrans" NFS
60 mount parameters, respectively, but ONLY for Amd's top-level mounts (which
61 are NFSv2/UDP currently).  This is useful because on some systems you may
62 wish to set these parameters differently than the OS default, so as to
63 better tune Amd's responsiveness under heavy scheduler loads.
64
65 - minor new ports:
66         i386-pc-linux-fc5 (Fedora Core 5)
67         i386-pc-linux-suse10.1 (beta 8)
68         i386-unknown-freebsd6.0 (RELEASE)
69         i386-unknown-freebsd6.1 (RELEASE)
70         i386-unknown-netbsdelf2.1
71         i386-unknown-netbsdelf3.0 (RELEASE)
72         i386-unknown-openbsd3.8
73         i386-unknown-openbsd3.9
74         powerpc-apple-darwin8.5.0
75         powerpc-apple-darwin8.6.0
76
77 - Bugs fixed:
78         * one serious memory leak in amfs_generic (caught by Coverity)
79         * assorted potential (but rare) NULL pointer dereferences (Coverity)
80         * correctly print nfs_args->addr info (sin_family/port/addr)
81         * pawd should resolve path repeatedly until no more to do
82         * handle old-style filehandles correctly (for mount points longer
83           than 28 chars)
84         * use-after-free bug in amfs_lookup_mntfs (Coverity)
85         * don't turn off attribute cache for regular NFS mounts (improves
86           performance)
87         * detect G/DBM support via gdbm_compat library (Debian)
88         * detect NDBM support in libc (FreeBSD 6)
89
90 *** Notes specific to am-utils version 6.2a1
91
92 MAJOR BUG FIXES: Synchronize Amd's view of its file systems with the
93 kernel's NFS client-side DNLC/dcache.  Amd changes its view when it reloads
94 maps (automatically or via "amq -f") because new map entries could be added,
95 old one removed, or existing ones changed.  Amd also changes its view when a
96 simple entry has expired and was flushed, or was forced out via "amq -u".
97 Amd was not updating the mtime of its parent directory (often the amd
98 automount point): this resulted in the kernel re-using cached entries, which
99 are now possibly stale.  Many users had seen this problem in the form of
100 occasional ESTALE errors, or dangling/broken automounted symlinks,
101 especially on systems under heavy use.  To tell the kernel to ignore (flush)
102 its old entries for an directory, the mtime of the directory must be updated
103 (monotonically incremented).  Amd was indeed doing so in several places, but
104 unfortunately it was using time(2) which only provides a one-second
105 resolution clock: this was fine a decade ago, but not good enough on today's
106 fast systems; using only a one-second resolution clock meant that on busy
107 systems that invoke Amd many times a second, some rapidly changing entries
108 do not get flushed from the kernel, and the kernel thus uses stale entries.
109 The solution to all of these was to rework the whole clock timer updates to
110 use gettimeofday(), using a micro-second resolution timer, and to use that
111 time whenever Amd needs to update an mtime/atime/ctime of any node.
112 Finally, we now update the mtime in places that were never updated before
113 (when a whole map is flushed or a single entry times out).
114
115 Warning: some OSs, we discovered, are incapable of turning off their
116 NFS attribute cache entirely.  This means that Amd cannot work fully
117 reliability on these systems, not under heavy load.  This is documented in
118 detail in the README.attrcache file included with this distribution.
119
120 Include test-attrcache script to test the NFS attribute cache behavior using
121 Amd.
122
123 Tell syslog not to log automatically to /dev/console; it's unfriendly.  If
124 user really wants to, they can set it in /etc/syslog.conf.
125
126 Moved pawd's path-matching functionality into Amd, where it can be done a
127 lot more efficiently (we no longer need to construct and send the whole
128 mounted tree, only to match small parts of it).  This will lessen the CPU
129 and network load on systems that use pawd heavily, and also minimize the
130 chance that we exceed default or hard-coded UDP/TCP RPC packet sizes.
131
132 Changed slightly how Amd behaves when you try to change log_options after
133 Amd started (options can be turned on/off via "amq -x ARG").  It used to be
134 that Amd won't let you turn off options which were on when Amd started.
135 That limited users' ability to reduce Amd's logging levels to a minimum.
136 Now, Amd will allow you to turn on/off any option, other than the two
137 options "fatal" and "error."  Both are on by default and considered
138 mandatory.  These two don't produce a lot of log messages, so your logs will
139 remain small, but they are important to keep on, so Amd can report serious
140 problems (including errors relating to incorrectly setting other log
141 options).
142
143 Amd now understands a new log_option called "defaults" which is synonymous
144 with "fatal,error,user,warning,info" (and is also what logging happens by
145 default).
146
147 Amd now understands a new debug_option called "defaults" which is synonymous
148 with "all,nohrtime,nomtab,noxdrtrace".
149
150 Changed the misleading inverted logic of certain debug_options:
151
152 1. "xdrtrace" is included in "all" because "all" (as the name implies),
153    should be *all* options, not just a subset.  If you want the old behavior
154    of "all" then use "defaults" (all only adds "xdrtrace" which can be
155    chatty on some systems).
156
157 2. Certain debug options are hereby declared immutable: they may not be
158    changed by "amq -D" after Amd starts, because it doesn't make much sense
159    to change them after Amd starts, and it could really mess up Amd.  These
160    immutable flags are currently "daemon," "fork," "amq," and "mtab."
161
162 3. the debug option "daemon" *will* cause Amd to daemonize.  Before, it was
163    causing Amd NOT to daemonize.  This was greatly confusing, especially
164    since the code, documentation, and comments often conflicted with each
165    other.  If you don't want Amd to daemonize, which is useful for debugging
166    it, then use the debug option "nodaemon" -- it makes a lot more sense.
167
168 4. Similarly, the "fork" option *will* cause Hlfsd to fork.  Use "nofork" if
169    you don't want Hlfsd to fork.  This option is only applicable to Hlfsd.
170
171 5. Similarly, the "amq" option, which is now on by default, will cause Amd
172    to register itself with the RPC portmapper (for Amq), as is done
173    normally.  If you don't want Amd to register with the portmapper, use
174    "noamq" -- this naming convention makes more sense.  This was also
175    confusingly documented and coded in places.
176
177    Note: unfortunately, these changes to the "daemon," "fork," and "amq"
178    debug options may be incompatible with people's previous use of Amd.
179    Some of you may have to update your amd.conf slightly or your startup
180    options (if they're hard-coded in your amd startup script).  Sorry, but
181    we have to fix those old problems sooner or later.  However, if you never
182    set any debug_options, or you used to "all," then you won't be affected
183    by the change in meaning of these three flags.
184
185 - minor new ports:
186         i386-pc-linux-deb3.1
187         i386-unknown-netbsdelf3.0 (BETA)
188         powerpc-apple-darwin8.2.0
189
190 - Bugs fixed:
191         * abort with an error if yacc/lex programs not found
192         * properly turn off the attrcache in freebsd and openbsd
193         * can turn off attrcache on netbsd, but need kernel patch, see
194           README.attrcache
195         * pawd goes into an infinite loop on type:=auto
196         * consistent search for file system mnttab/mount names
197         * convert all sprintf to safer xsnprintf
198         * convert all strcat to safer xstrlcat
199         * convert all strcpy to safer xstrlcpy
200         * fix three buffer overruns in expand_op (amd/opts.c)
201         * pawd was trying UDP only, now try TCP if UDP failed
202
203 *** Notes specific to am-utils version 6.1.1
204
205 New amd.conf global parameter: forced_unmounts (default to "no").  If set to
206 "yes," and the client OS supports forced or lazy unmounts, then Amd will
207 attempt to use them if it gets any of three serious error conditions when
208 trying to unmount an existing mount point or mount on top of one: EIO,
209 ESTALE, or EBUSY.  This could be useful to recover from serious conditions
210 such as hardware failure of mounted disks, or NFS servers which are down
211 permanently, were migrated, or changed their IP address.  Only
212 "type:=toplvl" mounts hung with EBUSY are forcibly unmounted using this
213 option: this is useful to ensure that a new Amd can mount itself even if a
214 previous Amd died and left its mount points hung, or to force Amd to
215 shutdown cleanly, even if some processes (i.e., user shells) have their CWD
216 on Amd's own mount point.  This functionality is available for Linux, BSD44
217 systems, Solaris, OSF/1, and partially for AIX.
218
219 New amd.conf global parameter: truncate_log (default to "no").  If set to
220 "yes", then Amd will truncate the log file (if it's a regular file) on
221 startup.  This could be useful when conducting extensive testing on Amd maps
222 (or Amd itself) and you don't want to see log data from a previous run in
223 the same file.
224
225 - minor new ports:
226         i386-pc-linux-fc4
227         i386-pc-linux-suse9.3
228         i386-pc-linuxoldld-deb3.1
229
230 - bugs fixed:
231         * safer mtab handling for Linux (locks + handles /proc/mounts)
232         * small compile problems on Solaris 6 (rpcvers_t)
233         * small compile problems on HPUX 10 (h_errno)
234         * possibly missing definition of INADDR_NONE in wire.c
235         * extern for sleep(3) may be missing on older gcc systems
236         * updated nfs_args structure on aix4.
237         * possible running off end of exported_ap[] array.
238         * buffer overflow in pawd.
239         * aix4 clean build.
240         * use strlcat/snprintf in a few places for safety.
241         * recover from IP address change of a down NFS server
242         * don't discard restarted mntfs that was used.
243
244 *** Notes specific to am-utils version 6.1
245
246 - bugs fixed:
247         * set timeo/retrans for type:=nfs only if user asked
248
249 Also, if you want to know what's new in 6.1 compared to 6.0.x, it's
250 EVERYTHING below this line, up to "6.0.4."  Yes, that's a lot of stuff.
251
252 *** Notes specific to am-utils version 6.1-rc7
253
254 Remove alloca from am-utils, and rewrite code that used it.
255
256 Assorted minor code cleanups.
257
258 - minor new ports:
259         alpha-unknown-linux-gentoo1.4.16
260         alphaev56-dec-osf4.0f (using both cc and gcc)
261         mips-sgi-irix6.5 (using both cc and gcc)
262         mips-unknown-linux-gentoo1.4.16
263         sparc64-unknown-linux-gentoo1.4.16
264
265 - bugs fixed:
266         * getwire() detects networks correctly on OSF/1
267
268 *** Notes specific to am-utils version 6.1-rc6
269
270 - minor new ports:
271         i386-pc-linux-deb3.0
272         i386-pc-linux-gentoo1.4.16
273         i386-pc-linux-suse9.2
274         i386-unknown-freebsd5.4
275         i386-unknown-netbsdelf2.0.2
276         i386-unknown-openbsd3.7
277         powerpc-unknown-linux-yellowdog2.3
278
279 - bugs fixed:
280         * minor compile error of nfs_subr.c on some systems.
281         * AIX 5.2/5.3 PPC compile fixes.
282
283 *** Notes specific to am-utils version 6.1-rc5
284
285 For NetBSD systems, $os used to say "netbsdelf1" or "netbsdelf2."  Now it
286 just says "netbsd."
287
288 - minor new ports:
289         powerpc-apple-darwin7.9.0
290
291 - bugs fixed:
292         * silly (but nasty) null pointer dereferencing
293         * improved fix for '-opts' syntax for resetting map options
294
295 *** Notes specific to am-utils version 6.1-rc4
296
297 - bugs fixed:
298         * check for "macosx" in M4 macros properly
299         * minor memory leaks (thanks to Valgrind)
300
301 *** Notes specific to am-utils version 6.1-rc3
302
303 Minor fix to configure.in.  Reran bootstrap to get a working configure
304 script that indeed checks for certain Linux nfs/autofs headers.
305
306 *** Notes specific to am-utils version 6.1-rc2
307
308 New amd.conf global parameter: normalize_slashes (default to "yes").  If set
309 to "no," then Amd will not condense repeated slashes or remove trailing ones
310 from strings representing pathnames.  This is sometimes useful with SMB
311 mounts, which often require multiple slash characters in pathnames.
312
313 Using a custom version of strlcpy instead of strncpy (but only where it
314 makes sense), to minimize string overflow changes.  Audited all use of
315 strncpy/strlcpy to ensure safety.
316
317 On Apple machines, use "powerpc" for $arch, instead of "Power Macintosh".
318 Also, use sw_vers to find out more appropriate OS name (macosx) and OS
319 version (10.3.x) than uname(3) reports.
320
321 - minor new ports:
322         powerpc64-unknown-linux-rhel4
323         powerpc64-unknown-linux-sles9
324
325 - bugs fixed:
326         * pawd handles all file systems
327         * fix double-free in type:=nfsx
328         * timeo and retrans shouldn't be set for type:=toplvl
329         * fix inconsistency in handling filehandle generation number
330         * document proper use of hosts.allow (don't spawn)
331         * single dash '-' map entry now resets the defaults
332
333 *** Notes specific to am-utils version 6.1-rc1
334
335 - minor new ports:
336         i386-pc-linux-fc2 (Fedora Core 2).
337         i386-pc-linux-fc3 (Fedora Core 3).
338         i386-pc-linux-rhel3
339         i386-pc-linux-rhel4
340         i386-pc-linux-suse8.2
341         i386-pc-linux-suse9.1
342         i386-pc-solaris2.10
343         i386-unknown-freebsd4.8
344         i386-unknown-freebsd4.9
345         i386-unknown-freebsd4.10
346         i386-unknown-freebsd4.11
347         i386-unknown-freebsd5.1 (5.1-RELEASE)
348         i386-unknown-freebsd5.2 (5.2-RELEASE)
349         i386-unknown-freebsd5.2.1 (5.2.1-RELEASE)
350         i386-unknown-freebsd5.3 (5.3-RELEASE)
351         i386-unknown-freebsd6.0 (6.0-CURRENT-SNAP001)
352         i386-unknown-netbsdelf1.6.1
353         i386-unknown-netbsdelf2.0
354         i386-unknown-openbsd3.6
355         ia64-hp-hpux11.20
356         ia64-unknown-linux-rhel4
357         mipsel-unknown-linux-rhPS2 (Linux on Sony PlayStation 2)
358         powerpc-apple-darwin7.6.0
359         powerpc-apple-darwin7.7.0
360         powerpc-apple-darwin7.8.0
361         powerpc-ibm-aix5.2.0.0
362         powerpc-ibm-aix5.3.0.0
363         sparc-sun-solaris2.10
364         sparc64-unknown-linux-deb3.0
365         x86_64-unknown-linux-rh2.9.5AS
366
367 - support for executable maps ala Sun automounter.  Set map_type=exec in
368   amd.conf, and map_name to a program/script that takes a key as argv[1],
369   and returns key-value pair on stdout.  See also exec_map_timeout [global]
370   parameter which defines how many seconds (default 10 sec) Amd will wait
371   for an executable map program to return output before timing out.  See
372   am-utils manual for full details.
373
374 - new amd.conf parameter "nfs_allow_insecure_port".  Used to work around
375   bugs in certain kernels, which cause them to try and talk to amd from
376   unprivileged ports.
377
378 - new amd.conf parameter: localhost_address.  Used to override the localhost
379   (often 127.0.0.1) address Amd uses to connect to for the local NFS server
380   and RPC server.
381
382 - new amd.conf [global] parameter: domain_strip (default "yes").  If set to
383   "no," Amd won't strip domain names from host names, which is useful if
384   your Amd maps are served by multiple domains and you want to tell from the
385   logs which exact host did what.
386
387 - new amd.conf [global] parameter: auto_attrcache (default to 0).  Sets
388   Amd's own NFS attribute-cache timeout in seconds.  A value of 0 turns off
389   attribute caching, meaning that Amd will be consulted via a kernel-RPC
390   each time someone stat's the mount point (which could be abused as a
391   denial-of-service attack).  If you're concerned, set this to something
392   greater than zero (a value of 1 second is currently recommended).
393   Warning: if you set this option to any non-zero value, especially a large
394   value, and you get ESTALE errors on your particular OS, then set this
395   value back to 0 seconds.
396
397 - four new amd.conf [global] parameters, similar to nfs_retry_interval and
398   nfs_retransmit_counter, which allow you to set the "timeo" and "retrans"
399   NFS mount parameters, respectively.  Now you can set those parameters
400   globally and separately for UDP vs. TCP, using any of these:
401   nfs_retry_interval_udp, nfs_retransmit_counter_udp nfs_retry_interval_tcp,
402   and nfs_retransmit_counter_tcp.
403
404 - new amd.conf [global] parameter: preferred_amq_port.  Allows you to select
405   the UDP+TCP port that Amd's amq service will use with the RPC portmapper.
406   Useful with firewalls and NAT'ed environments.
407
408 - new amd.conf option "debug_mtab_file".  Allows user to define the mtab
409   file during debug-mtab mode.  The default path is "/tmp/mtab".
410
411 - new function selector xhost(ARG) which will match ARG against the current
412   host name.  This works even if ARG is a CNAME (unlike the host==ARG
413   selector).
414
415 - support restarting the automounter's own mount points (only over NFS,
416   for now).
417
418 - fully support WebNFS as per RFC 2054.  It now tries v3/TCP first, falling
419   back to v2/UDP if this doesn't work.  The "webnfs" pseudo-mount options
420   has been renamed (again) to "public" to match Solaris 2.
421
422 - restructured the restarting of already-mounted filesystems, in the process
423   also fixing a problem with restarting nfsx components.
424
425 - support escaped slashes, needed for SMB mounts.  Use '\\\/\\\/' in a
426   string to get a double slash.
427
428 - amd -v now prints domain, host, and hostd values: foo, example.com, and
429   foo.example.com, respectively.
430
431 - On Linux, if umount(2) failed with EIO or ESTALE, try the new umount2(2)
432   system call with MNT_FORCE+MNT_DETACH.  This could be quite helpful to
433   unmounting hung mount points that otherwise cannot be fixed without a
434   reboot.
435
436 - The ping=N mount option now works.  N defaults to 30 seconds for all NFS
437   servers.  It can now be set to any value for each server separately.
438   Setting it to a large value can reduce the amount of NFS_NULL chatter on
439   your network considerably, especially in large sites.  Setting this to -1
440   will turn off pings for that server (useful in NFS-HA setups).  Setting N
441   to 0 will pick the default ping value in Amd (currently 30 seconds).  Note
442   that if you have multiple Amd entries using the same file server, and each
443   entry sets a different value of N, then each time Amd mounts a new entry,
444   the ping value will be re-evaluated (and updated, turned off, or turned
445   back on as needed).  Note that NFS_NULL pings are sent for both UDP and
446   TCP mounts, because even a hung TCP mount can cause user processes to
447   hang.
448
449 - file system inheritance code restructured, so it's no longer a pseudo file
450   system, but actually integrated into Amd (as it should have been).
451
452 - for type:=program, the "umount" program doesn't have to be defined; it'll
453   default to "unmount ${fs}".
454
455 - "amd -v" now prints the distribution name if it's known (e.g., rh9, fc3,
456   suse8, etc.).
457
458 - bugs fixed:
459         * various memory management problems (leaks, etc)
460         * fixed nfsx support
461         * fixed a race involving late replies to network queries which
462           arrive after the file system has already been mounted
463         * recognize pcfs_args_t fields in FreeBSD 5
464         * recognize other mount types in pawd: host, linkx, and nfsx
465         * allow exactly one of umount and unmount in type:=program
466         * race condition between calls to mntctl() on AIX
467         * plock/mlockall wasn't inherited by fork(); moved after
468           daemonizing.
469         * fix inconsistency between Socket and TLI RPC timeouts.
470         * don't warn when couldn't rmdir a dir with a readonly ancestor.
471         * avoid hangs of amd in ctl-amd (must chdir to /)
472         * workaround occasional daemonizing problems (parent won't die)
473         * don't hang on exit if debug_options=mtab was used
474         * utimeout=N mount option works with non-nfs types (ufs, pcfs, etc.)
475         * SEGV (null pointer deref) in type:=program and type:=cachefs
476         * unmount_on_exit of type:=program caused amd to hang
477         * match amd2ldif output with ldap.schema
478
479 *** Notes specific to am-utils version 6.1b4
480
481 - minor new ports:
482         i686-apple-darwin6.6
483
484 - speed up the recovery of inherited (restarted) filesystems by using the
485   proper waiting channels
486
487 - added support for mounting webnfs filesystems, see entry below. It doesn't
488   do any probing currently, so it will default to v2/UDP unless another
489   version and/or protocol are explicitly specified.
490
491 - pseudo-mount option "ignore_portmapper" renamed to "webnfs"
492
493 - bugs fixed:
494         * properly time out autofs filesystems on Linux
495         * link mounts with relative targets weren't working on autofs
496         * the link side of the nfsl file system wasn't working on autofs
497         * umount code was accidentally turning all symlinks into directories
498           during attempted umounts, causing stale filehandles
499         * various minor build fixes for "impossible" configurations
500         * prevent ldap code from dereferencing a null pointer
501
502 *** Notes specific to am-utils version 6.1b3
503
504 - new amd.conf option autofs_use_lofs, set by default to "yes".  "yes" means
505   using in-place mounts (lofs, bind mounts, etc.), thus utilizing one of
506   Autofs's main advantages.  "no" means using symlinks instead, which has
507   the "/bin/pwd" problem and certain efficiency issues on Solaris 2.6+ and
508   is also not supported on Solaris Autofs v1 and derivatives; however, the
509   autofs code that uses symlinks is simpler and more thoroughly tested.
510
511 - new amd.conf option map_default (can be used in [global] and overwritten
512   in the per-map section).  This will overwrite the /defaults entry of the
513   map itself, to allow people to set defaults in amd.conf (useful when you
514   cannot control your amd maps, or you'd rather not modify them globally).
515
516 - for type:=program, you can use either unmount:=XXX or umount:=XXX (but not
517   both).  This new 'unmount' name is an alias for convenience.
518
519 - fixed the "multiple matching sub-entries in a map entry" semantics to try
520   mounting those sub-entries one by one, until either one succeeds or all
521   fail.  The old semantics of trying to mount everything in parallel and use
522   the one that mounted fastest hasn't worked in a long time; in fact, 6.0
523   currently simply ignores all but the first matching sub-entry.
524
525 - made amd fail much faster (instantly, in fact) if the remote server
526   doesn't have a functional portmapper or NFS service.  Also reduced the
527   total timeout to 3 seconds for a completely downed server.
528
529 - new pseudo-mount option "ignore_portmapper"; not very useful currently,
530   will make more sense when we also accept hard-coded ports for mountd and
531   nfsd.
532
533 - amd will no longer query the portmapper for all possible NFS versions and
534   protocols if the user requested to use specific ones.
535
536 - increased the major number for the library, so that 6.0 and 6.1 can't
537   share libraries anymore.
538
539 - support tcpd/libwrap tcpwrappers.  If your system supports libwrap, then
540   you can use /etc/hosts.allow and /etc/hosts.deny to control remote Amq
541   access to Amd.  The new amd.conf parameter use_tcpwrappers is set to "yes"
542   by default.
543
544 - support NULL entries in Hesiod maps, if they start with a ".".
545
546 - code reorganization
547
548 - documentation cleanup, corrections, and general updates.  Better
549   references to all man pages.  Support newer texi2html.  Proper building of
550   DVI and PSI files.  Allow building of am-utils manual in one long Web
551   page.
552
553 - minor new ports:
554
555         ia64-unknown-linux-rh2.1AS (Red Hat Itanium Advanced Server)
556         i386-unknown-freebsd5.0 (5.0-RELEASE)
557         sparc64-unknown-linux-suse7.3
558         i386-unknown-netbsdelf1.6.1
559         i386-unknown-openbsd3.3
560         i386-pc-solaris2.9
561
562 - bugs fixed:
563
564         * autofs mode on Linux was segfaulting on a silly error (and noone
565           complained, which proves that I'm probably the only one testing
566           these beta releases, tsk tsk).
567         * fixed handling of host entries over autofs.
568         * fixed handling of nfsl entries over autofs.
569         * the matching in find_mntfs() was causing problems for inherited
570           filesystems, so make an exception for them. Tighten the
571           matching even more, to take into account the f/s type as well.
572         * recognize xlatecookie mnttab option on netbsd
573         * document Solaris lex bug (use flex)
574         * document AIX 5.x NFS bug (need patch)
575         * document Solaris 8 autofs version change (need to fix system
576           header file)
577         * ensure lex doesn't run out of output slots
578         * support GNU flex-2.5.31+
579         * force version.texi to be rebuilt unconditionally
580         * mk-amd-map open db file exclusively (security)
581         * turn off maintainer-only rules in distros
582         * don't core dump if log_file is NULL (Solaris)
583         * don't include malloc.h if stdlib.h exists
584         * recognize file system failures (EIO) upon reading file maps
585
586 *** Notes specific to am-utils version 6.1b2
587
588 - new mount flag "softlookup", which determines how amd will respond to
589   lookups of NFS shares already mounted (return a valid symlink or return
590   EIO). The default, if "softlookup" is not specified, depends on whether the
591   mount is "soft" or "hard".
592
593 - return EIO instead of ENOENT if amd thinks the server is down; this allows
594   well-written applications to sleep and retry the operation.
595
596 - minor new ports:
597
598         i386-apple-darwin6.0
599         i386-pc-linux-rh8.0
600         ia64-unknown-linux-rh2.1AW
601         sparc-sun-solaris2.9
602
603 - automatic support for loop mounts on Linux (deprecates the "loop" mount
604   option)
605
606 - new amd.conf parameter ldap_proto_version (default 2) for setting the LDAP
607   protocol version to use.
608
609 - bugs fixed:
610
611         * redundancy mode (multiple servers for the same share) wasn't working
612         * non-autofs mode had some rather nasty hangs on downed file servers
613         * double-free'ing problem in assign_error_mntfs and free_continuation
614         * free'ing non-malloc'ed memory in amfs_auto_mount
615         * late server ping replies were not ignored
616         * amfs_auto_lookup_mntfs wasn't propagating errors up to callers
617         * autofs-v4 on Solaris 9 works
618         * handle std{in,out,err} correctly when releasing controlling tty
619           (for real this time)
620         * don't cast pointers between enum_t and u_long, it doesn't work on
621           64-bit big-endian platforms
622         * fix compile problem with mlockall() on Darwin
623
624 *** Notes specific to am-utils version 6.1b1
625
626 - Major Autofs work
627         Partial support for Sun Autofs v1
628         Documented known problems with Sun Autofs v1 (possible deadlocks)
629         Fixes for Sun Autofs v2/v3
630         Preliminary support for Sun Autofs v4 (Solaris 9)
631         Kernel-based expirations for Linux Autofs
632
633 - Minor new ports:
634         powerpc-ibm-aix5.1.0.0
635         i386-unknown-netbsd1.6A
636
637 - Work around IBM's NFSv3 ABI change in aix4.3
638
639 - trivial regression test suite started: run "make check" on a built
640   am-utils to execute tests.  Currently only one test which checks to see if
641   "amd -v" executes correctly.
642
643 - new command line option "amd -A arch" to overwrite the value of $arch.
644
645 - bugs fixed:
646
647         * Linux loop mounts of ISO images
648         * assorted LDAP fixes
649         * strerror not found on some systems
650         * small fixes for hpux9 and aix43
651         * exclude ldap/hesiod support unless both libraries+headers exist
652         * fully support "xlatecookie" mount option
653         * security: if -D noamq option, don't listen on socket.
654
655 *** Notes specific to am-utils version 6.1a5:
656
657 - browsable_dirs support for Solaris autofs, *without* mount storms!
658
659 - new amd.conf global parameter: map_reload_interval (default 1 hour).
660   Determines how often Amd checks to see if maps have changed at the source
661   (and then reloading only those that have changed).
662
663 - "amd -v" now lists bug-reporting address.
664
665 - assorted code cleanups and porting to use latest versions of GNU
666   Autotools.
667
668 - opts:=loop works for type:=cdfs, for mounting ISO-9660 files on Linux.
669
670 - bugs fixed:
671
672         * fixed sublink support in Linux autofs (broken in a4)
673         * hlfsd takes uid 0's home from root's passwd entry instead of
674           defaulting to '/'
675         * (not really our bug) Linux ignores the microseconds field in
676           mtime, so hlfsd and amd need to increment the seconds field all
677           the time to prevent symlink caching
678         * generic map parsing bug which was rejecting a numerical mount
679           option if it was the last option in the string.
680         * file descriptor leak in Linux autofs.
681         * "nolock" is an NFS mount option, not a generic one.
682         * use mlockall(2) on systems that have it, for plock=yes.  Now
683           pinning Amd's pages in memory works on Linux.
684         * ctl-amd/ctl-hlfsd correctly refer to @sysconfdir@ for alternate
685           location of configuration files.
686
687 *** Notes specific to am-utils version 6.1a4:
688
689 - full autofs support for Solaris 2.[67], including symlinks, sublinks and
690   direct mounts
691
692 - fixed mount/umount deadlock in Linux autofs
693
694 - fixed sublinks in Linux autofs
695
696 - support for network/netmask pairs in the in_network() selector
697
698 - support disabling LDAP and Hesiod support using configure
699
700 - forward-ported all the fixes from the stable branch (MacOS X support,
701   minor Linux fixes)
702
703 - bind-mount support for type==link and type==lofs with Linux 2.4+
704
705 - FiST lofs support under Linux (also in 6.0.6s2)
706
707 *** Notes specific to am-utils version 6.1a3:
708
709 - various things from the 6.0 branch:
710         compile fixes for Linux 2.4-ac and 2.2.19pre+
711         Darwin/Rhapsody/OS X support
712         much reduced configure script (works around a bug in Darwin's cpp)
713
714 *** Notes specific to am-utils version 6.1a2:
715
716 - working autofs support for Solaris 2.[67], but incomplete
717
718 - forward-ported all the changes up to 6.0.5s2
719
720 - removed support for amq -M
721
722 - known bugs
723         nfsx support is broken
724         linux NFS codes fixes
725         NFS cache aliasing fixes
726         lots of stuff ported from 6.0 branch
727
728 *** Notes specific to am-utils version 6.1a1:
729
730 - working autofs (v3 and v4) support for Linux!
731
732 - forward-ported all the changes in 6.0.4s4
733
734 - bugs fixed
735         client-side fail-over to NFSv2/UDP
736
737 - known bugs
738         autofs v3 will probably break with host maps
739
740 *** Notes specific to am-utils version 6.0.4:
741
742 - NFSv3 support for Linux and HPUX-11
743
744 - new amd.conf [global] options:
745         nfs_vers: force all NFS mounts to version 2 or 3
746         nfs_proto: force all NFS mounts to udp or tcp
747
748 - new debug_options (amd -D):
749         hrtime: turns on high-resolution timer if available
750         readdir: traces browsable_dirs code
751         xdrtrace: traces XDR routines
752         (trace: only traces NFS and RPC)
753
754 - new amq options:
755         -H: shows usage
756         -w: translate getpwd() into an Amd path
757
758 - new map syntax:
759         ${dollar}: to include a literal '$' in assignments
760
761 - new "opts:=" options:
762         ver3: turns on NFS version 3 on some systems (linux)
763
764 - updated or minor new ports:
765         alpha-dec-osf4.0f
766         alphaev6-dec-osf5.0
767         i386-pc-linux-rh6.2
768         i386-unknown-freebsd3.4
769
770 - bugs fixed:
771         symlink mtime fixes to avoid u/mount race conditions
772         update amq -s failed umounts count correctly
773         linux compiles even if efs is available
774         linux works with mount(2) option "intr"
775         linux works with pcfs and cdfs
776         handle std{in,out,err} correctly when releasing controlling tty
777         browsable_readdir works on 64-bit kernel architectures
778         irs/wire routines compile for bsdi{2,3,4}
779
780 *** Notes specific to am-utils version 6.0.3:
781
782 - updated or minor new ports:
783         hppa1.0-hp-hpux11.00
784         i386-pc-bsdi4.1
785         i386-unknown-netbsd1.4.1
786         sparc-sun-solaris2.8
787         i*86-pc-linux-gnu-rh6.1
788         (some preparations for Compaq Tru64)
789
790 - new variables ${uid} and ${gid}, return the numeric UID/GID of the user
791   (not root) who invokes an amd pathname.  Similar to what hlfsd does.
792
793 - automake now uses automatic dependency tracking
794
795 - new mount options: optionstr, noexec, nomnttab
796
797 - maps of type:=auto are now browsable (using map option "browsable")
798
799 - ctl-amd has "status" argument (same as RedHat)
800
801 - bugs fixed:
802         document buggy AIX 4.3 plock() behavior
803         fixes to stale file handle on symlinks
804         reduce race conditions upon rapid umount/mount sequences
805         use vsnprintf, more secure than vsprintf
806         more assorted and smaller bugs
807
808 *** Notes specific to am-utils version 6.0.2:
809
810 - safe map reloads: when a map needs to be reloaded, it is reloaded into a
811   temporary copy first.  Only if the reload was completely successful, Amd
812   discards the old map and uses the new one.  Otherwise Amd continues to use
813   the old maps.  This should help a lot with transient NIS problems.
814
815 - amq -f now also forces a (safe) map reload, but only if the timestamp on
816   the maps was updated.
817
818 - two new selector variables: ${vendor} and ${full_os}, which are the same
819   as the output seen in "amd -v".
820
821 - documentation fixes and updates
822
823 - updated or minor new ports:
824         i386-unknown-freebsdelf3.3
825
826 - support 'ignore' flags (automntfs) in bsdi-4.1
827
828 - bugs fixed:
829         expn.pl uses correct sockaddr_in() not, pack()
830         make sure configure --enable-*args take an argument
831         don't busy-loop trying to rebind to ldap servers
832         use vsnprintf, not vsprintf (security)
833
834 *** Notes specific to am-utils version 6.0.1:
835
836 - updated or minor new ports:
837         i386-pc-bsdi4.0.1
838         i386-unknown-freebsdelf3.0
839         i386-unknown-freebsdelf3.1
840         i386-unknown-freebsdelf3.2
841         i386-unknown-freebsdelf4.0
842         i386-unknown-netbsd1.4
843         i386-unknown-openbsd2.5
844         powerpc-unknown-linux-gnu
845
846 - automount2amd added, a new script to convert Sun automount maps to Amd maps
847
848 - new map function netgrpd(ARG), same as netgrp() but matches FQHN
849
850 - 'ignore' is a generic mount option
851
852 - hesiod info service isup() function to check if service is up
853
854 - more Y2K fixes (see README.y2k for the full story)
855
856 - using alloca.c on systems that don't have it (hpux9 with /bin/cc)
857
858 - configure script reduced in size by using M4/sh loops instead of repeated
859   entries
860
861 - documentation updates
862
863 - too many bugs fixed to list here:
864         'addopts' option works with 'remopts' as well as 'opts'
865         AIX can perform NFS V.3 mounts explicitly
866         NIS is_up fixed, especially for NIS+ running in compatibility mode
867         amd -v incorrectly listing file systems that don't really work
868         amd's own mounts use reserved ports if possible
869         browsable directories works for Linux 2.3 (NFS cookies)
870         bsd44 systems check for isofs flags
871         bsd44 systems check for new options: norrio, gens, and extatt
872         buildall works better on Ultrix's /bin/sh
873         compile and build on Linux kernels 2.2 and newer
874         compile and build on RedHat Linux 6.0 (glibc 2.1)
875         compile and build on Solaris 7 (with or without vendor LDAP)
876         completely eliminate all of amd's amq -M code, when not enabled
877         correctly interpret failure code of unmount of type:=program
878         don't create autofs listener service unless used
879         don't list or process amq's -M option unless feature was turned on
880         don't turn on/off noconn option if it was already in that state
881         ldap info service: don't strcmp null strings
882         lostaltmail correctly sets struct sockaddr_in
883         make sure Linux systems have configured kernel headers
884         test for bsize/namlen fields in nfs_args (linux mount versions 2/3)
885         turn off broken NFS V.3 support for HPUX
886         use getifaddrs() on bsd44 systems makes wire.c more reliable
887         use matching NFS rsize/wsize on Linux 2.0 and 2.[123] kernels.
888         verify that RPC requests come from reserved, privileged local ports
889         warn when Linux kernel headers mismatch with running kernel
890         pawd works for type:=nfsl too
891
892 *** Notes specific to am-utils version 6.0:
893
894 - updated or minor new ports:
895         hppa2.0w-hp-hpux11.00,
896         i386-pc-bsdi4.0
897         i386-unknown-freebsd2.2.8
898         i386-unknown-netbsd1.3.3
899         i386-unknown-openbsd2.4
900         mips-sgi-irix6.5
901         powerpc-ibm-aix4.3.1.0
902         i386-unknown-freebsd3.0 now supports nfs v.3
903
904 - ctl-amd and ctl-hlfsd now compatible with RedHat's chkconfig utility
905
906 - ctl-amd stop will now wait until amd is down
907
908 - libamu.so completely self contained --- does not export any symbols which
909   must be defined by the process linking with it.  This is so shared
910   libraries could be supported on systems that have restrictive shared
911   libraries.
912
913 - use latest autoconf, automake, and libtool (off of cygnus' CVS server) to
914   support shared libraries on many more platforms.
915
916 - posix code cleanups
917
918 - bugs fixed:
919         case insensitive host match in type:=nfsl
920         correct swapped args to kill(2)
921         try to avoid a race condition b/t mounting and unmounting
922         yp_all support is found in libnsl in RH-5.1 systems
923
924 *** Notes specific to am-utils version 6.0b1:
925
926 - updated or minor new ports:
927         - *-pc-linux-gnu (glibc2 systems such as RedHat 5.1)
928         - sparc-sun-solaris2.7
929         - i386-pc-solaris2.7
930         - i386-unknown-freebsd3.0 (official release, post 4.4lite port)
931         - sparc64-unknown-linux-gnu (RH 5.1 on Sun Sparc Ultra)
932
933 - bugs fixed:
934         - major memory leak in processing of /defaults
935         - core dump if map_type given in amd.conf doesn't exist
936         - memory leak in replacement yp_all
937         - don't access uninitialized memory in DU 4.0
938         - other smaller bugs, see ChangeLog
939
940 *** Notes specific to am-utils version 6.0a16:
941
942 - new ports:
943         hppa1.0-hp-hpux11.00 (works, not NFS V.3 due to missing headers)
944         mips-dec-ultrix4.3 (working, unverified)
945
946 - new minor ports:
947         i386-pc-bsdi3.1
948         i386-unknown-netbsd1.3.1
949         alpha-dec-osf2.1
950
951 - new options addopt:=ARG will "smartly" add and override options specified
952 in opts:=
953
954 - new amd.conf options:
955         pid_file: specifies the file to store the PID
956         hesiod_base: specifies the base for the Hesiod service
957         unmount_on_exit: if 'yes' will attempt to unmount all file systems
958                 when amd exits.
959
960 - amd.conf file is parsed after all other command line options.  If no
961 options specified at all, then use /etc/amd.conf by default.
962
963 - some variables' values are now compared case-insensitive as per specs,
964 such as host names, domain names, and more.
965
966 - NIS service uses a new isup() function to detect if the service is up
967 before using it.  Used to ensure amd doesn't clear the existing maps before
968 reloading them, unless the remote info service is working.
969
970 - new cdfs mount options: rrip, noversion, defperm, nodefperm (OSF)
971
972 - support efs/xfs separately on irix
973
974 - new -D info trace option to turn on info specific debugging, such as
975 RES_DEBUG for hesiod services.
976
977 - document updates and fixes
978
979 - new file MIRRORS lists official mirror sites (also in am-utils home page)
980
981 - new file BUGS lists known amd/OS bugs
982
983 - source restructuring: rename all Amd file-systems' sources to amfs_ARG.c
984 such that it matches the type:=ARG as well.  Free names afs/dfs for Andrew
985 F/S and Distributed F/S.
986
987 - checkpoint config.guess several times during the long configure, so that
988 if it is aborted midway, the bulk of the features discovered will be re-read
989 from the config.cache file.
990
991 - more systems support shared libraries (libtool 1.2)
992
993 - using automake 1.3 + more fixes
994
995 - bugs fixed:
996         use dynamic buffer for list of interfaces, not fixed size
997         output of amd -H duplicated if >2 interfaces
998         -D mem for hlfsd not on by default (so it will daemonize)
999         linux looks for ext2fs before ufs
1000         CDFS looks for 'isofs' mount type as well
1001         compile on Solaris 2.6 with /opt/SUNWspro/bin/cc
1002         various additional fixes which gcc 2.8.x reported
1003         print syslog help string based on what's supported
1004         correctly ignore loopback interface on SunOS 3.x
1005         don't use -lucb for strcasecmp
1006         hlfsd's dump file securely written in /usr/tmp/hlfsd.dump.XXXXXX
1007         inherit NFS V.3 mounts correctly
1008         write pid file securely
1009
1010 *** Notes specific to am-utils version 6.0a15:
1011
1012 - new ports:
1013         alpha-unknown-linux-gnu: works
1014         i386-unknown-netbsd1.3: fully working
1015         *-sun-sunos3: compiles, not tested
1016
1017 - updated ports:
1018         m68k-next-nextstep3: cleaner compile, works.
1019
1020 - new file system type nfsl (NFS Link).  Uses nfs if file system is remote,
1021 and link if it is local (based on if $rhost equals the host name).
1022
1023 - support for Solaris cachefs.  Requires setting fs, rfs, and a new variable
1024 cachedir.  See documentation for explanation, examples, and caveats.
1025
1026 - support negated selector functions such as !exists(/foo/bar)
1027
1028 - wire, network, netnumber, in_network() selectors now match against all
1029 locally attached networks (by either name or number), not just the first two
1030 interfaces.
1031
1032 - new program pawd (and man page for it) --- Print Automounter Working
1033 Directory, to print the proper pathname of the cwd or any other pathname,
1034 adjusted for automounter paths, while avoiding mount points.
1035
1036 - two new switches to amq: -U will force using UDP only; -T will force using
1037 only TCP to communicate with amd.  If neither (or both) are specified, amq
1038 will try TCP first, and if that failed, will try UDP.
1039
1040 - support syslog facilities, using "amd -l syslog:facility".  Old behavior
1041 when using only -l syslog is to use the LOG_DAEMON facility.
1042
1043 - you may specify browsable_dirs=full, to get a listing of all entries
1044 (other than /default), including those with '*' wildcard and '/'
1045 characters.
1046
1047 - amd -D trace now also includes as much of struct nfs_args as can be
1048 displayed.  Useful in figuring out what the kernel really gets during a
1049 mount(2), as opposed to what the /etc/mnttab file says.  -D trace also
1050 traces the xdr_* functions.
1051
1052 - support for versions of shared libamu version.  upped version from 0.0.0
1053 to 1.0.0.  each am-utils release that will change the library will also
1054 update its version.
1055
1056 - amd/ops_TEMPLATE.c: a new template file for those brave enough to try and
1057 implement a new amd file system.  Includes comments and other info useful
1058 for developers.
1059
1060 - if localconfig.h exists in the current directory during the run of
1061 configure, it is included in all am-utils sources.  This allows courageous
1062 developers to make certain modifications during compilations, and especially
1063 turn off undesired features (not very recommended).
1064
1065 - documentation types and updates for all new features, ports, etc.
1066
1067 - bugs fixed:
1068         support NFS mount options grpid and maxgrps
1069         nextstep: set NFS success code to 0 (NFS_OK), not 1 (EPERM)
1070         bsdi2: set NFS success code to 0 (NFS_OK), not 1 (EPERM)
1071         set NFS V.3 mount table names to "nfs" if vers/proto exist
1072         use mkstemp() if possible (more secure)
1073         ctl-amd looks for amd.conf in ${prefix}/etc after /etc
1074         hpux: use "ignore" mount table type
1075         openbsd2.2: turn off "noconn" mount option, so only connected used
1076         fixed memory leak in hlfsd (don't setpwent after endpwent)
1077         all NFS3 systems should have proto/vers mount/amd options
1078         DEBUG_MEM compiles and prints something more useful
1079         uninit_mntfs(): free() mf_private *after* it is used
1080         browsable_readdir: fewer bytes sent back to kernel for each chunk
1081         mount_toplvl: don't free() an automatic variable!
1082         amd should chdir() to / before daemonzing (for core dumps etc)
1083         cdfs should be called 'cdfs' not whatever the mnttab type is
1084         amd -v: don't print "FS:" list twice when >=2 net interfaces
1085
1086 *** Notes specific to am-utils version 6.0a14:
1087
1088 - updated ports:
1089         powerpc-ibm-aix4.2.1.0: NFS V.3 works
1090
1091 - minor new ports:
1092         sparc-sun-sunos4.1.3C
1093         m68k-sun-sunos4.1.1 (sun3)
1094         mips-sgi-irix5.2
1095
1096 - new option to amd, -O ARG, will override the operating systems *name* with
1097 ARG.  Corrected documentation for amd -o ARG --- it overrides the operating
1098 system *version* and not the name as the docs incorrectly stated.
1099
1100 - logging now behave more like syslog: will not print repeated strings, but
1101 rather a count such as "last message repeated N times".  (N will not exceed
1102 100.)
1103
1104 - restructured the code which deals with the numerous possible fields and
1105 flags that are set in struct nfs_args.  That code was moved to libamu as
1106 the functions compute_nfs_args() and compute_automounter_nfs_args().
1107
1108 - bugs fixed:
1109         mnttab name ufs/cdfs/pcfs/etc filesystems corrected
1110         use pmap_ping for amq (a must for secure portmappers, bsdi2/3)
1111         test for xfs (irix) as a disk-based file system
1112         set correct nfs_prot headers for Solaris 2.5
1113         removed stale code from lostaltmail.in
1114         lostaltmail will look for conf file in multiple locations
1115         assorted documentation corrections
1116         amq does not print "get_secure_amd_client" if run as root
1117
1118 *** Notes specific to am-utils version 6.0a13:
1119
1120 - new in_network(ARG) nomadic selector, true if ARG is the name (or number)
1121 of any of this host's network interfaces.
1122
1123 - removed variables primnetname, primnetnum, subsnetname, and subsnetnum.
1124 (Kept "wire" and its alias "network", and "netnumber".)
1125
1126 - include am-utils.dvi and am-utils.ps in distribution.
1127
1128 - hlfsd supports new option -P ARG, for reading password map off of file
1129 ARG.  Allows you to use the hlfs redirector using paths other than user's
1130 home directories.
1131
1132 - use a replacement yp_all for some systems (irix) known to have a broken
1133 one which leaks a file descriptor each time called.
1134
1135 - if remote NFS server is down or does not support portmap, downgrade
1136 machine to NFS V.2 and retry again later.
1137
1138 - bugs:
1139         don't redefine yywrap on systems using a modified flex
1140         use correct "ignore" mnttab/mount option on hpux for df(1)
1141         use nfs_args' fsname field (hpux) to avoid syncer/mount(1) problems
1142         don't add ops_ufs.o twice to Makefile's $(OBJS)
1143         don't fail if autofs listener fails to initialize
1144         hlfsd should test if run as root after usage() and getopt
1145
1146 - minor code cleanups for netbsd
1147
1148 - html docs now in http://www.am-utils.org
1149
1150 - added README file in binaries ftp directory
1151
1152 *** Notes specific to am-utils version 6.0a12:
1153
1154 - minor or updated/broken ports fixed:
1155         hppa1.1-hp-hpux10.10:   compiles, untested (probably works).
1156         hppa1.1-hp-hpux9.05:    compiles, untested (probably works).
1157         hppa1.1-hp-hpux9.07:    compiles, untested (probably works).
1158         m68k-hp-hpux9.00:       compiles, untested (probably works).
1159         rs6000-ibm-aix4.1.4.0:  compiles, untested.
1160         sparc-sun-solaris2.6:   works w/ NFS V.3.
1161         sparc-sun-sunos4.1.4:   compiles, untested (probably works).
1162
1163 - new ports:
1164         powerpc-ibm-aix4.2.1.0: compiles w/ NFS V.3, untested.
1165
1166 - wire-test also checks for combinations of NFS protocol/version from the
1167 client to a remote (or local) host.
1168
1169 - conf/mtab/mtab_file.c: use flock() to lock the file, and fcntl() if
1170 flock() is not available.  (Used to prefer fcntl() over flock().)
1171
1172 - bug fixes:
1173         tli get_nfs_version() gets into an infinite loop
1174         tli get_nfs_version() should time out faster
1175         sockets get_nfs_version() should work w/ secure portmappers
1176         ESTALE returned for NFS mounts for SunOS 4.x fixed
1177         do not exceed HOSTNAMESZ for nfs_args.hostname (get ENAMETOOLONG)
1178         properly initialize some mntent_t fields (fsck, freq, mnt_time)
1179         properly initialize some pcfs_args fields (mask, uid, gid)
1180         properly initialize some cdfs_args fields (ssector)
1181
1182 *** Notes specific to am-utils version 6.0a11:
1183
1184 - bug fixes:
1185         amd could not NFS mount v.2 servers from v.3 clients
1186         hlfsd will only use first occurrence of home dir for same uid
1187
1188 *** Notes specific to am-utils version 6.0a10:
1189
1190 - MAJOR DOCUMENTATION UPDATE! (first time in 6 years)
1191
1192 - new ports:
1193         m68k-next-nextstep3: configures, compiles, not tested.
1194
1195 - preliminary autofs support.  See README.autofs for details.
1196
1197 - new amd.conf [global] yes/no keywords:
1198         show_statfs_entries:    shows number of entries for df(1)
1199         fully_qualified_hosts:  use FQHN for NFS/RPC authentication
1200
1201 - detect down remote hosts faster
1202
1203 - log output of "amd -v" at startup
1204
1205 - removed $osver override for solaris: now it is 2.5.1, not 5.5.1
1206
1207 - buildall will use gmake first if available
1208
1209 - bugs fixed:
1210         amd core dumped when remote host was down
1211         allow up to 1024 entries back from readdir()
1212         amd.conf works even if only [global] option defined
1213         avoid using bad memcmp() implementations
1214         fixed meaning of plock [global] option (was reversed)
1215         hlfsd infinite loop unless compiled with --enable-debug
1216         NIS code works with NIS+ servers in NIS compatibility mode
1217         reset tag fields in amd.conf so they don't carry to other entries
1218
1219 *** Notes specific to am-utils version 6.0a9:
1220
1221 - new ports:
1222         sparc-sun-solaris2.4:
1223                  configures/compiles, and runs (no NFS V3)
1224         i386-unknown-openbsd2.1:
1225                 configures/compiles, runs (NFS V3)
1226
1227 - updated ports:
1228         i486-ncr-sysv4.3.03: configures/compiles, not tested
1229
1230 - Multiple amd support: new amd.conf [global] key "portmap_program" can be
1231 used to specify an alternate RPC program number for amd to un/register.
1232 Allowed numbers range from 300019 to 300029.  A matching new option for amq:
1233 -P prognum, will use an alternate program number to contact.
1234
1235 - man pages:
1236         amd.conf.5      new
1237         mk-amd-map.8    new
1238         amd.8           updated
1239         amq.8           updated
1240         (other man pages required minor updates)
1241
1242 - shared libraries support expanded.  Using GNU libtool-1.0.  You can build
1243 a shared version of libamu, and link with it accordingly, by specifying
1244 --enable-shared to configure.  Default is --enable-static --disable-shared,
1245 and you can mix and match.  See "INSTALL" file for listing of systems on
1246 which shared libraries seem to build and work fine.
1247
1248 - new option: amq -p, will return the PID of the running amd (local or
1249 remote).  Uses a new RPC message.  Useful especially in "ctl-amd stop".
1250
1251 - new configure script options --enable-ldflags, for specifying -L flags.
1252 The older --enable-libs is to be used only for -l options.
1253
1254 - two new LDAP map options for amd.conf: ldap_cache_seconds and
1255 ldap_cache_maxmem.
1256
1257 - new script, am-eject from Debian linux's version of amd-upl102.
1258
1259 - additional passwd map support using var[0-3], from Debian folks.
1260
1261 - hesiod code cleanup.  works for hesiod 1.3 as well as 3.0.
1262
1263 - removed defunct -h option from amd.
1264
1265 - started using automake-1.2.  This fixed several bugs that caused some
1266 versions of yacc/lex and non-GNU make to fail.
1267
1268 - bug fixes:
1269         amd/hlfsd mounts should be hidden from df(1)
1270         use "noconn" option for nfs mounts (multi-homed hosts)
1271         don't use connected sockets on linux before 1.3.10 (from Debian)
1272         better checks for [gn]dbm
1273         forbid excessive retries after timeouts (from Debian)
1274         readdir(): don't skip over map entries with prefix, and include it
1275         more assorted linux fixes from Debian folks
1276         lofs mount on svr4 was broken
1277         find default value of $karch from uname() not $arch
1278         hlfsd failed to mount itself on some little-endians
1279
1280
1281 *** Notes specific to am-utils version 6.0a8:
1282
1283 - new ports:
1284         i386-unknown-netbsd1.2.1: configures/compiles (with NFS V.3), works,
1285                                   but some OS stability problems exist.
1286
1287 - updated ports:
1288         hppa1.1-hp-hpux9.01:
1289                         now tested and working
1290         rs6000-ibm-aix3.2 and rs6000-ibm-aix3.2.5:
1291                         now tested and working
1292
1293 - fixed browsable directories (readdir) code.
1294
1295 - better methods to find amd/hlfsd pid to kill in ctl-{amd,hlfsd}
1296
1297 - "ignore/auto" mount types fixed for irix, sunos, and others, so "df" does not
1298 show amd mounts by default (but GNU df -a does).
1299
1300 - each time amd is built, a new "build" version is incremented.  See amd -v.
1301
1302 - man page for fsinfo added
1303
1304 - empty fillers for new file (bsd44) systems: nullfs, unionfs, umapfs.
1305
1306 - when amd is not running, or portmapper is down, make amq timeout faster (5
1307 sec) than system default, usually 4-5 minutes.
1308
1309 - bug fixes:
1310         hlfsd mount got "protocol not supported"
1311         first regular map in amd.conf didn't inherit global options
1312         make "bad" versions of lex still work with amd/conf_parse.l
1313         check for 'nodev' option, not 'nondev'
1314         typo in "ro" option, and fillers to ac{reg,dir}{min,max} and others
1315         amd.conf parsing done before switching default log/debug options
1316         allow doubly-quoted values in amd.conf
1317         hesiod-reload code cleanup
1318
1319 - assorted code cleanup
1320
1321
1322 *** Notes specific to am-utils version 6.0a7:
1323
1324 - new ports:
1325         i386-unknown-freebsd3.0:
1326                         fully functional with NFS V.3
1327         sparc-sun-solaris2.3:
1328                         fully functional (should work for 2.4)
1329         sparc-unknown-netbsd1.2E:
1330                         configures/compiles (with NFS V.3), untested
1331
1332 - updated ports:
1333         i386-pc-bsdi3.0:
1334                         NFS V.3 works
1335                         look for hesiod in libc
1336         mips-sgi-irix5.3:
1337                         fully functional with NFS V.3
1338
1339 - LDAP support!  New [global] amd.conf options ldap_base and ldap_hostports.
1340 Also includes a new script amd2ldif to convert amd maps into plain text LDAP
1341 object files.
1342
1343 - the following amd.conf variables: browsable_dirs, map_options, map_type,
1344 mount_type, and search_path --- can now be specified in [global] as well as
1345 the map entry itself.  That way you can declare them only once in [global],
1346 and override them as needed per map.
1347
1348 - option "cluster" added to [global] (HPUX clusters ala "amd -C").
1349
1350 - assorted info_hesiod map fixes and cleanup.  removed HESIOD_RELOAD code.
1351
1352 - added netgrp(name) function to amd map syntax to see if current host is in
1353 the <name> netgroup.
1354
1355 - removed unused option "amd -m".
1356
1357 - filled in "tasks" file with todo items.
1358
1359 - filled "COPYING" file with legal stuff.
1360
1361 - cleanup: all global variables are now in one big structure (struct
1362 amu_global_options) that's easy to identify and enhance.  Also migrated
1363 several flags that used be an integer each into one unsigned integer that's
1364 used as a bit-flag.
1365
1366 - big fixes:
1367         xdr_mountres3 should compile only if has NFS V3
1368         lex/yacc macros show full pathname (to tell if correct one runs)
1369         misc fixes/cleanup
1370
1371
1372 *** Notes specific to am-utils version 6.0a6:
1373
1374 - amd configuration file!
1375
1376 See scripts/amd.conf-sample for help and some explanation.  This new conf
1377 file allows for the following new features:
1378
1379         default selectors can be turned on/off globally.
1380         browsable_dirs/readdir() support can be turned on per map.
1381         search paths for file type maps.
1382         can force the map type to file, nis, ndbm, etc. rather than default
1383                 to looking at all of them.
1384         tag each map for "amd -T tag", useful for grouping maps.
1385         can override $os and others (so if you don't like "sunos5" default
1386                 naming, set os=sos5 and it will work with your old maps).
1387         and more goodies...
1388
1389 - enable-default-selectors: No longer turned on by the configure script or
1390 optionally compiled.  Code made dynamic and can be turned on or off from the
1391 amd.conf file.  This code is off by default, and must be turned on by
1392 amd.conf's [global] section.
1393
1394 - new ports:
1395         mips-sgi-irix5.3:       configure/compile, not tested
1396         i486-ncr-sysv4.3.03:    configure/compile, not tested
1397
1398 - updated ports:
1399         alpha-dec-osf4.0:       major code redone
1400         sparc-sun-sunos4.1.3:   fixed and working
1401         mips-sgi-irix6.2:       tested with gcc and "cc -32 -Wl,-woff,84"
1402         mips-sgi-irix6.4:       tested with gcc and "cc -32 -Wl,-woff,84"
1403
1404 - better NFS3 port, including more support for proto= and vers=, and
1405 automatic determination of proto/vers combination.
1406
1407 - conf/nfs_prot/nfs_prot_*.h: all of the NFS protocol header files had to be
1408 redone, because of the osf4 port.  OSF used very different names for these,
1409 and they conflicted with am-utils'.  The only solution was to more or less
1410 conform to OSF4's naming, and change all the others.
1411
1412 - ctl-amd script:
1413         improved to look for amd.conf in $prefix/etc and /etc
1414         better methods for finding the pid of amd to kill
1415
1416 - autoconf support for LDAP.  amd/info_ldap.c needs to be written.
1417
1418 - wire-test also reports the local IP address.  Some systems have multiple,
1419 buggy version of get_myaddress(), esp. SunOS and Irix.  Note that Solaris
1420 x86 has a buggy htonl().
1421
1422 - amd -H prints usage.
1423
1424 - bugs fixed:
1425         minor TLI problem in fwd_socket
1426         mount options properly comma delimited
1427         LIBS is set only to the right set of libraries to include
1428         selectors-on-default code ignored last selector ent in /defaults
1429         assorted code cleanups
1430
1431
1432 *** Notes specific to am-utils version 6.0a5:
1433
1434 - NFS Version 3 support!!!
1435
1436         Works on Solaris 2.5.1.
1437         Minimal testing done on Irix 6.
1438         Compiles cleanly on DU-4.0 but no tests performed.
1439
1440 Will fall back to V2 mounts when V3 is not available.  Will also use TCP if
1441 possible, UDP otherwise.
1442
1443 - Ports to new platforms:
1444
1445         alpha-dec-osf4.0                (not tested)
1446         i386-pc-bsdi3.0                 (tested and working)
1447         i386-unknown-freebsd2.2.1       (tested and working)
1448         sparc-unknown-linux-gnu         (tested and working)
1449
1450 - New scripts added:
1451
1452         amd2sun:        convert amd maps to Sun automount maps
1453         ctl-amd:        script to start/stop/restart amd
1454         ctl-hlfsd:      script to start/stop/restart hlfsd
1455         expn:           expand mail alias (used by hlfsd)
1456         lostaltmail:    redeliver "lost" mail redirected by hlfsd
1457         lostaltmail.conf-sample:        sample conf file for lostaltmail
1458         wait4amd:       run a command once amd is up on a host
1459         wait4amd2die:   wait for an amd process to die before returning
1460
1461 - "amd -v" now includes more info and "amq -v" lists all of it.
1462
1463 - new parser for linux specific mount options.
1464
1465 - Main bugs fixed:
1466
1467         "new toplvl readdir" bug caused amd to dump core
1468         handler for SIGCHLD didn't check for all possible children
1469         hlfsd leaking file descriptors when home file system was full
1470         cdfs/pcfs mounts should not timeout by default
1471         hesiod domain names should be compared in case-insensitive manner
1472         several printfs in amq were missing \n
1473
1474
1475 *** Notes specific to am-utils version 6.0a4:
1476
1477 - amd services both TCP and UDP amq requests.  This will help because of the
1478 limited UDP message size.
1479
1480 - "amq -M" code is disabled by default because it is insecure.  It is
1481 rarely used.  Users who wish to use it should run
1482 "configure --enable-amq-mount".
1483
1484
1485 *** Notes specific to am-utils version 6.0a3:
1486
1487 - New tested ports (configures, compiles, and runs):
1488
1489         i386-unknown-freebsd2.2
1490
1491 - New ports (configures and compiles correctly, not tested):
1492
1493         rs6000-ibm-aix3.2.5
1494         rs6000-ibm-aix4.1.5.0
1495
1496 - More am-utils programs ported to all existing platforms: hlfsd, fsinfo,
1497 mk-amd-map, and fixmount.
1498
1499 - Shared libraries: a new configure option --enable-shared will build a
1500 shared libamu.so, link applications with it, and use it.  Reduces binary
1501 sizes by 20-30%.  This is the first step towards loadable modules, as many
1502 changes had to be done to be able to compile and use PIC code.  This is code
1503 that obviously needs to be generalized to be able to build shared libraries
1504 on many other platforms.  It was only tested on Solaris 5.5.1.
1505
1506 - the file INSTALL contains the latest compatibility table of which
1507 platforms am-utils configures, compiles and runs on.
1508
1509 - Trimmed down the size of the configure script.  Some tests that are not
1510 used anywhere were removed.
1511
1512
1513 *** Notes specific to am-utils version 6.0a2:
1514
1515 - New ports (configures and compiles correctly, not tested):
1516
1517         i386-pc-bsdi2.1
1518         hppa1.1-hp-hpux9.01
1519         hppa1.1-hp-hpux10.20
1520
1521 - new configure options:
1522
1523         --enable-cppflags[=ARG]
1524                 configure/compile with ARG (-I) preprocessor flags
1525         --enable-libs[=ARG]
1526                 configure/compile with ARG (-L/-l) library flags
1527
1528 - file system, mount table entries, and mount type tests can now look in
1529 /lib/modules and /proc/filesystems for statically/dyadically loadable kernel
1530 modules (linux)
1531
1532 - prefer vfat over msdos/pc/etc file system for PCFS.
1533
1534 - moved all fixed headers to include/am_defs.  Left only #define/#undef
1535 entries in aux/acconfig.h.
1536
1537 - make more sense of systems that have full, partial, or no NFS protocol
1538 headers.
1539
1540 - minor fixes for NetBSD (untested platform).
1541
1542 - hesiod map fixed.
1543
1544 - buildall -D: new option to run even stricter developer options.
1545
1546 - lots of other bugs fixed (see ChangeLog).
1547
1548
1549 *** Notes specific to am-utils version 6.0a1:
1550
1551 I have it configure and build correctly for the following systems:
1552
1553         i386-pc-solaris2.5.1
1554         i386-unknown-freebsd2.1.0
1555         mips-sgi-irix6.2
1556         sparc-sun-solaris2.5.1
1557         sparc-sun-sunos4.1.3
1558
1559 Amq, wire-test, and "amd -v" work on all of the above.  A real running amd
1560 was only tested and confirmed working on
1561
1562         i386-pc-solaris2.5.1
1563         sparc-sun-solaris2.5.1
1564
1565 Many things are still missing: options, features, etc.  But for now, let's
1566 concentrate on getting the basic functionality working on the more popular
1567 systems.