freebsd with flexible iflib nic queues
Go to file
Bill Paul a7acf629b6 Reviewed by: rgrimes, jkh and davidg (sort of)
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.
1995-05-26 05:28:00 +00:00
bin Describe -m option 1995-05-06 13:52:29 +00:00
eBones Make certain that random keys havethe correct parity, for interoperation with 1995-05-09 18:05:15 +00:00
etc Add tun0 to the all rule. 1995-05-18 10:51:03 +00:00
games Fix nested comments for -Wcomment warnings. 1995-05-09 13:33:06 +00:00
gnu eliminate coredump for readline(NULL) case 1995-05-22 13:32:29 +00:00
include Add prototype for ypbinderr_string(). 1995-04-21 18:07:34 +00:00
lib Remove Ontrack special from All_FreeBSD(). 1995-05-25 06:14:49 +00:00
libexec Make last change a little more robust by checking for failure of getcwd(). 1995-05-22 11:03:55 +00:00
lkm Changed relase number in snake_saver.c from 2.1 to 2.0.5 1995-05-16 19:10:11 +00:00
release Add CRC checking to sysinstall. 1995-05-25 18:49:58 +00:00
sbin Fixed bug where UDP was required to mount a TCP NFS filesystem. 1995-05-24 10:10:24 +00:00
secure Argh! Another instance of DES rather than des that I forgot. Truly, 1995-05-11 22:07:49 +00:00
share The securedist outside the USA have changed a great deal. 1995-05-25 19:05:01 +00:00
sys Fixed bugs in multicast address handling (flag was set in wrong register, 1995-05-26 02:02:44 +00:00
tools/regression/usr.bin/sed BSD 4.4 Lite Usr.bin Sources 1994-05-27 12:33:43 +00:00
usr.bin Fix %d and others printing 1995-05-24 02:54:30 +00:00
usr.sbin Reviewed by: rgrimes, jkh and davidg (sort of) 1995-05-26 05:28:00 +00:00
COPYRIGHT This is the official 4.4 Lite copyright. 1994-09-11 07:53:28 +00:00
CVS-INFO Documented the new CVS template. This really isn't the right place for it, 1994-07-24 22:27:27 +00:00
HW.TROUBLE Added the first three entries. Changed the intro a bit. 1994-08-28 20:48:37 +00:00
Makefile Submitted by: jkh 1995-05-13 03:34:23 +00:00
README Small tweak - I said that ESC-ESC aborted the install. It actually only 1994-11-10 04:28:15 +00:00
TODO Removed the ps through a pipe project since we decided this was 1995-04-23 21:34:23 +00:00

   -----------------------------------------
       FreeBSD 2.0  ---  ALPHA Release                 ,        ,
   -----------------------------------------          /(        )`
                                                      \ \___   / |
Welcome to the ALPHA release of FreeBSD 2.0 - the     /- _  `-/  '
first public snapshot of our new 4.4BSD Lite based   (/\/ \ \   /\
operating system environment.  This install proce-   / /   | `    \
dure is also at the ALPHA stage, and contains only   O O   ) /    |
the minimum functionality required by an             `-^--'`<     '
*EXPERIENCED* person to install the system.         (_.)  _  )   /
It is our hope, of course, that the feedback         `.___/`    /
provided from this snapshot will                       `-----' /
greatly assist us in making the release   <----.     __ / __   \
of 2.0 much more user friendly.  Your     <----|====O)))==) \) /====
comments and criticisms are very          <----'    `--' `.__,' \
valuable to us, so please don't hesitate               |        |
in contacting us!  Full details on where and            \       /	/\
how to provide feedback are given below.           ______( (_  / \______/
                                                 ,'  ,-----'   |
This install procedure is ALPHA code, and        `--{__________)
may very possibly *DESTROY* the contents of your
ENTIRE DISK!  Please do not proceed with this installation
unless you've adequately backed up your data first!

If any errors occur during this installation, you can see them
by toggling over to the alternate screen - type ALT-F2 to switch
over, ALT-F1 to switch back to the install screen.  The debugging
output on the second screen may be very valuable to us in understanding
your bug report, so please be sure to take note of it when reporting
any failures in the installation!  Thanks!

Menus and scrolling output windows may be traversed with the arrow
and Page Up/Page Down keys.  To suspend the installation at any point,
hit ESC twice.  Hitting TAB will move the focus to different controls.
If you've ever dealt with a DOS installation, you'll know how to deal
with this.

For a more complete description of what's new in this release, please
see the release notes.

For more documentation on this system, it is recommended that you purchase
the 4.4BSD Document Set from O'Reilly Associates and the USENIX Association.
ISBN 1-56592-082-1  We have no connection with O'Reilly, we're just
satisfied customers!

Have fun, and please let us know of any problems you encounter with
this release!

Comments should be sent to:

	hackers@FreeBSD.org

Bug reports should be sent using the `send-pr' utility, if you
were able to get the system installed, otherwise to:

	bugs@FreeBSD.org

And general questions to:

	questions@FreeBSD.org


Please have patience if your questions are not answered right away -
this is an especially busy time for us, and our volunteer resources
are often strained to the limit (if not somewhat past!).

Thanks!

				The FreeBSD Project