This is not quite finished yet, and therefore I have not added it to the
usr.sbin/Makefile yet.
I collected a bunch of Andrews small programs into one: pccardc /phk
Reviewed by: phk
Submitted by: Andrew McRae <andrew@mega.com.au>
import of 4.9.3. This man page was produced by sed from the real version
before import, but I didn't have much choice.. This is needed to enable
the ndc target to complete a "make install"
Yes, there will be conflicts on just about every file. There is a
significant mainline after the initial import, and the "-j" merge conflicts
on the $Id$ lines... Yuck! (These comments apply to the rest of the
imports)
Obtained from: Paul Vixie <paul@vix.com>
that this is a superset of cdplay, and perhaps it's time to send cdplay
into the bit bucket if this works well. According to the docs, it has
a friendlier command structure, command line interface etc.
Submitted by: Serge Vakulenko <vak@cronyx.ru>
Note that conf.c, although there was an import conflict, it did not
require intervention, as it was the $Id$ tag. It would have become
rev 1.8 on checkout so there's no point changing it from 1.7 to
1.1.1.3 as the "-j" option wanted to do.. Trust me.. :-)
page. I tried all three modes (rwhod, rwhod -m, rwhod -m 32) on a machine
with 2 ethernet interfaces and they all worked.
Submitted by: Bill Fenner <fenner@parc.xerox.com>
'NIS information unchanged' or '/etc/master.passwd unchanged'
depending on which was is being modified (conditional on -DYP).
This is to save me the trouble of writing a whole other error
routine (nis_error()?) for the upcoming changes to passwd and
chpass.
Note that this is pretty light at the moment.. It's been gutted to remove
references to older features no longer in the driver.
Curses-based port monitoring is intended for the future.. :-)
Obtained from: Andy Rutter, <andy@acronym.co.uk>
- getnetgrent.c: address some NIS compatibility problems. We really need
to use the netgroup.byuser and netgroup.byhost maps to speed up innetgr()
when using NIS. Also, change the NIS interaction in the following way:
If /etc/netgroup does not exist or is empty (or contains only the
NIS '+' token), we now use NIS exclusively. This lets us use the
'reverse netgroup' maps and is more or less the behavior of other
platforms.
If /etc/netgroup exists and contains local netgroup data (but no '+').
we use only lthe local stuff and ignore NIS.
If /etc/netgroup exists and contains both local data and the '+',
we use the local data nd the netgroup map as a single combined
database (which, unfortunately, can be slow when the netgroup
database is large). This is what we have been doing up until now.
Head off a potential NULL pointer dereference in the old innetgr()
matching code.
Also fix the way the NIS netgroup map is incorporated into things:
adding the '+' is supposed to make it seem as though the netgroup
database is 'inserted' wherever the '+' is placed. We didn't quite
do it that way before.
(The NetBSD people apparently use a real, honest-to-gosh, netgroup.db
database that works just like the password database. This is
actually a neat idea since netgroups is the sort of thing that
can really benefit from having multi-key search capability,
particularly since reverse lookups require more than a trivial
amount of processing. Should we do something like this too?)
- netgroup.5: document all this stuff.
- rcmd.c: some sleuthing with some test programs linked with my own
version of innetgr() has revealed that SunOS always passes the NIS
domain name to innetgr() in the 'domain' argument. We might as well
do the same (if YP is defined).
- ether_addr.c: also fix the NIS interaction so that placing the
'+' token in the /etc/ethers file makes it seem like the NIS
ethers data is 'inserted' at that point. (Chances are nobody will
notice the effect of this change, which is just te way I like it. :)
specified in the top level Makefiles.
Previously I missed dozens of Makefiles that skip the install after
using `cmp -s' to decide that the install isn't necessary.
flag. The getopt handling in here is actually pretty bogus (not Phil's
fault - it's original sin) but the general approach is working so I'm not
going to break it. Some small tweaks of my own to add error checking to what
was originally submitted. Strange how nobody noticed that the flag was
documented but completely missing from the code before! [jkh].
Submitted by: Phil Taylor <phil@zipmail.co.uk>
interface set at 57600 baud, and I found out the hard way that lpd doesn't
know about speeds greater than 38400, even though <sys/ttydev.h> also
permits 57600 and 115200 baud. Fix this by adding B57600 and B115200 to the
'bauds' table. (The Apple printer worked properly once I did this, BTW. :)
FTP_PASSIVE_MODE. It would be really nice if we could standardise on
this name so that all tools (like ncftp) that offer passive/active
ftp selection would work seamlessly with one user environment variable
setting.
Running there you got any kind of strange errors from tar caused
by treating directories as tar files!
Fix it by adding new isfile(name) (check for reg. files) to simple fexists(name) calls.
pkg_manage silently dumps core, pkg_info claims about them to
stderr, which makes very difficult to find what directory cause it via
tons of pkg_info -a output. I found solution which covers both variants,
now pkg_info claims about missing files to stdout among valid output
with ERROR: prefix. It heals pkg_manage to not dump core and makes
easy to find errors in pkg_info -a output by simple /ERROR 'more' command.
- use daemon() to daemonify ourselves
- the 'Usage' printf() was missing an argument
- remove declaration of rindex and #include <string.h> instead
bootparam.c:
- get rid of local declarations of YP functions and include headers
from /usr/include/rpcsvc instead.
level ourself. We failed for unreadable directories. E.g.,
`mtree -d -f /etc/mtree/BSD.usr.dist -p /usr' run by `nobody' was
confused after it couldn't descend into /usr/games/hide. It looked
for /usr/include and subsequent directories in /usr/games.
Don't search for `extra' files when the spec depth is less than the
fts level. The spec depth isn't incremented for leaf nodes because
that would give a NULL level pointer and make it inconvenient to go
back to the parent level. Leaf nodes are built for directories that
are empty in the spec. Since they are empty in the spec, all files
in them are extra. The search looked for files one spec level
too high, so for `mtree -d -f /etc/mtree/BSD.usr.dist -p /usr',
obj/sbin matched ./sbin and wasn't considered extra, so it was
descended into and lots of bogus extra things in it were found.
This was harmful for `mtree -U' (as reported in pr623) and worse
for `mtree -r'.
Use rmdir(), not unlink(), to remove `extra' directories. unlink()
succeeds for root but unlinking directories normally damages the
file system.
Report `fts_errno' instead of `errno' when the former applies.
TS_CAR_OFLOW, TS_CTS_OFLOW, TS_DSR_OFLOW and TS_ZOMBIE.
Document old tty states TS_ASLEEP and TS_TTSTOP more completely.
Document old tty states TS_ASYNC and TS_TBLOCK.
Document not so old tty states TS_CAN_BYPASS_L_RINT and TS_SNOOP.
Don't document nonexistent state TS_HUPCL.
Document the current line disciplines instead of prehistoric ones.
won't get reported. The pcvt, cx and iitty drivers aren't supported.
Report new tty states TS_CONNECTED, TS_SO_OLOWAT, TS_SO_OCOMPLETE,
TS_CAR_OFLOW, TS_CTS_OFLOW, TS_DSR_OFLOW and TS_ZOMBIE if they are
defined.
Report old tty states TS_WOPEN and TS_ASLEEP only if they are defined.
Report not so old tty states TS_CAN_BYPASS_L_RINT and TS_SNOOP only
if they are defined (instead of if __FreeBSD__ is defined).
-S domainname,server1,server2,server3,...
The -S flag allows the system administrator to lock ypbind to a
particular domain and group of NIS servers. Up to ten servers can
be specified. There must not be any spaces between the commas in
the domain/server specification. This option is used to insure that
that the system binds only to one domain and only to one of the
specified servers, which is useful for systems that are both NIS
servers and NIS clients: it provides a way to restrict what ma-
chines the system can bind to without the need for specifying the
-ypset or -ypsetme options, which are often considered to be secu-
rity holes. The specified servers must have valid entries in the
local /etc/hosts file. IP addresses may be specified in place of
hostnames. If ypbind can't make sense ouf of the arguments, it will
ignore the -S flag and continue running normally.
Note that ypbind will consider the domainname specified with the -S
flag to be the system default domain.
(According to what Garrett showed me, OSF/1 actually only allows 4 servers
to be specified. Ten seemed to be a bit more reasonable to me.)
Suggested by: G. Wollman
Idea lifted from: OSF/1
This is performed by using a line similar to:
controller scbus0 at ahc0 bus 1
to wire scbus0 to the second bus on an adaptec 2742T controller.
Reviewed by: Peter Dufault(dufault@hda.com), Rod Grimes(rgrimes@FreeBSD.org)
is writeable (by the real uid). if it is, lpr assumes that the file
can be unlinked. lpr does not check for directories with S_ISVTX set
Reviewed by: dima
2. Optimize ModemQlen.
3. Sending ProtoReject for Unknow protocol (i.e. IPX)
4. Avoid select looping by reading tun under the high system load.
5. Adding Local version String for maintenance.
6. Just more speak rather silent ignore if you type invalid key words.
>Category: bin
>Synopsis: SPAP request REJexted in stead of NAKed
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs (FreeBSD bugs mailing list)
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Jul 5 01:40:01 1995
>Originator: Dick van den Burg
>Organization:
>Release: FreeBSD 2.0.5-RELEASE i386
>Environment:
>Description:
When trying to connect with ppp to a Shiva Lanrover (version 3.2) the
authentication fails because the SPAP (Shiva Secure PAP) configuration
request the is sent by Shive is REJected by ppp in stead of NAKed.
Reviewed by: amurai@spec.c.jp and friends
Submitted by: burg@is.ge.com
bootparam_prot.x was changed for nfsv3 but bootparamd and callbootd
kept using the old version which fortunately failed at build time.
Copying hasn't been necessary since path handling was fixed in
rpcgen/rpc_main.c some time ago.
The version 2 support has been tested (client+server) against FreeBSD-2.0,
IRIX 5.3 and FreeBSD-current (using a loopback mount). The version 2 support
is stable AFAIK.
The version 3 support has been tested with a loopback mount and minimally
against an IRIX 5.3 server. It needs more testing and may have problems.
I have patched amd to support the new variable length filehandles although
it will still only use version 2 of the protocol.
Before booting a kernel with these changes, nfs clients will need to at least
build and install /usr/sbin/mount_nfs. Servers will need to build and
install /usr/sbin/mountd.
NFS diskless support is untested.
Obtained from: Rick Macklem <rick@snowhite.cis.uoguelph.ca>
mrouted-3.5n. This is being splatted onto the head rather than properly
imported thanks to the ``delete trailing whitespace'' screw. This code is
now actively working in an operational environment (the DARTNET) so I
have some confidence that the basic functionality actually works.
Obtained from: Bill Fenner, PARC, and ISI
actually had this done at one point and lost it somewhere along the
line. Again, this is an honest to gosh bug fix only: no functionality
is changed.
- After a child broadcaster process dies or is killed, set its dom_pipe_fds
descriptors to -1 so that the 'READFD > 0' test in the select() loop
does the right thing.
Since descriptor values can be re-used, failure to do this can lead
to a situation where a descriptor for an RPC socket can be mistaken for
a pipe. If this happens, RPC sockets could be incorrectly handed off to
handle_children(), which would then clear the descriptor from the select()
descriptor mask and prevent svc_getreqset() from handling them. The end
result would be that some RPC events would go unserviced. Curiously,
the failures only happen intermittently.
multi part stuff centralized.
The final check is backwards or something so it always said it failed,
even it it didn't.
Fixed tcpip address check to not be stupid, 10.0.255.1 is legal.
Change root.flp from a new format CPIO archive to a tar archive.
Unless we're willing to change the main tarballs from tar format to
"newc" (or, even better, "crc") cpio format, we need to use one common
one for all and that's tar for now. Install will now grab "root floppy"
from an ftp site if that's what you've got set.
Fix even more gripes from Poul's list.
P.S. As soon as I get the distfiles copied over to freefall tomorrow
morning, those of you wishing to test minimal installs over ftp should
be able to do so by grabbing the boot floppy and nothing else. Keep
your eyes open for my announcement.
Root floppy (which actually may be able to go completely away at some point
soon!) is now loadable from ftp/nfs/dos as well as CDROM and (of course)
floppy.
Fix more problems on Poul's Gripe List.
Rod, Jordan and David have more or less given me the OK on this
with the understanding that it doesn't change any functionality.
It doesn't: these are bug fixes only. No other part of the system
should be affected. Of course, since I'm the only one working on
NIS, you'll just have to take my word on it. :)
Fixes for the following annoyingly subtle bugs:
- ypbindproc_setdom_2 is supposed to be declared void *, not boot_t *,
and it fails to correctly signal failures back to the ypset(8) command:
we need to call one of the svcerr_*() functions (in this case,
svcerr_noprog() seems a logical choice -- we're really cheating
a bit here because nothing else quite fits) to tell ypset that the
attempt to set the binding for a domain failed. If we don't do this,
failed ypset attempts either appear (incorrectly) to succeed, or
they time out.
- The lock handling for child processes isn't quite right. The
child broadcaster processes have to release all locks on the
binding files and the ypbind.lock file.
- The parent ypbind process will SEGV if you do the following:
-- start ypbind with the -ypset or -ypsetme flag
-- type 'ypwhich -d random_unserved_domain'
-- type 'ypset -d random_unserved_domain anyhost'
-- type 'ypwhich -d random_unserved_domain' again
-- wait about 60 seconds
What happens is this: the ypwhich command causes ypbind to fork a
broadcaster process that searches for a server for random_unserved_domain.
If you then use ypset to force a binding while this process is still alive,
the state flags that tell the ypbind parent process that the child
is running will be cleared. The second ypwhich command then causes
a *second* child process to be forked for random_unserved_domain,
which is verbotten. When the first broadcaster exits and tells the
parent that it wasn't able to find a server for the domain, the parent
clobbers the entry for random_unserved_domain. Then the second broadcaster
exits and the same thing happens, only trying to clobber the entry
twice causes a SEGV.
The fix for this is a slight change in program structure: since we
can't have more than one broadcaster for a given domain at a time,
we save the pipe descriptors and pid for the child broadcaster in members
of the _dom_binding struct for the domain. (As a side effect, we
can get rid of the global child_fds variable.) So when rpc_received()
finds that it's been asked to do a ypset for a domain for which a
broadcaster process exists, it sends a SIGINT to the child to kill it
and closes the pipe to the now-dead child. This keeps everything in sync
and insures that we don't leak file descriptors.
- ping() should be using YPPROC_DOMAIN rather than YPPROC_DOMAIN_NONACK
when it does its clnt_call() to the server.
- Removed the check for client_handle == NULL in ping() and make
client_handle local to ping instead of a member of the _dom_binding
struct. This fixes another potential ypset problem: using ypset to
force a binding to a machine that has an NIS server but which *doesn't*
support the domain we're after can result in permanently bogus bindings.
- the 'server OK' message prints the wrong IP address.
1. Fix a few bugs in the ftp installation code and implement proper
ftp and network shutdown routines.
2. Clean up the menus a fair bit - add a FreeBSD configuration menu.
3. Eliminate the last of the "chaining" - the installation now does
the most obvious thing in the most obvious cases and doesn't present
you with more menus than you were expecting. This makes it necessary to be
a little more explicit in places, but it's still less confusing.
4. Add a few more safety nets for the user. Change a few hard-and-fast
limits to warnings (it now runs as non-root, Bruce).
5. Add descriptions for all the supported ethernet cards.
6. Make the cpio floppy extract put up a menu requesting the drive you wish
to use if you have more than one; don't just always assume drive A.
Add testftp: target
ftp.c:
add more debugging output and fix a few more problems
media_strategy:
make the ftp system actually do something resembling common sense.
it now works after a fashion, although it soon falls over for some
reason.
ftp installation method should now function. We'll know as soon as my
make release builds the floppies. I'm just committing this out of my
release tree now so that it doesn't get clobbered again.
use them yet, but it's close (we're working on the last wrinkles
in the CD install for now).
2. Complete the CDROM installation strategy code.
3. Simplify the distribtuion loading code.
4. General error message cleanup.
5. Write the /etc/fstab file now and split those routines into config.c
6. Clean up the menus a little more.
This is getting ridiculous. I may have to put the clear() back
and take the performance penalty, Poul.
Tweak the TCP/IP setup menu to look a little nicer.
Add lp0 to the list of available network devices (it was found before
but simply not described properly).
Justin can see it.
2. Attempt to fix the redisplay problems in label.c some more. Not clearing
the screen each time is certainly faster, but it's causing all sorts of
problems.
of optimizations. Add a check to make sure that root filesystems
are at least 20MB in size (this is just a thumbnail approximation,
and we can revise it later if necessary).
disks.c: clrtobot() so that deleted stuff disappears.
disks.c: offset is signed (for OnTrack diskmanager)
system.c: don't setbuf(stdout,0), it's too slow.
Add size argument to new_part, so it can come up with a good default for newfs.
Fix (possibly) a dialog botch after label.c's wizard mode.
Make vsystem even smarter abour crunched binaries (what a speedup!)
(You need to recompile crunchgen !)
partition editors (ugh). Fix an utterly bogus message (no arguments :)
in dist.c. This should all make Poul a little happier and slide in
before the next CTM update window.
with the diff/CVS hassles - this represents far too many CVS commit
messages for you folks, and trying to document each and every iteration
of the code is a hassle (and not very useful at that).
Don't notify in vsystem() - it obscures the original message.
Put some debugging code into cpio_extract() so that I can see
why it doesn't work now. :(
crypt salt string begin with a '_', no other crypt's do. If you remove the
initialization of $salt to '_' in sub salt(), everything works as advertised.
Submitted by: Charles Henrich <henrich@crh.cl.msu.edu>
implementation.
2. Totally rework device registration. It's about half the size and
more powerful now.
3. Add DOS discovery.
4. Start filling in some of the strategy routines.
5. Another clean-up pass over the menus.
6. Make wizard code use Disk typedef.
If I can get the first strategy routine finished tonite, we should have a working
install (from ftp, at least) this weekend.
as per Andrey's letter. Make a few modifications for correctness.
2. Add Language menu back to first menu - it was too buried in the
Options menu.
3. Add size information to all distributions.
4. Add a compat20 distribution (we need to make one of these!! Any takers? Please?)
Submitted by: Nickolay N. Dudorov <nnd@gw.itfs.nsk.su> & jkh
syscons (and/or cons25) at all. This code looked just fine running
on an xterm, but on a console the attributes are all wrong. I
now have to sacrifice some screen real-estate to pring cheesy
`-' characters to accomplish the same thing.
broken in syscons, or at least in the cons25 termcap entry! :-( A_BOLD
won't show up on monochrome adapters (I don't think) but they'd be screwed
anyway since I don't have an attribute to use for them now at all.
2. Don't use russian screenmap - apparently not necessary with right font.
3. Dequote bogusly quoted font name in english language setting.
4. Use setterm() and hack around an undesirable side-effect (cbreak is unset).
5. be smarter about setting OnVTY, and use it in cases where it makes sense.
Submitted by: Nickolay N. Dudorov <nnd@gw.itfs.nsk.su>
won't know until Poul wakes up again).
2. Make vsystem() put its output on the debugging fd.
3. DTRT with root filesystem placement - now I see how this has to work
(thanks, Poul).
4. Many miscellaneous spelling errors fixed and general cleanup.
It remains to be seen how successfully. The distribution loading code
is still not here yet, but the partition/newfs/mount/cpio-extract cycle
is as complete as it's ever going to get, modulo possible bug fixes.
The TCP/IP setup screen is also sort of here, albeit in a highly-changing
state due to the fact that per-interface information isn't being kept
right now but is being added (thanks, Gary!).
full directory hierarchy, as is the format of the new ports collection.
It used the old "all packages in one directory" paradigm, which is wrong for
ports now.
Submitted by: Marc van Kempen <wmbfmk@urc.tue.nl>
the fixes!):
o Scoped addresses might let traffic in
o IGMP queries sent with wrong timeouts
o Possible core dump in mtrace if we get a request for which we have no route
o If a member on a transit network left a group, mrouted would stop forwarding
even if there was a downstream router
o Various code cleanups and logging changes
Reviewed by: wollman
Submitted by: Bill Fenner <fenner@parc.xerox.com>
Print a final newline to stderr after the scan finishes, only do it
at the right place in this version, 1.1.5.1 caused an extra newline
if you where not running -s, and it went to stdout instead of stderr.
Obtained from: FreeBSD 1.1.5.1
device table layout...basically, don't output the cruft anymore - it
is now dynamic.
Reviewed by: John Dyson and David Greenman
Submitted by: Poul-Henning Kamp
it really should have been printing all this time. Also fix my rather
bogus handling of the id_conflicts value by moving it to the end of
isa_device and dealing with that correctly now.
others. The flag can be put in descriptive locations, e.g.:
device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
or
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
But is nonetheless boolean only. You can't turn conflict checking off for
only a given type of conflict. I didn't deem it worth the trouble at this
stage, and it's far better than the ALLOW_CONFLICT_* that preceeded it.
- Make the child process reaper signal-driven. (Previously, we called reaper()
once a second each time we went through the select() loop. This was
convenient, but inefficient.)
- Increase main select() timeout from 1 second to 60 seconds and use
this as the ping timer instead of using timestamps in the _dom_binding
structure. This nd the reaper() change noted above makes ypbind a little
less CPU-intensive.
- Don't flag EINTR's from select() as errors since they will happen as a
result of incoming SIGCHLD's interrupting select().
- Prevent possible resource hogging. Currently we malloc() memory
each time a user process asks us to establish a binding for a domain,
but we never free it. This could lead to serious memory leakage if a
'clever' user did something like ask ypwhich to check the bindings
for domains 0.0.0.0.0.0.0.0.0.0 through 9.9.9.9.9.9.9.9.9.9 inclusive.
(This would also make a mess out of the /var/yp/binding directory.)
We now avoid this silliness by a) limiting the maximum number of
simultaneous bindings we can manage to 200, and b) free()ing _dom_binding
structures of secondary domains whose servers have stopped responding.
We unlink the /var/yp/binding/domain.vers files for the free()ed
domains too.
(This is safe to do since a client can prod us into reestablishing the
binding, at which time we'll simply allocate a new _dom_binding structure
for it.)
We keep count of the total number of domains. If asked to
allocate more than the maximum, we return an error. I have yet to hear
of anybody needing 200 simultaneous NIS bindings, so this should be
enough. (I chose the number 200 arbitrarily. It can be increased if need
be.)
- Changed "server not responding"/"server OK" messages to display server
IP addresses again since it looks spiffier.
- Use daemon() to daemonify ourselves,
- Added a SIGTERM handler that removes all binding files and unregisters
the ypbind service from the portmapper when a SIGTERM in received.
- The comment 'blow away everything in BINDINGDIR' has no associated code.
Give it some: clean out /var/yp/binding at startup (if it exists).
This completes my ypbind wishlist. Barring bug fixes, I shouldn't need to
go poking around in here anymore. (Of course, this means I can start
working on my ypserv whishlist now... :)
Do another clean-up pass over this, making the generic menu handler much
more powerful (now handles multiple dispatch). A few more menus fleshed
out and the beginnings of the distribution handler committed. Should
be transfering full distributions over in the next commit.
using %lu. This became more broken when I fixed dbtob() to support byte
offsets >= 4GB. The type had to change to [u]quad_t. Previously the
expressions had type unsigned long and were printed using %d. After
division by 1024, the expressions are guaranteed to fit in an unsigned
long, at least for the standard DEV_BSIZE, so edquota doesn't need to
know about quad_t's explicitly.
Fix all the other format mismatches exposed by compiling with -Wformat
(6 more quota limits of type unsigned long printed using %d and 6 time_t's
(i.e., longs) printed using %d).
fixed, we should be able to fully set up the user's disk. Still to come
with next commit: filesystem setup, distribution extraction, final
configuration.
may not be desired if you're just going to blow the kernel away again later)
and substitute one that tells the user where the new kernel build
directory actually IS, which can at least be argued to be useful information
in all cases.
Reviewed by: davidg
ypbind.c:
Make fewer assumtions about the state of the dom_alive and dom_broadcasting
flags in roc_received().
Cosmetic changes and paranoia checks:
ypbind.c:
Make fewer assumtions about the state of the dom_alive and dom_broadcasting
flags in roc_received().
If select() fails, use syslog() to report the error rather than perror().
Check that all our malloc()s succeed. Report malloc() failure in
ypbindproc_setdom_2() to callers.
yplib.c:
Use #defined constants in ypbinderr_string() rather than hard-coded values.
Correct Makefile so that we build during all: and only install for
make install.
If /etc/sysconfig exists source it to get the flags for restarting
named with. If /etc/sysconfig says no named runs, don't try to start one.
Don't attempt to kill anything if we can not find the named.pid file.
Reviewed by: Nickolay N. Dudorov <nnd@gw.itfs.nsk.su>
nor is it in sync with my working sources, but it leaves me less CVS hassles
to bring in the new files at this time. Still no documentation to translate
quite yet, but soon. This stuff is actually very close now.
o Make the framework generally more robust.
o Figured out how to nest the menu descriptions - no more grotty initialization
of menus.
o Fix bug with helpline and helpfile not being reset.
o Add stubs for the media selection code.
Coming next: Fdisk and disklabel screens using Phk's new libdisk stuff.
Added another couple of menu item types.
Reshuffled the menus and added a few more. Sure wish I could figure out
how to initialize a menu with _one_ initializer rather than two! :(
more to come in the next 24 hours, this is just the first stable result of
8 hours of hacking so far. The specification format for menus is pretty
much hammered out and the beginnings (very humble) of the doc hierarchy
are present for an example. It should be quite easy to add a lot more
menus quickly to this since I did go somewhat out of my way to make the
framework easy to work with. This is NOT the glorious semi-graphical
sysinstall (or whatever its name will be) that the install-geeks are working
on, this is simply the "son of sysinstall" I've been promising to write in
the interim for 2.0.5 and 2.1R (super install doesn't come until 2.2R).
>Number: 368
>Category: bin
>Synopsis: Lpd doesn't log errors after failed exec
>Description:
If an exec done by lpd fails, nothing is sent to the system log
indicating what went wrong. This is because lpd closes all of
the file descriptors before doing the exec, thus closing the syslog
file descriptor in the process.
[Fix applied]
Submitted by: pritc003@maroon.tc.umn.edu
- Moved to a more client-driven model. We aggressively attempt to keep
the default domain bound (as before) but we give up on non-default
domains if we lose contact with a server and fail to get a response
after one round of broadcasting. This helps drastically reduce the
amount of network bandwitdh that ypbind consumes: if a client references
the secondary domain at some later point, this will prod ypbind into
establishing a new binding anyway, so continuously broadcasting without
need is pointless.
Note that we still actively seek out a binding for our default domain
even if no client program has queried us yet. I'm not exactly sure if
this matches SunOS's behavior or not, but I decided to do it this way
since we can get into all sorts of trouble if our default domain comes
unbound. Even so, we're still much quieter than we used to be.
- Removed a bunch of no-longer pertinent comments and a couple of
chunks of #ifdef 0'ed code that no longer fit in to the new layout.
- Theo deRaadt must have become frustrated with the callback mechanism
in clnt_broadcast(), because he shamelessly stole the clnt_broadcast()
code right out of the RPC library and hacked it up to suit his needs.
(Comments and all! :)
I can understand why: clnt_broadcast() blocks while awaiting replies.
Changing this behavior requires surgery. However, you can work around
this: fork the broadcast into a child process and relay the results
back to the parent via a pipe. (Careful obervation has shown that the
SunOS ypbind forks children for broadcasting too, though I can only
guess what sort of interprocess communication it uses. pipe() seems to
do the job well enough.)
This may seem like the long way around, but it's not really that
hard to implement, and I'd prefer to use documented RPC library functions
wherever possible. We're careful to limit the number of simultaneous
broadcasters to avoid swamping the system (the current limit is 5).
Each clnt_broadcast() call only sends out a small number of packets
at increasing intervals. We're also careful not to spawn more than one
bradcaster for a given domain.
- Used clntudp_bufcreate() and clnt_call() to implement a ping()
function for directly querying a particular server so that we can
check if it's still alive. This lets me completely remove the old
bradcasting code and use actual RPC library calls instead, at the
cost of more than a few handfulls of torn-out hair. (Make no mistake
folks: I *HATE* RPC.) Currently, the ping interval is one minute.
- Fixed another potential 'nfds too big for select()' bug: use
_rpc_dtablesize() instead of getdtablesize().
- Quieted gcc -Wall a bit.
- Probably a bunch of other stuff that I've forgotten.
ypbind.8:
- Updated man page to reflect modifications.
ypwhich.c:
- Small mind-o fix from last time: decode error results from
ypbind correctly (*groan*)
yplib.c:
- same as above
- Change behavior of _yp_dobind() a little: if we get back a 'Domain
not bound' error for a given domain, retry a few times before giving
up and passing the error back to the caller. We have to sleep for a
few seconds between tries since the 'Domain not bound' error comes
back immediately (by repeatedly looping, we end up pounding on ypbind).
We retry at most 20 times at 5 second intervals. This gives us a full
minute to get a response. This seems to deviate a bit from SunOS
behavior -- it appears to wait forever -- but I don't like the idea
of perpetually hanging inside a library call.
Note that this should fix the problems some people have with bindings
not being established fast enough at boot time; sometimes amd is started
in /etc/rc after ypbind has run but before it gets a binding set up. The
automounter gets annoyed at this and tends to exit. By pausing ther YP
calls until a binding is ready, we avoid this situation.
- Another _yp_dobind() change: if we determine that our binding files
are unlocked or nonexistent, jump directly to code that pokes ypbind
into restablishing the binding. Again, if it fails, we'll time out
eventually and return.
Also allow URL specification for a package. This works for things the
package may depend on, too.
Allow PKG_PATH to be used anywhere a package is being searched for.
1. Make paths work correctly.
2. Make pkg_add generally more robust in the face of failure.
3. Make the depend messages come out on stderr or stdout, but not both
interspersed! :-)
2. Fix a long-standing bug in pkg_add where the failure of one package in
a multipackage installation (pkg_add *.tgz) would blow you right out of
the water. Ick.
out by Bruce.
2. Add a "feature" to pkg_create (OK, OK, it's a miserable hack!) to get
it to dump its internal packing list out so that the `fake-pkg' rule in
bsd.port.mk can generate a more meaningful packing list.
ypbind.c: if a client program asks ypbind for the name of the server
for a particular domain, and there isn't a binding for that domain
available yet, ypbind needs to supply a status value along with its
failure message. Set yprespbody.ypbind_error before returning from
a ypbindproc_domain request.
yplib.c: properly handle the error status messages ypbind now has the
ability to send us. Add a ypbinderr_string() function to decode the
error values.
ypwhich.c: handle ypbind errors correctly: yperr_string() can't handle
ypbind_status messages -- use ypbinderr_string instead.
- in mount_portal.c: included catching of SIGHUP to get portald to
re-read the config file.
- in mount_portal.c: in SIGCHLD handler the return values checked from
waitpid were wrong. Note. this routine was written correclty according
to the manual page for 4.4BSD, but waitpid does not exhibit this
behaviour. It is not returning 0 when WNOHANG is specified. I havent
checked this properly.
- in mount_portal.c: initialized the fdset for the select properly.
- in mount_portal.c: corrected poor casting in the select.
- in mount_portal.c: changed a break; to exit (0); so that the
children die after doing the hard work, this stops the select: bad
file descriptor messages.
- in pt_file.c: the kernel passes kernel style open flags to the
portal code which aren't compatible with "normal" O_ flags. I have
adjusted these in pt_file.c. In general I think the portal fs code
and portal_cred structure need changing to pass to the portald
the right style of flags _and_ the permissions.
- in pt_tcp.c: a few mistakes in typing of the socket structures,
getservbyname returns the port number as an int but sockaddr wants
the port number as an u_short.
- in pt_tcp.c: someone wrote this on a VAX/Sun whatever and forget
about byte ordering!! I've included a few htons about the place.
- in all the above I have sprinkled a few more debugging printf's.
Submitted by: "Duncan McL Barclay" <dmlb@ohm.york.ac.uk
The first problem I found was that descriptor 0 was being closed.
This happens because the modem variable is set to 0 to indicate
that it is not valid but there are not enough tests for the modem
variable being 0. You can see where I have done this in the patch.
Code in OpenModem() dups the modem descriptor if it is < 3. Once
this happened the modem was always open and an incomming call would
have getty and ppp reading the modem.
Descriptor 1 is closed when the quit command was executed from a
telnet connection. The next modem open returns descriptor 1
and this gets duped leaving the modem always open again.
The modem was not being closed when the connection dropped or was
closed from the other end. The UUCP lock was also not removed if
the modem could not be opened.
Reviewed by: Atsushi Murai <amurai@spec.co.jp>
Submitted by: John Capo <jc@irbs.com>
one ypbind broadcast can yield several responses. This can lead to
some confusion: the syslog message from ypbind will indicate a rebinding
to the first server that responds, but we may subsequently change our
binding to another server when the other responses arrive. This results
in ypbind reporting 'server OK' to one address and ypwhich reporting a
binding to another.
The behavior of the rpc_received() function has been changed to prevent
this: subsequent responses received after a binding has already been
established are ignored. Rebinding gratuitously each time we get a
new response is silly anyway.
Also backed out the non-fix I made in my last ypbind commit. (Pass
me the extra large conical hat, please.)
(At some point I'm going to seriously re-work ypbind and the _yp_dobind()
library function to bring them in line with SunOS's documented behavior:
binding requests are supposed to be 'client-driven.' The _yp_dobind()
function should be responsible for retrying connections in response to
calls from client programs rather than having ypbind broadcasting
continously until a server responds. The current setup works okay in
normal operation, but we broadcast far too often than we should.)
- Don't write the label directly - use DIOCWDINFO.
- Avoid overflow in calculation of lseek() offsets.
- Fix format args in strings some more. %ld and %lu were often reversed and
#ifdefed out strings weren't fixed.
- Don't hard code the raw partition letter or DKBAD*.
- Write the qsort() comparision function in `C'.
- Fix all remaining warnings from `cc -Wall -Walmost-really-all'.