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
8Filesystem 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
14New 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
18Changes in behavior:
19    - Empty variable assignments, now unset the variable value.
20    - Share LDAP connections between different maps to save resources
21Portability 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
24Bug 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
43New amd.conf global parameter: nfs_allow_any_interface.  By default it is
44set to 'no' which means that Amd accepts local NFS packets only from
45127.0.0.1.  If set to 'yes' then Amd will accept local NFS packets from any
46local interface; this is useful on hosts that may have multiple interfaces
47where the system is forced to send all outgoing packets (even those bound to
48the same host) via an address other than 127.0.0.1.
49
50Add support for specifying the host to match in the mount selectors netgrp
51and netgrpd.  Now one can use either netgrp(<group-name>) or
52netgrp(<group-name>,<host-name>).
53
54Support new mount options for type:=pcfs mounts: longname, nowin95,
55shortname, user=N, group=N, mask=N, and dirmask=N.
56
57Two new amd.conf [global] parameters: nfs_retry_interval_toplvl and
58nfs_retransmit_counter_toplvl.  They are similar to nfs_retry_interval and
59nfs_retransmit_counter, and allow you to set the "timeo" and "retrans" NFS
60mount parameters, respectively, but ONLY for Amd's top-level mounts (which
61are NFSv2/UDP currently).  This is useful because on some systems you may
62wish to set these parameters differently than the OS default, so as to
63better 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
92MAJOR BUG FIXES: Synchronize Amd's view of its file systems with the
93kernel's NFS client-side DNLC/dcache.  Amd changes its view when it reloads
94maps (automatically or via "amq -f") because new map entries could be added,
95old one removed, or existing ones changed.  Amd also changes its view when a
96simple entry has expired and was flushed, or was forced out via "amq -u".
97Amd was not updating the mtime of its parent directory (often the amd
98automount point): this resulted in the kernel re-using cached entries, which
99are now possibly stale.  Many users had seen this problem in the form of
100occasional ESTALE errors, or dangling/broken automounted symlinks,
101especially on systems under heavy use.  To tell the kernel to ignore (flush)
102its 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
104unfortunately it was using time(2) which only provides a one-second
105resolution clock: this was fine a decade ago, but not good enough on today's
106fast systems; using only a one-second resolution clock meant that on busy
107systems that invoke Amd many times a second, some rapidly changing entries
108do not get flushed from the kernel, and the kernel thus uses stale entries.
109The solution to all of these was to rework the whole clock timer updates to
110use gettimeofday(), using a micro-second resolution timer, and to use that
111time whenever Amd needs to update an mtime/atime/ctime of any node.
112Finally, 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
115Warning: some OSs, we discovered, are incapable of turning off their
116NFS attribute cache entirely.  This means that Amd cannot work fully
117reliability on these systems, not under heavy load.  This is documented in
118detail in the README.attrcache file included with this distribution.
119
120Include test-attrcache script to test the NFS attribute cache behavior using
121Amd.
122
123Tell syslog not to log automatically to /dev/console; it's unfriendly.  If
124user really wants to, they can set it in /etc/syslog.conf.
125
126Moved pawd's path-matching functionality into Amd, where it can be done a
127lot more efficiently (we no longer need to construct and send the whole
128mounted tree, only to match small parts of it).  This will lessen the CPU
129and network load on systems that use pawd heavily, and also minimize the
130chance that we exceed default or hard-coded UDP/TCP RPC packet sizes.
131
132Changed slightly how Amd behaves when you try to change log_options after
133Amd started (options can be turned on/off via "amq -x ARG").  It used to be
134that Amd won't let you turn off options which were on when Amd started.
135That limited users' ability to reduce Amd's logging levels to a minimum.
136Now, Amd will allow you to turn on/off any option, other than the two
137options "fatal" and "error."  Both are on by default and considered
138mandatory.  These two don't produce a lot of log messages, so your logs will
139remain small, but they are important to keep on, so Amd can report serious
140problems (including errors relating to incorrectly setting other log
141options).
142
143Amd now understands a new log_option called "defaults" which is synonymous
144with "fatal,error,user,warning,info" (and is also what logging happens by
145default).
146
147Amd now understands a new debug_option called "defaults" which is synonymous
148with "all,nohrtime,nomtab,noxdrtrace".
149
150Changed the misleading inverted logic of certain debug_options:
151
1521. "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
1572. 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
1623. 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
1684. 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
1715. 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
205New 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
207attempt to use them if it gets any of three serious error conditions when
208trying to unmount an existing mount point or mount on top of one: EIO,
209ESTALE, or EBUSY.  This could be useful to recover from serious conditions
210such as hardware failure of mounted disks, or NFS servers which are down
211permanently, were migrated, or changed their IP address.  Only
212"type:=toplvl" mounts hung with EBUSY are forcibly unmounted using this
213option: this is useful to ensure that a new Amd can mount itself even if a
214previous Amd died and left its mount points hung, or to force Amd to
215shutdown cleanly, even if some processes (i.e., user shells) have their CWD
216on Amd's own mount point.  This functionality is available for Linux, BSD44
217systems, Solaris, OSF/1, and partially for AIX.
218
219New 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
221startup.  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
223the 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
249Also, if you want to know what's new in 6.1 compared to 6.0.x, it's
250EVERYTHING 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
254Remove alloca from am-utils, and rewrite code that used it.
255
256Assorted 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
285For NetBSD systems, $os used to say "netbsdelf1" or "netbsdelf2."  Now it
286just 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
303Minor fix to configure.in.  Reran bootstrap to get a working configure
304script that indeed checks for certain Linux nfs/autofs headers.
305
306*** Notes specific to am-utils version 6.1-rc2
307
308New amd.conf global parameter: normalize_slashes (default to "yes").  If set
309to "no," then Amd will not condense repeated slashes or remove trailing ones
310from strings representing pathnames.  This is sometimes useful with SMB
311mounts, which often require multiple slash characters in pathnames.
312
313Using a custom version of strlcpy instead of strncpy (but only where it
314makes sense), to minimize string overflow changes.  Audited all use of
315strncpy/strlcpy to ensure safety.
316
317On Apple machines, use "powerpc" for $arch, instead of "Power Macintosh".
318Also, use sw_vers to find out more appropriate OS name (macosx) and OS
319version (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
952in 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
961options specified at all, then use /etc/amd.conf by default.
962
963- some variables' values are now compared case-insensitive as per specs,
964such as host names, domain names, and more.
965
966- NIS service uses a new isup() function to detect if the service is up
967before using it.  Used to ensure amd doesn't clear the existing maps before
968reloading 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
975RES_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
984such that it matches the type:=ARG as well.  Free names afs/dfs for Andrew
985F/S and Distributed F/S.
986
987- checkpoint config.guess several times during the long configure, so that
988if it is aborted midway, the bulk of the features discovered will be re-read
989from 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,
1021and 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
1024cachedir.  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
1029locally attached networks (by either name or number), not just the first two
1030interfaces.
1031
1032- new program pawd (and man page for it) --- Print Automounter Working
1033Directory, to print the proper pathname of the cwd or any other pathname,
1034adjusted for automounter paths, while avoiding mount points.
1035
1036- two new switches to amq: -U will force using UDP only; -T will force using
1037only TCP to communicate with amd.  If neither (or both) are specified, amq
1038will try TCP first, and if that failed, will try UDP.
1039
1040- support syslog facilities, using "amd -l syslog:facility".  Old behavior
1041when 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 '/'
1045characters.
1046
1047- amd -D trace now also includes as much of struct nfs_args as can be
1048displayed.  Useful in figuring out what the kernel really gets during a
1049mount(2), as opposed to what the /etc/mnttab file says.  -D trace also
1050traces the xdr_* functions.
1051
1052- support for versions of shared libamu version.  upped version from 0.0.0
1053to 1.0.0.  each am-utils release that will change the library will also
1054update its version.
1055
1056- amd/ops_TEMPLATE.c: a new template file for those brave enough to try and
1057implement a new amd file system.  Includes comments and other info useful
1058for developers.
1059
1060- if localconfig.h exists in the current directory during the run of
1061configure, it is included in all am-utils sources.  This allows courageous
1062developers to make certain modifications during compilations, and especially
1063turn 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
1097ARG.  Corrected documentation for amd -o ARG --- it overrides the operating
1098system *version* and not the name as the docs incorrectly stated.
1099
1100- logging now behave more like syslog: will not print repeated strings, but
1101rather a count such as "last message repeated N times".  (N will not exceed
1102100.)
1103
1104- restructured the code which deals with the numerous possible fields and
1105flags that are set in struct nfs_args.  That code was moved to libamu as
1106the 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)
1121of 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
1129ARG.  Allows you to use the hlfs redirector using paths other than user's
1130home directories.
1131
1132- use a replacement yp_all for some systems (irix) known to have a broken
1133one which leaks a file descriptor each time called.
1134
1135- if remote NFS server is down or does not support portmap, downgrade
1136machine 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
1167client to a remote (or local) host.
1168
1169- conf/mtab/mtab_file.c: use flock() to lock the file, and fcntl() if
1170flock() 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
1231used to specify an alternate RPC program number for amd to un/register.
1232Allowed 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
1243a shared version of libamu, and link with it accordingly, by specifying
1244--enable-shared to configure.  Default is --enable-static --disable-shared,
1245and you can mix and match.  See "INSTALL" file for listing of systems on
1246which shared libraries seem to build and work fine.
1247
1248- new option: amq -p, will return the PID of the running amd (local or
1249remote).  Uses a new RPC message.  Useful especially in "ctl-amd stop".
1250
1251- new configure script options --enable-ldflags, for specifying -L flags.
1252The 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
1255ldap_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
1266versions 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
1298show 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
1307sec) 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.
1340Also includes a new script amd2ldif to convert amd maps into plain text LDAP
1341object files.
1342
1343- the following amd.conf variables: browsable_dirs, map_options, map_type,
1344mount_type, and search_path --- can now be specified in [global] as well as
1345the map entry itself.  That way you can declare them only once in [global],
1346and 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
1353the <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
1362amu_global_options) that's easy to identify and enhance.  Also migrated
1363several flags that used be an integer each into one unsigned integer that's
1364used 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
1376See scripts/amd.conf-sample for help and some explanation.  This new conf
1377file 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
1390optionally compiled.  Code made dynamic and can be turned on or off from the
1391amd.conf file.  This code is off by default, and must be turned on by
1392amd.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
1405automatic determination of proto/vers combination.
1406
1407- conf/nfs_prot/nfs_prot_*.h: all of the NFS protocol header files had to be
1408redone, because of the osf4 port.  OSF used very different names for these,
1409and they conflicted with am-utils'.  The only solution was to more or less
1410conform 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,
1419buggy version of get_myaddress(), esp. SunOS and Irix.  Note that Solaris
1420x86 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
1440Will fall back to V2 mounts when V3 is not available.  Will also use TCP if
1441possible, 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
1478limited UDP message size.
1479
1480- "amq -M" code is disabled by default because it is insecure.  It is
1481rarely 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,
1497mk-amd-map, and fixmount.
1498
1499- Shared libraries: a new configure option --enable-shared will build a
1500shared libamu.so, link applications with it, and use it.  Reduces binary
1501sizes by 20-30%.  This is the first step towards loadable modules, as many
1502changes had to be done to be able to compile and use PIC code.  This is code
1503that obviously needs to be generalized to be able to build shared libraries
1504on many other platforms.  It was only tested on Solaris 5.5.1.
1505
1506- the file INSTALL contains the latest compatibility table of which
1507platforms am-utils configures, compiles and runs on.
1508
1509- Trimmed down the size of the configure script.  Some tests that are not
1510used 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
1530modules (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
1535entries in aux/acconfig.h.
1536
1537- make more sense of systems that have full, partial, or no NFS protocol
1538headers.
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
1551I 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
1559Amq, wire-test, and "amd -v" work on all of the above.  A real running amd
1560was only tested and confirmed working on
1561
1562	i386-pc-solaris2.5.1
1563	sparc-sun-solaris2.5.1
1564
1565Many things are still missing: options, features, etc.  But for now, let's
1566concentrate on getting the basic functionality working on the more popular
1567systems.
1568