New version from Erez
This commit is contained in:
parent
b7321b3d4f
commit
5d8bee0f9f
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: AUTHORS,v 1.1.1.4 1997/10/26 00:02:12 christos Exp $
|
||||
# -*- text -*-
|
||||
PRIMARY AUTHORS AND MAJOR CONTRIBUTORS TO AM_UTILS:
|
||||
|
||||
|
@ -54,6 +55,9 @@ July 4, 1997: patches to get NFS V.3 working under irix5.
|
|||
|
||||
September 9, 1997: initialize all fields of mntent_t structures to 0.
|
||||
|
||||
October 2, 1997: don't log an RPC timeout as an error but only as an info
|
||||
message.
|
||||
|
||||
* Danny Braniss <danny@cs.huji.ac.il>
|
||||
|
||||
July, 6 1997: contributed patches to hesiod on bsdi3.
|
||||
|
@ -119,3 +123,7 @@ pcfs_args (msdos mount).
|
|||
|
||||
September 25, 1997: fix to initialize uid/gid fields of pcfs_args_t on
|
||||
netbsd.
|
||||
|
||||
October 10, 1997: compile time cleanups of printf()s in hlfsd code. If nfs
|
||||
server is down or does not support a portmapper call, then mark it down as
|
||||
version 2, and try again later.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: COPYING,v 1.1.1.3 1997/10/26 00:02:11 christos Exp $
|
||||
Copyright (c) 1997 Erez Zadok
|
||||
Copyright (c) 1989 Jan-Simon Pendry
|
||||
Copyright (c) 1989 Imperial College of Science, Technology & Medicine
|
||||
|
|
|
@ -1,545 +1,243 @@
|
|||
This is Info file am-utils.info, produced by Makeinfo-1.63 from the
|
||||
input file am-utils.texi.
|
||||
$NetBSD: am-utils.info,v 1.1.1.3 1997/10/26 00:03:39 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
* Am-utils: (am-utils). The Amd automounter suite of
|
||||
utilities direntry
|
||||
START-INFO-DIR-ENTRY
|
||||
* Am-utils: (am-utils). The Amd automounter suite of utilities
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
|
||||
File: am-utils.info, Node: Top, Next: License, Up: (DIR)
|
||||
|
||||
Am-utils - The 4.4 BSD Automounter Tool Suite
|
||||
*********************************************
|
||||
|
||||
Am-utils is the 4.4 BSD Automounter Tool Suite, which includes the
|
||||
Amd automounter, the Amq query and control program, the Hlfsd daemon,
|
||||
and other tools. This Info file describes how to use and understand the
|
||||
tools within Am-utils.
|
||||
|
||||
* Menu:
|
||||
|
||||
* License:: Explains the terms and conditions for using
|
||||
and distributing Am-utils.
|
||||
* Distrib:: How to get the latest Am-utils distribution.
|
||||
* Intro:: An introduction to Automounting concepts.
|
||||
* History:: History of am-utils' development.
|
||||
* Overview:: An overview of Amd.
|
||||
* Supported Platforms:: Machines and Systems supported by Amd.
|
||||
* Mount Maps:: Details of mount maps
|
||||
* Amd Command Line Options:: All the Amd command line options explained.
|
||||
* Filesystem Types:: The different mount types supported by Amd.
|
||||
* Amd Configuration File:: The amd.conf file syntax and meaning.
|
||||
* Run-time Administration:: How to start, stop and control Amd.
|
||||
* FSinfo:: The FSinfo filesystem management tool.
|
||||
* Hlfsd:: The Home-Link Filesystem server.
|
||||
* Assorted Tools:: Other tools which come with am-utils.
|
||||
* Examples:: Some examples showing how Amd might be used.
|
||||
* Internals:: Implementation details.
|
||||
* Acknowledgments & Trademarks:: Legal Notes
|
||||
|
||||
Indexes
|
||||
* Index:: An item for each concept.
|
||||
|
||||
Indirect:
|
||||
am-utils.info-1: 216
|
||||
am-utils.info-2: 49850
|
||||
am-utils.info-3: 99207
|
||||
am-utils.info-4: 149122
|
||||
am-utils.info-5: 198972
|
||||
am-utils.info-6: 231195
|
||||
|
||||
File: am-utils.info, Node: License, Next: Distrib, Prev: Top, Up: Top
|
||||
|
||||
License
|
||||
*******
|
||||
|
||||
Am-utils is not in the public domain; it is copyrighted and there are
|
||||
restrictions on its distribution.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
3. All advertising materials mentioning features or use of this
|
||||
software must display the following acknowledgment:
|
||||
|
||||
"This product includes software developed by the University of
|
||||
California, Berkeley and its contributors, as well as the Trustees
|
||||
of Columbia University."
|
||||
|
||||
4. Neither the name of the University nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Tag Table:
|
||||
(Indirect)
|
||||
Node: Top216
|
||||
Node: License1838
|
||||
Node: Distrib3783
|
||||
Node: Intro6265
|
||||
Node: History7402
|
||||
Node: Overview9456
|
||||
Node: Fundamentals10428
|
||||
Node: Filesystems and Volumes11204
|
||||
Node: Volume Naming12026
|
||||
Node: Volume Binding13286
|
||||
Node: Operational Principles14494
|
||||
Node: Mounting a Volume15835
|
||||
Node: Automatic Unmounting17573
|
||||
Node: Keep-alives18559
|
||||
Node: Non-blocking Operation20870
|
||||
Node: Supported Platforms21992
|
||||
Node: Mount Maps25779
|
||||
Node: Map Types26612
|
||||
Node: File maps28266
|
||||
Node: ndbm maps29794
|
||||
Node: NIS maps30471
|
||||
Node: NIS+ maps31940
|
||||
Node: Hesiod maps32201
|
||||
Node: Password maps33084
|
||||
Node: Union maps34015
|
||||
Node: LDAP maps34614
|
||||
Node: Key Lookup35988
|
||||
Node: Location Format37298
|
||||
Node: Map Defaults39695
|
||||
Node: Variable Expansion40314
|
||||
Node: Selectors43258
|
||||
Node: Map Options49133
|
||||
Node: delay Option49850
|
||||
Node: fs Option50381
|
||||
Node: opts Option52239
|
||||
Node: remopts Option56989
|
||||
Node: sublink Option57862
|
||||
Node: type Option58211
|
||||
Node: Amd Command Line Options58420
|
||||
Node: -a Option61118
|
||||
Node: -c Option61466
|
||||
Node: -d Option62105
|
||||
Node: -k Option62643
|
||||
Node: -l Option63182
|
||||
Node: -n Option64660
|
||||
Node: -o Option65071
|
||||
Node: -p Option65529
|
||||
Node: -r Option65955
|
||||
Node: -t Option66150
|
||||
Node: -v Option66712
|
||||
Node: -w Option68620
|
||||
Node: -x Option68918
|
||||
Node: -y Option70735
|
||||
Node: -C-Option71067
|
||||
Node: -D-Option71711
|
||||
Node: -F Option72847
|
||||
Node: -H Option73378
|
||||
Node: -S Option73534
|
||||
Node: -T-Option74133
|
||||
Node: Filesystem Types74465
|
||||
Node: Network Filesystem76774
|
||||
Node: Network Host Filesystem78466
|
||||
Node: Network Filesystem Group80593
|
||||
Node: Unix Filesystem82198
|
||||
Node: Caching Filesystem82712
|
||||
Node: CD-ROM Filesystem83061
|
||||
Node: Loopback Filesystem83557
|
||||
Node: Memory/RAM Filesystem84472
|
||||
Node: Null Filesystem84895
|
||||
Node: Floppy Filesystem85231
|
||||
Node: Translucent Filesystem85726
|
||||
Node: Shared Memory+Swap Filesystem86048
|
||||
Node: User ID Mapping Filesystem86583
|
||||
Node: Program Filesystem86942
|
||||
Node: Symbolic Link Filesystem88939
|
||||
Node: Symbolic Link Filesystem II90222
|
||||
Node: Automount Filesystem90825
|
||||
Node: Direct Automount Filesystem94491
|
||||
Node: Union Filesystem95539
|
||||
Node: Error Filesystem97040
|
||||
Node: Top-level Filesystem97550
|
||||
Node: Root Filesystem98129
|
||||
Node: Autofs Filesystem98612
|
||||
Node: Inheritance Filesystem99207
|
||||
Node: Amd Configuration File100213
|
||||
Node: File Format100725
|
||||
Node: The Global Section102173
|
||||
Node: Regular Map Sections102776
|
||||
Node: Common Parameters103176
|
||||
Node: browsable_dirs Parameter103809
|
||||
Node: map_options Parameter104542
|
||||
Node: map_type Parameter104864
|
||||
Node: mount_type Parameter105672
|
||||
Node: search_path Parameter106089
|
||||
Node: Global Parameters106484
|
||||
Node: arch Parameter107511
|
||||
Node: auto_dir Parameter107774
|
||||
Node: cache_duration Parameter108105
|
||||
Node: cluster Parameter108433
|
||||
Node: debug_options Parameter108726
|
||||
Node: dismount_interval Parameter109731
|
||||
Node: fully_qualified_hosts Parameter110119
|
||||
Node: karch Parameter110639
|
||||
Node: ldap_base Parameter111279
|
||||
Node: ldap_cache_maxmem Parameter111537
|
||||
Node: ldap_cache_seconds Parameter111844
|
||||
Node: ldap_hostports Parameter112148
|
||||
Node: local_domain Parameter112471
|
||||
Node: log_file Parameter112907
|
||||
Node: log_options Parameter113393
|
||||
Node: nfs_retransmit_counter Parameter114285
|
||||
Node: nfs_retry_interval Parameter114676
|
||||
Node: nis_domain Parameter115068
|
||||
Node: normalize_hostnames Parameter115514
|
||||
Node: os Parameter115948
|
||||
Node: osver Parameter116481
|
||||
Node: plock Parameter116752
|
||||
Node: portmap_program Parameter117408
|
||||
Node: print_pid Parameter118189
|
||||
Node: print_version Parameter118492
|
||||
Node: restart_mounts Parameter118911
|
||||
Node: selectors_on_default Parameter119343
|
||||
Node: show_statfs_entries Parameter120062
|
||||
Node: Regular Map Parameters120477
|
||||
Node: map_name Parameter120784
|
||||
Node: tag Parameter121038
|
||||
Node: amd.conf Examples121504
|
||||
Node: Run-time Administration122950
|
||||
Node: Starting Amd123193
|
||||
Node: Stopping Amd124039
|
||||
Node: Restarting Amd124840
|
||||
Node: Controlling Amd126069
|
||||
Node: Amq default127346
|
||||
Node: Amq -f option129307
|
||||
Node: Amq -l option129746
|
||||
Node: Amq -h option130172
|
||||
Node: Amq -m option130529
|
||||
Node: Amq -M-option131680
|
||||
Node: Amq -p option133092
|
||||
Node: Amq -P-option133470
|
||||
Node: Amq -s option134135
|
||||
Node: Amq -u option135211
|
||||
Node: Amq -v option135637
|
||||
Node: Other Amq options135868
|
||||
Node: FSinfo136544
|
||||
Node: FSinfo Overview137280
|
||||
Node: Using FSinfo138461
|
||||
Node: FSinfo Grammar140166
|
||||
Node: FSinfo host definitions141532
|
||||
Node: FSinfo host attributes142644
|
||||
Node: FSinfo host netif143788
|
||||
Node: FSinfo host config144617
|
||||
Node: FSinfo host arch145046
|
||||
Node: FSinfo host os145408
|
||||
Node: FSinfo host cluster145790
|
||||
Node: FSinfo filesystems146145
|
||||
Node: FSinfo filesystems fstype149122
|
||||
Node: FSinfo filesystems opts149903
|
||||
Node: FSinfo filesystems passno150202
|
||||
Node: FSinfo filesystems freq150532
|
||||
Node: FSinfo filesystems mount150837
|
||||
Node: FSinfo filesystems dumpset152957
|
||||
Node: FSinfo filesystems log153244
|
||||
Node: FSinfo static mounts153505
|
||||
Node: FSinfo automount definitions155184
|
||||
Node: FSinfo Command Line Options158420
|
||||
Node: -a FSinfo Option160056
|
||||
Node: -b FSinfo Option160435
|
||||
Node: -d FSinfo Option161127
|
||||
Node: -e FSinfo Option161732
|
||||
Node: -f FSinfo Option162508
|
||||
Node: -h FSinfo Option163108
|
||||
Node: -m FSinfo Option163486
|
||||
Node: -q FSinfo Option164056
|
||||
Node: -v FSinfo Option164322
|
||||
Node: -D-FSinfo Option164729
|
||||
Node: -I FSinfo Option165019
|
||||
Node: -U FSinfo Option165316
|
||||
Node: FSinfo errors165530
|
||||
Node: Hlfsd172124
|
||||
Node: Introduction to Hlfsd173591
|
||||
Node: Background to Mail Delivery178503
|
||||
Node: Single-Host Mail Spool Directory178998
|
||||
Node: Centralized Mail Spool Directory180079
|
||||
Node: Distributed Mail Spool Service183346
|
||||
Node: Why Deliver Into the Home Directory?186618
|
||||
Node: Using Hlfsd189341
|
||||
Node: Controlling Hlfsd189523
|
||||
Node: Hlfsd Options191060
|
||||
Node: Hlfsd Files195925
|
||||
Node: Assorted Tools196582
|
||||
Node: am-eject197046
|
||||
Node: amd.conf-sample197290
|
||||
Node: amd2ldif197495
|
||||
Node: amd2sun197745
|
||||
Node: ctl-amd197975
|
||||
Node: ctl-hlfsd198453
|
||||
Node: expn198972
|
||||
Node: fix-amd-map199547
|
||||
Node: fixmount200044
|
||||
Node: fixrmtab200454
|
||||
Node: lostaltmail200737
|
||||
Node: lostaltmail.conf-sample201490
|
||||
Node: mk-amd-map201899
|
||||
Node: wait4amd202189
|
||||
Node: wait4amd2die203287
|
||||
Node: wire-test203838
|
||||
Node: Examples204918
|
||||
Node: User Filesystems205219
|
||||
Node: Home Directories208379
|
||||
Node: Architecture Sharing211376
|
||||
Node: Wildcard Names212966
|
||||
Node: rwho servers214265
|
||||
Node: /vol215003
|
||||
Node: /default with selectors217585
|
||||
Node: /tftpboot in a chroot-ed environment218443
|
||||
Node: Internals222713
|
||||
Node: Log Messages223049
|
||||
Node: Fatal errors223800
|
||||
Node: Info messages227297
|
||||
Node: Acknowledgments & Trademarks229917
|
||||
Node: Index231195
|
||||
|
||||
File: am-utils.info, Node: Distrib, Next: Intro, Prev: License, Up: Top
|
||||
|
||||
Source Distribution
|
||||
*******************
|
||||
|
||||
You can get the latest distribution version of Am-utils from
|
||||
ftp://ftp.cs.columbia.edu/pub/am-utils/am-utils.tar.gz
|
||||
|
||||
Alpha and beta distributions are available in
|
||||
ftp://shekel.mcl.cs.columbia.edu/private/am-utils/.
|
||||
|
||||
Revision 5.2 was part of the 4.3 BSD Reno distribution.
|
||||
|
||||
Revision 5.3bsdnet, a late alpha version of 5.3, was part of the BSD
|
||||
network version 2 distribution
|
||||
|
||||
Revision 6.0 was made independently by Erez Zadok at Columbia
|
||||
University, as part of his PhD thesis work. *Note History:: for more
|
||||
details.
|
||||
|
||||
Bug Reports
|
||||
===========
|
||||
|
||||
Send all bug reports to `amd-dev@majordomo.cs.columbia.edu' quoting
|
||||
the details of the release and your configuration. These can be
|
||||
obtained by running the command `amd -v'. It would greatly help if you
|
||||
could provide a reproducible procedure for detecting the bug you are
|
||||
reporting.
|
||||
|
||||
Mailing List
|
||||
============
|
||||
|
||||
There are two mailing lists for people interested in keeping
|
||||
up-to-date with developments.
|
||||
|
||||
1. The older list, `amd-workers' is for general "how to" questions and
|
||||
announcements. To subscribe, send a note to
|
||||
`amd-workers-request@majordomo.glue.umd.edu'.(1) To post a
|
||||
message to this list, send mail to
|
||||
`amd-workers@majordomo.glue.umd.edu'.
|
||||
|
||||
2. The developers only list, `amd-dev' is for
|
||||
|
||||
- announcements of alpha and beta releases of am-utils
|
||||
|
||||
- reporting of bugs and patches
|
||||
|
||||
- discussions of new features for am-utils
|
||||
|
||||
- implementation and porting issues
|
||||
|
||||
To subscribe, send a note to `amd-dev@majordomo.cs.columbia.edu'.
|
||||
To post a message to this list, send mail to
|
||||
`amd-dev@majordomo.cs.columbia.edu'. To avoid as much spam as
|
||||
possible, only subscribers to this list may post to it.
|
||||
|
||||
Subscribers of `amd-dev' are most suitable if they have the time
|
||||
and resources to test new and buggy versions of amd, on as many
|
||||
different platforms as possible. They should also be prepared to
|
||||
learn and use the GNU Autoconf, Automake, and Libtool packages,
|
||||
and of course, be very familiar with the complex code in the
|
||||
am-utils package. In other words, subscribers on this list should
|
||||
be able to contribute meaningfully to the development of amd.
|
||||
|
||||
|
||||
---------- Footnotes ----------
|
||||
|
||||
(1) Note that the older address,
|
||||
`amd-workers-request@acl.lanl.gov', is defunct.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Intro, Next: History, Prev: Distrib, Up: Top
|
||||
|
||||
Introduction
|
||||
************
|
||||
|
||||
An "automounter" maintains a cache of mounted filesystems.
|
||||
Filesystems are mounted on demand when they are first referenced, and
|
||||
unmounted after a period of inactivity.
|
||||
|
||||
Amd may be used as a replacement for Sun's automounter. The choice
|
||||
of which filesystem to mount can be controlled dynamically with
|
||||
"selectors". Selectors allow decisions of the form "hostname is THIS,"
|
||||
or "architecture is not THAT." Selectors may be combined arbitrarily.
|
||||
Amd also supports a variety of filesystem types, including NFS, UFS and
|
||||
the novel "program" filesystem. The combination of selectors and
|
||||
multiple filesystem types allows identical configuration files to be
|
||||
used on all machines thus reducing the administrative overhead.
|
||||
|
||||
Amd ensures that it will not hang if a remote server goes down.
|
||||
Moreover, Amd can determine when a remote server has become
|
||||
inaccessible and then mount replacement filesystems as and when they
|
||||
become available.
|
||||
|
||||
Amd contains no proprietary source code and has been ported to
|
||||
numerous flavors of Unix.
|
||||
|
||||
|
||||
File: am-utils.info, Node: History, Next: Overview, Prev: Intro, Up: Top
|
||||
|
||||
History
|
||||
*******
|
||||
|
||||
The Amd package has been without an official maintainer since 1992.
|
||||
Several people have stepped in to maintain it unofficially. Most
|
||||
notable were the `upl' (Unofficial Patch Level) releases of Amd,
|
||||
created by me (Erez Zadok), and available from
|
||||
ftp://ftp.cs.columbia.edu/pub/amd/. The last such unofficial release
|
||||
was `upl102'.
|
||||
|
||||
Through the process of patching and aging, it was becoming more and
|
||||
more apparent that Amd was in much need of revitalizing. Maintaining
|
||||
Amd had become a difficult task. I took it upon myself to cleanup the
|
||||
code, so that it would be easier to port to new platforms, add new
|
||||
features, keep up with the many new feature requests, and deal with the
|
||||
never ending stream of bug reports.
|
||||
|
||||
I have been working on such a release of Amd on and off since
|
||||
January of 1996. The new suite of tools is currently named "am-utils"
|
||||
(AutoMounter Utilities), in line with GNU naming conventions, befitting
|
||||
the contents of the package. In October of 1996 I had received enough
|
||||
offers to help me with this task that I decided to make a mailing list
|
||||
for these group of people. Around the same time, Amd had become a
|
||||
necessary part of my PhD thesis work, resulting in more work performed
|
||||
on am-utils.
|
||||
|
||||
Am-utils version 6.0 was numbered with a major new release number to
|
||||
distinguish it from the last official release of Amd (5.x). Many new
|
||||
features have been added such as a GNU `configure' system, NFS Version
|
||||
3, Autofs support, a run-time configuration file (`amd.conf'), many new
|
||||
ports, more scripts and programs, as well as numerous bug fixes.
|
||||
Another reason for the new major release number was to alert users of
|
||||
am-utils that user-visible interfaces may have changed. In order to
|
||||
make Amd work well for the next 10 years, and be easier to maintain, it
|
||||
was necessary to remove old or unused features, change various syntax
|
||||
files, etc. However, great care was taken to ensure the maximum
|
||||
possible backwards compatibility.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Overview, Next: Supported Platforms, Prev: History, Up: Top
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
Amd maintains a cache of mounted filesystems. Filesystems are
|
||||
"demand-mounted" when they are first referenced, and unmounted after a
|
||||
period of inactivity. Amd may be used as a replacement for Sun's
|
||||
automount(8) program. It contains no proprietary source code and has
|
||||
been ported to numerous flavors of Unix. *Note Supported Platforms::.
|
||||
|
||||
Amd was designed as the basis for experimenting with filesystem
|
||||
layout and management. Although Amd has many direct applications it is
|
||||
loaded with additional features which have little practical use. At
|
||||
some point the infrequently used components may be removed to streamline
|
||||
the production system.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Fundamentals::
|
||||
* Filesystems and Volumes::
|
||||
* Volume Naming::
|
||||
* Volume Binding::
|
||||
* Operational Principles::
|
||||
* Mounting a Volume::
|
||||
* Automatic Unmounting::
|
||||
* Keep-alives::
|
||||
* Non-blocking Operation::
|
||||
|
||||
|
||||
File: am-utils.info, Node: Fundamentals, Next: Filesystems and Volumes, Prev: Overview, Up: Overview
|
||||
|
||||
Fundamentals
|
||||
============
|
||||
|
||||
The fundamental concept behind Amd is the ability to separate the
|
||||
name used to refer to a file from the name used to refer to its physical
|
||||
storage location. This allows the same files to be accessed with the
|
||||
same name regardless of where in the network the name is used. This is
|
||||
very different from placing `/n/hostname' in front of the pathname
|
||||
since that includes location dependent information which may change if
|
||||
files are moved to another machine.
|
||||
|
||||
By placing the required mappings in a centrally administered
|
||||
database, filesystems can be re-organized without requiring changes to
|
||||
configuration files, shell scripts and so on.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Filesystems and Volumes, Next: Volume Naming, Prev: Fundamentals, Up: Overview
|
||||
|
||||
Filesystems and Volumes
|
||||
=======================
|
||||
|
||||
Amd views the world as a set of fileservers, each containing one or
|
||||
more filesystems where each filesystem contains one or more "volumes".
|
||||
Here the term "volume" is used to refer to a coherent set of files such
|
||||
as a user's home directory or a TeX distribution.
|
||||
|
||||
In order to access the contents of a volume, Amd must be told in
|
||||
which filesystem the volume resides and which host owns the filesystem.
|
||||
By default the host is assumed to be local and the volume is assumed to
|
||||
be the entire filesystem. If a filesystem contains more than one
|
||||
volume, then a "sublink" is used to refer to the sub-directory within
|
||||
the filesystem where the volume can be found.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Volume Naming, Next: Volume Binding, Prev: Filesystems and Volumes, Up: Overview
|
||||
|
||||
Volume Naming
|
||||
=============
|
||||
|
||||
Volume names are defined to be unique across the entire network. A
|
||||
volume name is the pathname to the volume's root as known by the users
|
||||
of that volume. Since this name uniquely identifies the volume
|
||||
contents, all volumes can be named and accessed from each host, subject
|
||||
to administrative controls.
|
||||
|
||||
Volumes may be replicated or duplicated. Replicated volumes contain
|
||||
identical copies of the same data and reside at two or more locations in
|
||||
the network. Each of the replicated volumes can be used
|
||||
interchangeably. Duplicated volumes each have the same name but contain
|
||||
different, though functionally identical, data. For example,
|
||||
`/vol/tex' might be the name of a TeX distribution which varied for
|
||||
each machine architecture.
|
||||
|
||||
Amd provides facilities to take advantage of both replicated and
|
||||
duplicated volumes. Configuration options allow a single set of
|
||||
configuration data to be shared across an entire network by taking
|
||||
advantage of replicated and duplicated volumes.
|
||||
|
||||
Amd can take advantage of replacement volumes by mounting them as
|
||||
required should an active fileserver become unavailable.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Volume Binding, Next: Operational Principles, Prev: Volume Naming, Up: Overview
|
||||
|
||||
Volume Binding
|
||||
==============
|
||||
|
||||
Unix implements a namespace of hierarchically mounted filesystems.
|
||||
Two forms of binding between names and files are provided. A "hard
|
||||
link" completes the binding when the name is added to the filesystem. A
|
||||
"soft link" delays the binding until the name is accessed. An
|
||||
"automounter" adds a further form in which the binding of name to
|
||||
filesystem is delayed until the name is accessed.
|
||||
|
||||
The target volume, in its general form, is a tuple (host, filesystem,
|
||||
sublink) which can be used to name the physical location of any volume
|
||||
in the network.
|
||||
|
||||
When a target is referenced, Amd ignores the sublink element and
|
||||
determines whether the required filesystem is already mounted. This is
|
||||
done by computing the local mount point for the filesystem and checking
|
||||
for an existing filesystem mounted at the same place. If such a
|
||||
filesystem already exists then it is assumed to be functionally
|
||||
identical to the target filesystem. By default there is a one-to-one
|
||||
mapping between the pair (host, filesystem) and the local mount point so
|
||||
this assumption is valid.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Operational Principles, Next: Mounting a Volume, Prev: Volume Binding, Up: Overview
|
||||
|
||||
Operational Principles
|
||||
======================
|
||||
|
||||
Amd operates by introducing new mount points into the namespace.
|
||||
These are called "automount" points. The kernel sees these automount
|
||||
points as NFS filesystems being served by Amd. Having attached itself
|
||||
to the namespace, Amd is now able to control the view the rest of the
|
||||
system has of those mount points. RPC calls are received from the
|
||||
kernel one at a time.
|
||||
|
||||
When a "lookup" call is received Amd checks whether the name is
|
||||
already known. If it is not, the required volume is mounted. A
|
||||
symbolic link pointing to the volume root is then returned. Once the
|
||||
symbolic link is returned, the kernel will send all other requests
|
||||
direct to the mounted filesystem.
|
||||
|
||||
If a volume is not yet mounted, Amd consults a configuration
|
||||
"mount-map" corresponding to the automount point. Amd then makes a
|
||||
runtime decision on what and where to mount a filesystem based on the
|
||||
information obtained from the map.
|
||||
|
||||
Amd does not implement all the NFS requests; only those relevant to
|
||||
name binding such as "lookup", "readlink" and "readdir". Some other
|
||||
calls are also implemented but most simply return an error code; for
|
||||
example "mkdir" always returns "read-only filesystem".
|
||||
|
||||
|
||||
File: am-utils.info, Node: Mounting a Volume, Next: Automatic Unmounting, Prev: Operational Principles, Up: Overview
|
||||
|
||||
Mounting a Volume
|
||||
=================
|
||||
|
||||
Each automount point has a corresponding mount map. The mount map
|
||||
contains a list of key-value pairs. The key is the name of the volume
|
||||
to be mounted. The value is a list of locations describing where the
|
||||
filesystem is stored in the network. In the source for the map the
|
||||
value would look like
|
||||
|
||||
location1 location2 ... locationN
|
||||
|
||||
Amd examines each location in turn. Each location may contain
|
||||
"selectors" which control whether Amd can use that location. For
|
||||
example, the location may be restricted to use by certain hosts. Those
|
||||
locations which cannot be used are ignored.
|
||||
|
||||
Amd attempts to mount the filesystem described by each remaining
|
||||
location until a mount succeeds or Amd can no longer proceed. The
|
||||
latter can occur in three ways:
|
||||
|
||||
* If none of the locations could be used, or if all of the locations
|
||||
caused an error, then the last error is returned.
|
||||
|
||||
* If a location could be used but was being mounted in the
|
||||
background then Amd marks that mount as being "in progress" and
|
||||
continues with the next request; no reply is sent to the kernel.
|
||||
|
||||
* Lastly, one or more of the mounts may have been "deferred". A
|
||||
mount is deferred if extra information is required before the
|
||||
mount can proceed. When the information becomes available the
|
||||
mount will take place, but in the mean time no reply is sent to
|
||||
the kernel. If the mount is deferred, Amd continues to try any
|
||||
remaining locations.
|
||||
|
||||
Once a volume has been mounted, Amd establishes a "volume mapping"
|
||||
which is used to satisfy subsequent requests.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Automatic Unmounting, Next: Keep-alives, Prev: Mounting a Volume, Up: Overview
|
||||
|
||||
Automatic Unmounting
|
||||
====================
|
||||
|
||||
To avoid an ever increasing number of filesystem mounts, Amd removes
|
||||
volume mappings which have not been used recently. A time-to-live
|
||||
interval is associated with each mapping and when that expires the
|
||||
mapping is removed. When the last reference to a filesystem is removed,
|
||||
that filesystem is unmounted. If the unmount fails, for example the
|
||||
filesystem is still busy, the mapping is re-instated and its
|
||||
time-to-live interval is extended. The global default for this grace
|
||||
period is controlled by the "-w" command-line option (*note -w: -w
|
||||
Option.) or the amd.conf parameter `dismount_interval' (*note
|
||||
dismount_interval Parameter::.). It is also possible to set this value
|
||||
on a per-mount basis (*note opts: opts Option.).
|
||||
|
||||
Filesystems can be forcefully timed out using the Amq command.
|
||||
*Note Run-time Administration::.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Keep-alives, Next: Non-blocking Operation, Prev: Automatic Unmounting, Up: Overview
|
||||
|
||||
Keep-alives
|
||||
===========
|
||||
|
||||
Use of some filesystem types requires the presence of a server on
|
||||
another machine. If a machine crashes then it is of no concern to
|
||||
processes on that machine that the filesystem is unavailable. However,
|
||||
to processes on a remote host using that machine as a fileserver this
|
||||
event is important. This situation is most widely recognized when an
|
||||
NFS server crashes and the behavior observed on client machines is that
|
||||
more and more processes hang. In order to provide the possibility of
|
||||
recovery, Amd implements a "keep-alive" interval timer for some
|
||||
filesystem types. Currently only NFS makes use of this service.
|
||||
|
||||
The basis of the NFS keep-alive implementation is the observation
|
||||
that most sites maintain replicated copies of common system data such as
|
||||
manual pages, most or all programs, system source code and so on. If
|
||||
one of those servers goes down it would be reasonable to mount one of
|
||||
the others as a replacement.
|
||||
|
||||
The first part of the process is to keep track of which fileservers
|
||||
are up and which are down. Amd does this by sending RPC requests to the
|
||||
servers' NFS `NullProc' and checking whether a reply is returned.
|
||||
While the server state is uncertain the requests are re-transmitted at
|
||||
three second intervals and if no reply is received after four attempts
|
||||
the server is marked down. If a reply is received the fileserver is
|
||||
marked up and stays in that state for 30 seconds at which time another
|
||||
NFS ping is sent.
|
||||
|
||||
Once a fileserver is marked down, requests continue to be sent every
|
||||
30 seconds in order to determine when the fileserver comes back up.
|
||||
During this time any reference through Amd to the filesystems on that
|
||||
server fail with the error "Operation would block". If a replacement
|
||||
volume is available then it will be mounted, otherwise the error is
|
||||
returned to the user.
|
||||
|
||||
Although this action does not protect user files, which are unique on
|
||||
the network, or processes which do not access files via Amd or already
|
||||
have open files on the hung filesystem, it can prevent most new
|
||||
processes from hanging.
|
||||
|
||||
By default, fileserver state is not maintained for NFS/TCP mounts.
|
||||
The remote fileserver is always assumed to be up.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Non-blocking Operation, Prev: Keep-alives, Up: Overview
|
||||
|
||||
Non-blocking Operation
|
||||
======================
|
||||
|
||||
Since there is only one instance of Amd for each automount point,
|
||||
and usually only one instance on each machine, it is important that it
|
||||
is always available to service kernel calls. Amd goes to great lengths
|
||||
to ensure that it does not block in a system call. As a last resort
|
||||
Amd will fork before it attempts a system call that may block
|
||||
indefinitely, such as mounting an NFS filesystem. Other tasks such as
|
||||
obtaining filehandle information for an NFS filesystem, are done using a
|
||||
purpose built non-blocking RPC library which is integrated with Amd's
|
||||
task scheduler. This library is also used to implement NFS keep-alives
|
||||
(*note Keep-alives::.).
|
||||
|
||||
Whenever a mount is deferred or backgrounded, Amd must wait for it
|
||||
to complete before replying to the kernel. However, this would cause
|
||||
Amd to block waiting for a reply to be constructed. Rather than do
|
||||
this, Amd simply "drops" the call under the assumption that the kernel
|
||||
RPC mechanism will automatically retry the request.
|
||||
|
||||
|
||||
File: am-utils.info, Node: Supported Platforms, Next: Mount Maps, Prev: Overview, Up: Top
|
||||
|
||||
Supported Platforms
|
||||
*******************
|
||||
|
||||
Am-utils has been ported to a wide variety of machines and operating
|
||||
systems. Am-utils's code works for little-endian and big-endian
|
||||
machines, as well as 32 bit and 64 bit architectures. Furthermore, when
|
||||
am-utils to an Operating System on one architecture, it is generally
|
||||
readily portable to the same Operating System on all platforms on which
|
||||
it is available.
|
||||
|
||||
The table below lists those platforms supported by the latest
|
||||
release. The listing is based on the standard output from GNU's
|
||||
`config.guess' script. Since significant changes have been made to
|
||||
am-utils, not all systems listed here have been verified working for all
|
||||
features.
|
||||
|
||||
Auto-Configured System Name Config Compile Amd NFS3 Shlib Hlfsd
|
||||
|
||||
Auto-Configured System Name Config Compile Amd NFS3 Shlib Hlfsd
|
||||
|
||||
alpha-dec-osf4.0 yes yes yes yes
|
||||
|
||||
hppa1.1-hp-hpux10.10 yes yes yes n/a no
|
||||
|
||||
hppa1.1-hp-hpux10.20 yes yes yes n/a no
|
||||
|
||||
hppa1.1-hp-hpux9.01 yes yes yes n/a
|
||||
|
||||
hppa1.1-hp-hpux9.05 yes yes yes n/a
|
||||
|
||||
hppa1.1-hp-hpux9.07 yes yes yes n/a
|
||||
|
||||
i386-pc-bsdi2.1 yes yes yes n/a
|
||||
|
||||
i386-pc-bsdi3.0 yes yes yes n/a
|
||||
|
||||
i386-pc-solaris2.5.1 yes yes yes yes yes yes
|
||||
|
||||
End Tag Table
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-1,v 1.1.1.3 1997/10/26 00:03:40 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
@ -1144,12 +1145,10 @@ defined as empty strings.
|
|||
the name of the mount map being used.
|
||||
|
||||
`netnumber'
|
||||
`primnetnum'
|
||||
the number of the network to which the primary network interface is
|
||||
attached. This value is also output by the "-v" option.
|
||||
|
||||
`network'
|
||||
`primnetname'
|
||||
`wire'
|
||||
the name of the network to which the primary network interface is
|
||||
attached. If a symbolic name cannot be found in the networks or
|
||||
|
@ -1160,18 +1159,6 @@ defined as empty strings.
|
|||
the full pathname of the name being resolved. For example
|
||||
`/home/foo' in the example above.
|
||||
|
||||
`subsnetname'
|
||||
the name of the network to which the subsidiary (second) network
|
||||
interface is attached. If a symbolic name cannot be found in the
|
||||
networks or hosts database then dotted IP address format is used.
|
||||
This value is also output by the "-v" option.
|
||||
|
||||
`subsnetnum'
|
||||
the number of the network to which the subsidiary (second) network
|
||||
interface is attached. If a symbolic name cannot be found in the
|
||||
networks or hosts database then dotted IP address format is used.
|
||||
This value is also output by the "-v" option.
|
||||
|
||||
Selectors can be negated by using `!=' instead of `=='. For example
|
||||
to select a location on all non-Vax machines the selector `arch!=vax'
|
||||
would be used.
|
||||
|
@ -1192,6 +1179,12 @@ compared with a value.
|
|||
member of the netgroup ARG, this selector evaluates to true.
|
||||
Otherwise it evaluates to false.
|
||||
|
||||
`in_network(ARG)'
|
||||
If the current host has any network interface that is locally
|
||||
attached to the network specified in ARG (either via name or
|
||||
number), this selector evaluates to true. Otherwise it evaluates
|
||||
to false.
|
||||
|
||||
`true(ARG)'
|
||||
Always evaluates to true. ARG is ignored.
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-2,v 1.1.1.2 1997/10/26 00:03:41 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
@ -528,16 +529,17 @@ output is of the form:
|
|||
Copyright (c) 1990 Jan-Simon Pendry
|
||||
Copyright (c) 1990 Imperial College of Science, Technology & Medicine
|
||||
Copyright (c) 1990 The Regents of the University of California.
|
||||
am-utils version 6.0a10 (build 18).
|
||||
Built by ezk@cs.columbia.edu on date Fri Aug 22 15:21:03 EDT 1997.
|
||||
am-utils version 6.0a13 (build 18).
|
||||
Built by ezk@cs.columbia.edu on date Wed Oct 22 15:21:03 EDT 1997.
|
||||
cpu=sparc (big-endian), arch=sun4, karch=sun4u.
|
||||
full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
|
||||
Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
|
||||
AMFS: nfs, link, nfsx, host, linkx, program, union, inherit, ufs, lofs,
|
||||
cdfs, pcfs, auto, direct, toplvl, autofs, error.
|
||||
FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, ufs.
|
||||
Primary network: primnetname="cucs-net" (primnetnum=128.59.16).
|
||||
No Subsidiary network.
|
||||
Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
|
||||
Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
|
||||
Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
|
||||
|
||||
The information includes the version number, number of times Amd was
|
||||
compiled on the local system, release date and name of the release.
|
||||
|
@ -548,10 +550,9 @@ next line lists the full name of the system, the variables `${os}' and
|
|||
|
||||
Then come a list of map types supported, filesystems internally
|
||||
supported by Amd (AMFS), and generic filesystems available (FS).
|
||||
Finally the first two networks (if any) of this host are listed by name
|
||||
and number. The latter are available via the variables
|
||||
`${primnetname}', `${primnetnum}', `${subsnetname}', and
|
||||
`${subsnetnum}'. *Note Selectors::.
|
||||
Finally all known networks (if any) of this host are listed by name and
|
||||
number. The primary (first) listed are available via the variables
|
||||
`${wire}' or `${network}', and `${netnumber}'. *Note Selectors::.
|
||||
|
||||
|
||||
File: am-utils.info, Node: -w Option, Next: -x Option, Prev: -v Option, Up: Amd Command Line Options
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-3,v 1.1.1.2 1997/10/26 00:03:42 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-4,v 1.1.1.2 1997/10/26 00:03:44 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
@ -1142,6 +1143,17 @@ Hlfsd Options
|
|||
SIGUSR1 sent to Hlfsd will cause it to dump its internal password
|
||||
map to the file `/tmp/hlfsdump'.
|
||||
|
||||
-P PASSWORD-FILE
|
||||
Read the user-name, user-id, and home directory information from
|
||||
the file PASSWORD-FILE. Normally, Hlfsd will use getpwent(3) to
|
||||
read the password database. This option allows you to override the
|
||||
default database, and is useful if you want to map users' mail
|
||||
files to a directory other than their home directory. Only the
|
||||
username, uid, and home-directory fields of the file PASSWORD-FILE
|
||||
are read and checked. All other fields are ignored. The file
|
||||
PASSWORD-FILE must otherwise be compliant with Unix System 7
|
||||
colon-delimited format passwd(4).
|
||||
|
||||
|
||||
File: am-utils.info, Node: Hlfsd Files, Prev: Hlfsd Options, Up: Using Hlfsd
|
||||
|
||||
|
@ -1274,21 +1286,3 @@ ctl-hlfsd restart
|
|||
|
||||
*Note Hlfsd:: for more details.
|
||||
|
||||
|
||||
File: am-utils.info, Node: expn, Next: fix-amd-map, Prev: ctl-hlfsd, Up: Assorted Tools
|
||||
|
||||
expn
|
||||
====
|
||||
|
||||
A script to expand email addresses into their full name. It is
|
||||
generally useful when using with the `lostaltmail' script, but is a
|
||||
useful tools otherwise.
|
||||
|
||||
$ expn -v ezk@cs.columbia.edu
|
||||
ezk@cs.columbia.edu ->
|
||||
ezk@shekel.mcl.cs.columbia.edu
|
||||
ezk@shekel.mcl.cs.columbia.edu ->
|
||||
Erez Zadok <"| /usr/local/mh/lib/slocal -user ezk || exit 75>
|
||||
Erez Zadok <\ezk>
|
||||
Erez Zadok </u/zing/ezk/.mailspool/backup>
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-5,v 1.1.1.3 1997/10/26 00:03:45 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
@ -5,6 +6,24 @@ START-INFO-DIR-ENTRY
|
|||
* Am-utils: (am-utils). The Amd automounter suite of utilities
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
|
||||
File: am-utils.info, Node: expn, Next: fix-amd-map, Prev: ctl-hlfsd, Up: Assorted Tools
|
||||
|
||||
expn
|
||||
====
|
||||
|
||||
A script to expand email addresses into their full name. It is
|
||||
generally useful when using with the `lostaltmail' script, but is a
|
||||
useful tools otherwise.
|
||||
|
||||
$ expn -v ezk@cs.columbia.edu
|
||||
ezk@cs.columbia.edu ->
|
||||
ezk@shekel.mcl.cs.columbia.edu
|
||||
ezk@shekel.mcl.cs.columbia.edu ->
|
||||
Erez Zadok <"| /usr/local/mh/lib/slocal -user ezk || exit 75>
|
||||
Erez Zadok <\ezk>
|
||||
Erez Zadok </u/zing/ezk/.mailspool/backup>
|
||||
|
||||
|
||||
File: am-utils.info, Node: fix-amd-map, Next: fixmount, Prev: expn, Up: Assorted Tools
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.info-6,v 1.1.1.2 1997/10/26 00:03:46 christos Exp $
|
||||
This is Info file am-utils.info, produced by Makeinfo version 1.68 from
|
||||
the input file am-utils.texi.
|
||||
|
||||
|
@ -23,8 +24,8 @@ Index
|
|||
* Alternate locations: Mounting a Volume.
|
||||
* am-eject: am-eject.
|
||||
* Amd command line options: Amd Command Line Options.
|
||||
* Amd Configuration File: Amd Configuration File.
|
||||
* Amd configuration file: -F Option.
|
||||
* Amd Configuration File: Amd Configuration File.
|
||||
* Amd configuration file; specifying name: -F Option.
|
||||
* Amd's PID: Amq -p option.
|
||||
* Amd's process ID: Amq -p option.
|
||||
|
@ -89,8 +90,8 @@ Index
|
|||
* Controlling Amd: Controlling Amd.
|
||||
* Controlling Hlfsd: Controlling Hlfsd.
|
||||
* Creating a pid file: -p Option.
|
||||
* ctl-amd <1>: ctl-amd.
|
||||
* ctl-amd: Starting Amd.
|
||||
* ctl-amd <1>: Starting Amd.
|
||||
* ctl-amd: ctl-amd.
|
||||
* ctl-hlfsd <1>: Controlling Hlfsd.
|
||||
* ctl-hlfsd: ctl-hlfsd.
|
||||
* Debug options: -D-Option.
|
||||
|
@ -103,9 +104,9 @@ Index
|
|||
* delay, mount option: delay Option.
|
||||
* Delaying mounts from specific locations: delay Option.
|
||||
* Determining the map type: Map Types.
|
||||
* dev, mount option <1>: Unix Filesystem.
|
||||
* dev, mount option <2>: CD-ROM Filesystem.
|
||||
* dev, mount option: Floppy Filesystem.
|
||||
* dev, mount option <1>: Floppy Filesystem.
|
||||
* dev, mount option <2>: Unix Filesystem.
|
||||
* dev, mount option: CD-ROM Filesystem.
|
||||
* Direct automount filesystem: Direct Automount Filesystem.
|
||||
* direct, filesystem type: Direct Automount Filesystem.
|
||||
* Discovering version information: -v Option.
|
||||
|
@ -236,6 +237,7 @@ Index
|
|||
* How to start a direct automount point: Direct Automount Filesystem.
|
||||
* How to start an indirect automount point: Automount Filesystem.
|
||||
* How variables are expanded: Variable Expansion.
|
||||
* in_network, nomadic mount selector: Selectors.
|
||||
* inherit, filesystem type: Inheritance Filesystem.
|
||||
* Inheritance filesystem: Inheritance Filesystem.
|
||||
* Interval before a filesystem times out: -c Option.
|
||||
|
@ -374,6 +376,7 @@ Index
|
|||
* Mount selector; false: Selectors.
|
||||
* Mount selector; host: Selectors.
|
||||
* Mount selector; hostd: Selectors.
|
||||
* Mount selector; in_network: Selectors.
|
||||
* Mount selector; karch: Selectors.
|
||||
* Mount selector; key: Selectors.
|
||||
* Mount selector; map: Selectors.
|
||||
|
@ -383,10 +386,6 @@ Index
|
|||
* Mount selector; os: Selectors.
|
||||
* Mount selector; osver: Selectors.
|
||||
* Mount selector; path: Selectors.
|
||||
* Mount selector; primnetname: Selectors.
|
||||
* Mount selector; primnetnum: Selectors.
|
||||
* Mount selector; subsnetname: Selectors.
|
||||
* Mount selector; subsnetnum: Selectors.
|
||||
* Mount selector; true: Selectors.
|
||||
* Mount selector; wire: Selectors.
|
||||
* mount system call: opts Option.
|
||||
|
@ -458,8 +457,6 @@ Index
|
|||
* plock; using: -S Option.
|
||||
* portmap_program Parameter: portmap_program Parameter.
|
||||
* Primary server: delay Option.
|
||||
* primnetname, mount selector: Selectors.
|
||||
* primnetnum, mount selector: Selectors.
|
||||
* print_pid Parameter: print_pid Parameter.
|
||||
* print_version Parameter: print_version Parameter.
|
||||
* Process id: -p Option.
|
||||
|
@ -480,8 +477,8 @@ Index
|
|||
* restart_mounts Parameter: restart_mounts Parameter.
|
||||
* Restarting Amd: Restarting Amd.
|
||||
* Restarting existing mounts: -r Option.
|
||||
* rfs, mount option <1>: Loopback Filesystem.
|
||||
* rfs, mount option: Network Filesystem.
|
||||
* rfs, mount option <1>: Network Filesystem.
|
||||
* rfs, mount option: Loopback Filesystem.
|
||||
* rhost, mount option: Network Filesystem.
|
||||
* Root filesystem: Root Filesystem.
|
||||
* root, filesystem type: Root Filesystem.
|
||||
|
@ -503,6 +500,7 @@ Index
|
|||
* Selector; false: Selectors.
|
||||
* Selector; host: Selectors.
|
||||
* Selector; hostd: Selectors.
|
||||
* Selector; in_network: Selectors.
|
||||
* Selector; karch: Selectors.
|
||||
* Selector; key: Selectors.
|
||||
* Selector; map: Selectors.
|
||||
|
@ -512,10 +510,6 @@ Index
|
|||
* Selector; os: Selectors.
|
||||
* Selector; osver: Selectors.
|
||||
* Selector; path: Selectors.
|
||||
* Selector; primnetname: Selectors.
|
||||
* Selector; primnetnum: Selectors.
|
||||
* Selector; subsnetname: Selectors.
|
||||
* Selector; subsnetnum: Selectors.
|
||||
* Selector; true: Selectors.
|
||||
* Selector; wire: Selectors.
|
||||
* Selectors: Selectors.
|
||||
|
@ -559,8 +553,6 @@ Index
|
|||
* Stripping the local domain name: Variable Expansion.
|
||||
* sublink: Filesystems and Volumes.
|
||||
* sublink, mount option: sublink Option.
|
||||
* subsnetname, mount selector: Selectors.
|
||||
* subsnetnum, mount selector: Selectors.
|
||||
* Supported Platforms: Supported Platforms.
|
||||
* Symbolic link filesystem: Symbolic Link Filesystem.
|
||||
* Symbolic link filesystem II: Symbolic Link Filesystem II.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: am-utils.texi,v 1.1.1.3 1997/10/26 00:03:47 christos Exp $
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c
|
||||
@c Copyright (c) 1997 Erez Zadok
|
||||
|
@ -38,7 +39,7 @@
|
|||
@c
|
||||
@c %W% (Berkeley) %G%
|
||||
@c
|
||||
@c $Id: am-utils.texi,v 1.1.1.2 1997/09/26 16:08:28 christos Exp $
|
||||
@c Id: am-utils.texi,v 6.0 1997/02/09 15:11:50 ezk beta
|
||||
@c
|
||||
@setfilename am-utils.info
|
||||
|
||||
|
@ -1522,25 +1523,17 @@ prefix was @file{blah/} then @code{$@{key@}} would be set to
|
|||
the name of the mount map being used.
|
||||
|
||||
@item netnumber
|
||||
@itemx primnetnum
|
||||
@cindex netnumber, mount selector
|
||||
@cindex Mount selector; netnumber
|
||||
@cindex Selector; netnumber
|
||||
@cindex primnetnum, mount selector
|
||||
@cindex Mount selector; primnetnum
|
||||
@cindex Selector; primnetnum
|
||||
the number of the network to which the primary network interface is
|
||||
attached. This value is also output by the ``-v'' option.
|
||||
|
||||
@item network
|
||||
@itemx primnetname
|
||||
@itemx wire
|
||||
@cindex network, mount selector
|
||||
@cindex Mount selector; network
|
||||
@cindex Selector; network
|
||||
@cindex primnetname, mount selector
|
||||
@cindex Mount selector; primnetname
|
||||
@cindex Selector; primnetname
|
||||
@cindex wire, mount selector
|
||||
@cindex Mount selector; wire
|
||||
@cindex Selector; wire
|
||||
|
@ -1556,24 +1549,6 @@ output by the ``-v'' option.
|
|||
the full pathname of the name being resolved. For example
|
||||
@file{/home/foo} in the example above.
|
||||
|
||||
@item subsnetname
|
||||
@cindex subsnetname, mount selector
|
||||
@cindex Mount selector; subsnetname
|
||||
@cindex Selector; subsnetname
|
||||
the name of the network to which the subsidiary (second) network
|
||||
interface is attached. If a symbolic name cannot be found in the
|
||||
networks or hosts database then dotted IP address format is used. This
|
||||
value is also output by the ``-v'' option.
|
||||
|
||||
@item subsnetnum
|
||||
@cindex subsnetnum, mount selector
|
||||
@cindex Mount selector; subsnetnum
|
||||
@cindex Selector; subsnetnum
|
||||
the number of the network to which the subsidiary (second) network
|
||||
interface is attached. If a symbolic name cannot be found in the
|
||||
networks or hosts database then dotted IP address format is used. This
|
||||
value is also output by the ``-v'' option.
|
||||
|
||||
@end table
|
||||
|
||||
Selectors can be negated by using @samp{!=} instead of @samp{==}. For
|
||||
|
@ -1607,6 +1582,14 @@ If the current host as determined by the value of @code{$@{host@}} is a
|
|||
member of the netgroup @i{ARG}, this selector evaluates to true.
|
||||
Otherwise it evaluates to false.
|
||||
|
||||
@item in_network(ARG)
|
||||
@cindex in_network, nomadic mount selector
|
||||
@cindex Mount selector; in_network
|
||||
@cindex Selector; in_network
|
||||
If the current host has any network interface that is locally attached
|
||||
to the network specified in @i{ARG} (either via name or number), this
|
||||
selector evaluates to true. Otherwise it evaluates to false.
|
||||
|
||||
@item true(ARG)
|
||||
@cindex true, nomadic mount selector
|
||||
@cindex Mount selector; true
|
||||
|
@ -2284,16 +2267,17 @@ Copyright (c) 1997 Erez Zadok
|
|||
Copyright (c) 1990 Jan-Simon Pendry
|
||||
Copyright (c) 1990 Imperial College of Science, Technology & Medicine
|
||||
Copyright (c) 1990 The Regents of the University of California.
|
||||
am-utils version 6.0a10 (build 18).
|
||||
Built by ezk@@cs.columbia.edu on date Fri Aug 22 15:21:03 EDT 1997.
|
||||
am-utils version 6.0a13 (build 18).
|
||||
Built by ezk@@cs.columbia.edu on date Wed Oct 22 15:21:03 EDT 1997.
|
||||
cpu=sparc (big-endian), arch=sun4, karch=sun4u.
|
||||
full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
|
||||
Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
|
||||
AMFS: nfs, link, nfsx, host, linkx, program, union, inherit, ufs, lofs,
|
||||
cdfs, pcfs, auto, direct, toplvl, autofs, error.
|
||||
FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, ufs.
|
||||
Primary network: primnetname="cucs-net" (primnetnum=128.59.16).
|
||||
No Subsidiary network.
|
||||
Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
|
||||
Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
|
||||
Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
|
||||
@end example
|
||||
|
||||
The information includes the version number, number of times @i{Amd} was
|
||||
|
@ -2306,10 +2290,10 @@ name. @xref{Supported Platforms}.
|
|||
|
||||
Then come a list of map types supported, filesystems internally
|
||||
supported by @i{Amd} (AMFS), and generic filesystems available (FS).
|
||||
Finally the first two networks (if any) of this host are listed by name
|
||||
and number. The latter are available via the variables
|
||||
@code{$@{primnetname@}}, @code{$@{primnetnum@}},
|
||||
@code{$@{subsnetname@}}, and @code{$@{subsnetnum@}}. @xref{Selectors}.
|
||||
Finally all known networks (if any) of this host are listed by name
|
||||
and number. The primary (first) listed are available via the variables
|
||||
@code{$@{wire@}} or @code{$@{network@}}, and
|
||||
@code{$@{netnumber@}}. @xref{Selectors}.
|
||||
|
||||
@c ----------------------------------------------------------------
|
||||
@node -w Option, -x Option, -v Option, Amd Command Line Options
|
||||
|
@ -6146,6 +6130,17 @@ description is available in the program source. A SIGUSR1 sent to
|
|||
@i{Hlfsd} will cause it to dump its internal password map to the file
|
||||
@file{/tmp/hlfsdump}.
|
||||
|
||||
@item -P @var{password-file}
|
||||
Read the user-name, user-id, and home directory information from the
|
||||
file @var{password-file}. Normally, @i{Hlfsd} will use @b{getpwent}(3)
|
||||
to read the password database. This option allows you to override the
|
||||
default database, and is useful if you want to map users' mail files to
|
||||
a directory other than their home directory. Only the username, uid,
|
||||
and home-directory fields of the file @var{password-file} are read and
|
||||
checked. All other fields are ignored. The file @var{password-file}
|
||||
must otherwise be compliant with Unix System 7 colon-delimited format
|
||||
@b{passwd}(4).
|
||||
|
||||
@end table
|
||||
|
||||
@c ----------------------------------------------------------------
|
||||
|
@ -7250,4 +7245,7 @@ All other registered trademarks are owned by their respective owners.
|
|||
@c LocalWords: lrwxrwxrwx adminpr hplj adminpr cfg tekxp xterms tekxp Dupuy tp
|
||||
@c LocalWords: linkname hlfsddump dirname rmtab pluto rlogin direntry pg vr dn
|
||||
@c LocalWords: maxmem hlfsdir xmailbox hlfsdump showmount cn amdmap amdmapName
|
||||
@c LocalWords: objectClass amdmapKey amdmapValue ln
|
||||
@c LocalWords: objectClass amdmapKey amdmapValue ln powerpc amdmapTimestamp
|
||||
@c LocalWords: moisil FSinfo Libtool Unmounting sublink fileservers NullProc
|
||||
@c LocalWords: gethostname mount's unmounts linkx remounts unmounting UAs SA's
|
||||
@c LocalWords: mountpoint mountpoints unescaped UIDs util's overlayed
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
$NetBSD: hlfsd.ps,v 1.1.1.2 1997/10/26 00:03:50 christos Exp $
|
||||
%!PS-Adobe-2.0
|
||||
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
|
||||
%%Title: hlfsd.dvi
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
@set UPDATED 26 September 1997
|
||||
@set EDITION 6.0a12
|
||||
@set VERSION 6.0a12
|
||||
$NetBSD: version.texi,v 1.1.1.3 1997/10/26 00:03:55 christos Exp $
|
||||
@set UPDATED 24 October 1997
|
||||
@set EDITION 6.0a13
|
||||
@set VERSION 6.0a13
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
.\" $NetBSD: fixmount.8,v 1.1.1.3 1997/10/26 00:03:33 christos Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright (c) 1997 Erez Zadok
|
||||
.\" Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
.\"
|
||||
.\" %W% (Berkeley) %G%
|
||||
.\"
|
||||
.\" $Id: fixmount.8,v 1.1.1.2 1997/09/22 21:13:12 christos Exp $
|
||||
.\" Id: fixmount.8,v 5.2.2.1 1992/02/09 15:11:15 jsp beta
|
||||
.\"
|
||||
.TH FIXMOUNT 8L "26 Feb 1993"
|
||||
.SH NAME
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
.\" $NetBSD: hlfsd.8,v 1.1.1.3 1997/10/26 00:03:15 christos Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright (c) 1997 Erez Zadok
|
||||
.\" Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -36,7 +38,7 @@
|
|||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $Id: hlfsd.8,v 1.1.1.2 1997/09/22 21:12:41 christos Exp $
|
||||
.\" Id: hlfsd.8,v 1.2 1993/09/14 22:29:10 ezk Exp ezk
|
||||
.\"
|
||||
.\" HLFSD was written at Columbia University Computer Science Department, by
|
||||
.\" Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@smarts.com>
|
||||
|
@ -65,6 +67,8 @@ hlfsd \- home-link file system daemon
|
|||
.BI \-x " log-options"
|
||||
] [
|
||||
.BI \-D " debug-options"
|
||||
] [
|
||||
.BI \-P " password-file"
|
||||
]
|
||||
[
|
||||
.I linkname
|
||||
|
@ -243,6 +247,23 @@ source. A SIGUSR1 sent to
|
|||
.B hlfsd
|
||||
will cause it to dump its internal password map to the file
|
||||
.BR /tmp/hlfsdump .
|
||||
.TP
|
||||
.BI \-P " password-file"
|
||||
Read the user-name, user-id, and home directory information from the file
|
||||
.I password-file.
|
||||
Normally,
|
||||
.B hlfsd
|
||||
will use
|
||||
.IR getpwent (3)
|
||||
to read the password database. This option allows you to override the
|
||||
default database, and is useful if you want to map users' mail files to a
|
||||
directory other than their home directory. Only the username, uid, and
|
||||
home-directory fields of the file
|
||||
.I password-file
|
||||
are read and checked. All other fields are ignored. The file
|
||||
.I password-file
|
||||
must otherwise be compliant with Unix System 7 colon-delimited format
|
||||
.IR passwd (4).
|
||||
.SH FILES
|
||||
.PD 0
|
||||
.TP 5
|
||||
|
@ -273,9 +294,10 @@ user's home directory is accessible.
|
|||
.BR getgrent (3),
|
||||
.BR getpwent (3),
|
||||
.BR mail(1),
|
||||
.BR mnttab (4),
|
||||
.BR mount (8),
|
||||
.BR mtab (5),
|
||||
.BR passwd (5),
|
||||
.BR passwd (4),
|
||||
.BR sendmail (8),
|
||||
.BR umount (8).
|
||||
.LP
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: hlfsd.h,v 1.1.1.3 1997/10/26 00:03:14 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: hlfsd.h,v 1.1.1.2 1997/09/22 21:12:39 christos Exp $
|
||||
* Id: hlfs.h,v 1.9 1993/09/13 15:11:00 ezk Exp
|
||||
*
|
||||
* HLFSD was written at Columbia University Computer Science Department, by
|
||||
* Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
|
||||
|
@ -133,6 +135,7 @@ extern char *alt_spooldir;
|
|||
extern char *home_subdir;
|
||||
extern char *homedir(int);
|
||||
extern char *mailbox(int, char *);
|
||||
extern char *passwdfile;
|
||||
extern char *slinkname;
|
||||
extern char mboxfile[];
|
||||
extern int cache_interval;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: nfs_prot_svc.c,v 1.1.1.3 1997/10/26 00:03:12 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: nfs_prot_svc.c,v 1.1.1.2 1997/09/26 16:07:45 christos Exp $
|
||||
* Id: nfs_prot_svc.c,v 5.2.2.1 1992/02/09 15:09:30 jsp beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: stubs.c,v 1.1.1.3 1997/10/26 00:03:13 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: stubs.c,v 1.1.1.2 1997/09/22 21:12:37 christos Exp $
|
||||
* Id: stubs.c,v 1.10 1993/09/13 15:11:00 ezk Exp
|
||||
*
|
||||
* HLFSD was written at Columbia University Computer Science Department, by
|
||||
* Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
|
||||
|
@ -303,6 +305,7 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
|
|||
int retval = 0;
|
||||
char *path_val = (char *) NULL;
|
||||
char *username;
|
||||
static uid_t last_uid = INVALIDID;
|
||||
|
||||
if (eq_fh(argp, &root)) {
|
||||
res.rlr_status = NFSERR_ISDIR;
|
||||
|
@ -341,8 +344,12 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
|
|||
}
|
||||
}
|
||||
|
||||
plog(XLOG_USER, "mailbox for uid=%d, gid=%d is %s",
|
||||
userid, groupid, (char *) res.rlr_u.rlr_data_u);
|
||||
/* print info, but try to avoid repetitions */
|
||||
if (userid != last_uid) {
|
||||
plog(XLOG_USER, "mailbox for uid=%d, gid=%d is %s",
|
||||
userid, groupid, (char *) res.rlr_u.rlr_data_u);
|
||||
last_uid = userid;
|
||||
}
|
||||
|
||||
/* I don't think will pass this if -D nofork */
|
||||
if (serverpid == getpid())
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: am_compat.h,v 1.1.1.3 1997/10/26 00:02:25 christos Exp $ */
|
||||
|
||||
/*
|
||||
* am_compat.h:
|
||||
*
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: am_xdr_func.h,v 1.1.1.2 1997/10/26 00:02:28 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: am_xdr_func.h,v 1.1.1.1 1997/09/26 16:06:24 christos Exp $
|
||||
* Id: am_xdr_func.c,v 5.2.2.1 1992/02/09 15:08:40 ezk beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: amu.h,v 1.1.1.2 1997/10/26 00:02:21 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: amu.h,v 1.1.1.1 1997/07/24 21:20:10 christos Exp $
|
||||
* Id: amu.h,v 1.1 1996/01/13 23:23:39 ezk Exp ezk
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: hasmntopt.c,v 1.1.1.2 1997/10/26 00:02:15 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@ n * modification, are permitted provided that the following conditions
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: hasmntopt.c,v 1.1.1.1 1997/07/24 21:20:07 christos Exp $
|
||||
* Id: hasmntopt.c,v 5.2.2.2 1992/05/31 16:35:45 jsp Exp
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: misc_rpc.c,v 1.1.1.2 1997/10/26 00:02:16 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: misc_rpc.c,v 1.1.1.1 1997/07/24 21:20:07 christos Exp $
|
||||
* Id: misc_rpc.c,v 5.2.2.1 1992/02/09 15:08:40 jsp beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: mount_fs.c,v 1.1.1.4 1997/10/26 00:02:16 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: mount_fs.c,v 1.1.1.3 1997/09/26 16:05:59 christos Exp $
|
||||
* Id: mount_fs.c,v 5.2.2.2 1992/05/31 16:35:45 jsp Exp
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: mtab.c,v 1.1.1.3 1997/10/26 00:02:17 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: mtab.c,v 1.1.1.2 1997/09/26 16:06:00 christos Exp $
|
||||
* Id: mtab.c,v 5.2.2.1 1992/02/09 15:08:45 jsp beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: mtabutil.c,v 1.1.1.3 1997/10/26 00:02:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: mtabutil.c,v 1.1.1.2 1997/09/22 21:11:24 christos Exp $
|
||||
* Id: mtab_bsd.c,v 5.2.2.2 1992/11/12 23:29:14 jsp Exp
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: nfs_prot_xdr.c,v 1.1.1.2 1997/10/26 00:02:18 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1989 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: nfs_prot_xdr.c,v 1.1.1.1 1997/07/24 21:20:08 christos Exp $
|
||||
* Id: nfs_prot_xdr.c,v 5.2.2.1 1992/02/09 15:09:32 jsp beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: tranputil.c,v 1.1.1.4 1997/10/26 00:02:23 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: tranputil.c,v 1.1.1.3 1997/09/26 16:06:09 christos Exp $
|
||||
* Id: transp_sockets.c,v 5.2.2.2 1992/07/18 18:57:03 jsp Exp jsp
|
||||
*
|
||||
* Socket specific utilities.
|
||||
* -Erez Zadok <ezk@cs.columbia.edu>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: umount_fs.c,v 1.1.1.3 1997/10/26 00:02:22 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: umount_fs.c,v 1.1.1.2 1997/09/22 21:11:22 christos Exp $
|
||||
* Id: umount_bsd44.c,v 5.2.2.2 1993/01/27 07:32:45 jsp Exp
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: util.c,v 1.1.1.2 1997/10/26 00:02:18 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: util.c,v 1.1.1.1 1997/07/24 21:20:08 christos Exp $
|
||||
* Id: util.c,v 5.2.2.2 1992/03/07 17:52:06 jsp Exp
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: wire.c,v 1.1.1.2 1997/10/26 00:02:19 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: wire.c,v 1.1.1.1 1997/07/24 21:20:09 christos Exp $
|
||||
* Id: wire.c,v 5.2.2.2 1992/06/07 18:06:46 jsp Exp jsp
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -67,10 +69,12 @@
|
|||
typedef struct addrlist addrlist;
|
||||
struct addrlist {
|
||||
addrlist *ip_next;
|
||||
u_long ip_addr;
|
||||
u_long ip_addr; /* address of network */
|
||||
u_long ip_mask;
|
||||
char *ip_net_num; /* number of network */
|
||||
char *ip_net_name; /* name of network */
|
||||
};
|
||||
static addrlist *localnets = 0;
|
||||
static addrlist *localnets = NULL;
|
||||
|
||||
#if defined(IFF_LOCAL_LOOPBACK) && !defined(IFF_LOOPBACK)
|
||||
# define IFF_LOOPBACK IFF_LOCAL_LOOPBACK
|
||||
|
@ -89,7 +93,39 @@ static addrlist *localnets = 0;
|
|||
|
||||
|
||||
void
|
||||
getwire(char **name1, char **number1, char **name2, char **number2)
|
||||
print_wires(char *buf)
|
||||
{
|
||||
addrlist *al;
|
||||
char s[256];
|
||||
int i;
|
||||
|
||||
if (!buf)
|
||||
return;
|
||||
|
||||
if (!localnets) {
|
||||
sprintf(buf, "No networks.\n");
|
||||
return;
|
||||
}
|
||||
/* check if there's more than one network */
|
||||
if (!localnets->ip_next) {
|
||||
sprintf(buf,
|
||||
"Network: wire=\"%s\" (netnumber=%s).\n",
|
||||
localnets->ip_net_name, localnets->ip_net_num);
|
||||
return;
|
||||
}
|
||||
i = 1;
|
||||
for (al = localnets; al; al=al->ip_next) {
|
||||
sprintf(s,
|
||||
"Network %d: wire=\"%s\" (netnumber=%s).\n",
|
||||
i, al->ip_net_name, al->ip_net_num);
|
||||
strcat(buf, s);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
getwire(char **name1, char **number1)
|
||||
{
|
||||
struct hostent *hp;
|
||||
struct netent *np;
|
||||
|
@ -103,21 +139,15 @@ getwire(char **name1, char **number1, char **name2, char **number2)
|
|||
u_long mask;
|
||||
u_long subnetshift;
|
||||
char netNumberBuf[64];
|
||||
addrlist *al = NULL, *tail = NULL;
|
||||
|
||||
#ifndef SIOCGIFFLAGS
|
||||
/* if cannot get interface flags, return nothing */
|
||||
*name1 = strdup("no_subnet_known");
|
||||
*number1 = "0.0.0.0";
|
||||
*name2 = 0;
|
||||
*number2 = 0;
|
||||
plog(XLOG_ERROR, "getwire unable to get interface flags");
|
||||
localnets = NULL;
|
||||
return;
|
||||
#endif /* not SIOCGIFFLAGS */
|
||||
|
||||
*name1 = 0;
|
||||
*number1 = 0;
|
||||
*name2 = 0;
|
||||
*number2 = 0;
|
||||
|
||||
/*
|
||||
* Get suitable socket
|
||||
*/
|
||||
|
@ -153,7 +183,6 @@ getwire(char **name1, char **number1, char **name2, char **number2)
|
|||
* Scan the list looking for a suitable interface
|
||||
*/
|
||||
for (cp = buf; cp < cplim; cp += SIZE(ifr)) {
|
||||
addrlist *al;
|
||||
ifr = (struct ifreq *) cp;
|
||||
|
||||
if (ifr->ifr_addr.sa_family != AF_INET)
|
||||
|
@ -190,13 +219,22 @@ getwire(char **name1, char **number1, char **name2, char **number2)
|
|||
netmask = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr;
|
||||
|
||||
/*
|
||||
* Add interface to local network list
|
||||
* Add interface to local network singly linked list
|
||||
*/
|
||||
al = ALLOC(struct addrlist);
|
||||
al->ip_addr = address;
|
||||
al->ip_mask = netmask;
|
||||
al->ip_next = localnets;
|
||||
localnets = al;
|
||||
al->ip_net_name = NO_SUBNET; /* fill in a bit later */
|
||||
al->ip_net_num = "0.0.0.0"; /* fill in a bit later */
|
||||
al->ip_next = NULL;
|
||||
/* append to the end of the list */
|
||||
if (!localnets) {
|
||||
localnets = tail = al;
|
||||
tail->ip_next = NULL;
|
||||
} else {
|
||||
tail->ip_next = al;
|
||||
tail = al;
|
||||
}
|
||||
|
||||
/*
|
||||
* Figure out the subnet's network address
|
||||
|
@ -255,13 +293,10 @@ getwire(char **name1, char **number1, char **name2, char **number2)
|
|||
C(subnet >> 24), C(subnet >> 16),
|
||||
C(subnet >> 8), C(subnet));
|
||||
}
|
||||
if (!*number1) {
|
||||
*number1 = strdup(netNumberBuf);
|
||||
} else if (!*number2) {
|
||||
*number2 = strdup(netNumberBuf);
|
||||
} else {
|
||||
plog(XLOG_INFO, "Another unused interface discovered: netnumber %s", netNumberBuf);
|
||||
}
|
||||
|
||||
/* fill in network number (string) */
|
||||
al->ip_net_num = strdup(netNumberBuf);
|
||||
|
||||
#else /* not IN_CLASSA */
|
||||
/* This is probably very wrong. */
|
||||
np = getnetbyaddr(subnet, AF_INET);
|
||||
|
@ -277,26 +312,21 @@ getwire(char **name1, char **number1, char **name2, char **number2)
|
|||
else
|
||||
s = inet_dquad(buf, subnet);
|
||||
}
|
||||
if (!*name1) {
|
||||
*name1 = strdup(s);
|
||||
} else if (!*name2) {
|
||||
*name2 = strdup(s);
|
||||
} else {
|
||||
plog(XLOG_INFO, "Another unused interface discovered: netname %s", s);
|
||||
}
|
||||
|
||||
/* fill in network name (string) */
|
||||
al->ip_net_name = strdup(s);
|
||||
}
|
||||
|
||||
out:
|
||||
if (fd >= 0)
|
||||
(void) close(fd);
|
||||
if (!*name1)
|
||||
*name1 = strdup(NO_SUBNET);
|
||||
if (!*number1)
|
||||
close(fd);
|
||||
if (localnets) {
|
||||
*name1 = localnets->ip_net_name;
|
||||
*number1 = localnets->ip_net_num;
|
||||
} else {
|
||||
*name1 = NO_SUBNET;
|
||||
*number1 = "0.0.0.0";
|
||||
if (!*name2)
|
||||
*name2 = strdup(NO_SUBNET);
|
||||
if (!*number2)
|
||||
*number2 = "0.0.0.0";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -340,3 +370,20 @@ islocalnet(u_long addr)
|
|||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Determine whether a network name is one of the local networks
|
||||
* of a host.
|
||||
*/
|
||||
int
|
||||
is_network_member(const char *net)
|
||||
{
|
||||
addrlist *al;
|
||||
|
||||
for (al = localnets; al; al = al->ip_next)
|
||||
if (STREQ(net, al->ip_net_name) || STREQ(net, al->ip_net_num))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: xdr_func.c,v 1.1.1.3 1997/10/26 00:02:20 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: xdr_func.c,v 1.1.1.2 1997/09/26 16:06:04 christos Exp $
|
||||
* Id: xdr_func.c,v 5.2.2.1 1992/02/09 15:08:40 jsp beta
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: xutil.c,v 1.1.1.4 1997/10/26 00:02:21 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: xutil.c,v 1.1.1.3 1997/09/26 16:06:06 christos Exp $
|
||||
* Id: xutil.c,v 1.1 1997/01/11 21:06:22 ezk Exp ezk
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -601,3 +603,49 @@ set_amd_program_number(int program)
|
|||
{
|
||||
amd_program_number = program;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Release the controlling tty of the process pid.
|
||||
*
|
||||
* Algorithm: try these in order, if available, until one of them
|
||||
* succeeds: setsid(), ioctl(fd, TIOCNOTTY, 0).
|
||||
* Do not use setpgid(): on some OSs it may release the controlling tty,
|
||||
* even if the man page does not mention it, but on other OSs it does not.
|
||||
* Also avoid setpgrp(): it works on some systems, and on others it is
|
||||
* identical to setpgid().
|
||||
*/
|
||||
void
|
||||
amu_release_controlling_tty(void)
|
||||
{
|
||||
#ifdef TIOCNOTTY
|
||||
int fd;
|
||||
#endif /* TIOCNOTTY */
|
||||
|
||||
#ifdef HAVE_SETSID
|
||||
if (setsid() < 0) {
|
||||
plog(XLOG_WARNING, "Could not release controlling tty using setsid(): %m");
|
||||
} else {
|
||||
plog(XLOG_INFO, "released controlling tty using setsid()");
|
||||
return;
|
||||
}
|
||||
#endif /* HAVE_SETSID */
|
||||
|
||||
#ifdef TIOCNOTTY
|
||||
fd = open("/dev/tty", O_RDWR);
|
||||
if (fd < 0) {
|
||||
/* not an error if already no controlling tty */
|
||||
if (errno != ENXIO)
|
||||
plog(XLOG_WARNING, "Could not open controlling tty: %m");
|
||||
} else {
|
||||
if (ioctl(fd, TIOCNOTTY, 0) < 0 && errno != ENOTTY)
|
||||
plog(XLOG_WARNING, "Could not disassociate tty (TIOCNOTTY): %m");
|
||||
else
|
||||
plog(XLOG_INFO, "released controlling tty using ioctl(TIOCNOTTY)");
|
||||
close(fd);
|
||||
}
|
||||
return;
|
||||
#endif /* not TIOCNOTTY */
|
||||
|
||||
plog(XLOG_ERROR, "unable to release controlling tty");
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
.\" $NetBSD: wire-test.8,v 1.1.1.2 1997/10/26 00:03:37 christos Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright (c) 1997 Erez Zadok
|
||||
.\" Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
.\"
|
||||
.\" %W% (Berkeley) %G%
|
||||
.\"
|
||||
.\" $Id: wire-test.8,v 1.1.1.1 1997/09/26 16:08:41 christos Exp $
|
||||
.\" Id: fixmount.8,v 5.2.2.1 1992/02/09 15:11:15 jsp beta
|
||||
.\"
|
||||
.TH WIRE-TEST 8L "26 Feb 1993"
|
||||
.SH NAME
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
/* $NetBSD: wire-test.c,v 1.1.1.2 1997/10/26 00:03:37 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Erez Zadok
|
||||
* Copyright (c) 1990 Jan-Simon Pendry
|
||||
|
@ -38,7 +40,7 @@
|
|||
*
|
||||
* %W% (Berkeley) %G%
|
||||
*
|
||||
* $Id: wire-test.c,v 1.1.1.1 1997/09/26 16:08:40 christos Exp $
|
||||
* Id: wire-test.c,v 5.2.2.2 1992/06/07 18:06:46 jsp Exp jsp
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -59,9 +61,8 @@ int
|
|||
main(int argc, char **argv)
|
||||
{
|
||||
char *networkName1, *networkNumber1;
|
||||
char *networkName2, *networkNumber2;
|
||||
struct in_addr myipaddr; /* (An) IP address of this host */
|
||||
char *testhost, *proto;
|
||||
char *testhost, *proto, tmpbuf[1024];
|
||||
int nv, ret;
|
||||
struct sockaddr_in *ip;
|
||||
struct hostent *hp = 0;
|
||||
|
@ -74,31 +75,11 @@ main(int argc, char **argv)
|
|||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
if ((networkName1 = (char *) calloc(STRMAX, sizeof(char)))
|
||||
== (char *) NULL) {
|
||||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
if ((networkNumber1 = (char *) calloc(STRMAX, sizeof(char)))
|
||||
== (char *) NULL) {
|
||||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
if ((networkName2 = (char *) calloc(STRMAX, sizeof(char)))
|
||||
== (char *) NULL) {
|
||||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
if ((networkNumber2 = (char *) calloc(STRMAX, sizeof(char)))
|
||||
== (char *) NULL) {
|
||||
perror(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
getwire(&networkName1, &networkNumber1, &networkName2, &networkNumber2);
|
||||
fprintf(stderr, "Network name is \"%s\"\n", networkName1);
|
||||
fprintf(stderr, "Network number is \"%s\"\n", networkNumber1);
|
||||
fprintf(stderr, "Network name is \"%s\"\n", networkName2);
|
||||
fprintf(stderr, "Network number is \"%s\"\n", networkNumber2);
|
||||
|
||||
/* get list of networks */
|
||||
getwire(&networkName1, &networkNumber1);
|
||||
print_wires(tmpbuf);
|
||||
fprintf(stderr, "%s", tmpbuf);
|
||||
|
||||
/* also print my IP address */
|
||||
amu_get_myaddress(&myipaddr);
|
||||
|
|
Loading…
Reference in New Issue