Commit Graph

514 Commits

Author SHA1 Message Date
Poul-Henning Kamp
afb3a9c529 Add the private void *pointer to the chunks, and the functions to manage it.
Make the reassignment of partition names less bogus.
1995-05-03 22:36:52 +00:00
Andrey A. Chernov
f3084e4019 Bump minor number 1995-05-03 22:14:01 +00:00
Andrey A. Chernov
fbe3680005 Bump minor number 1995-05-03 18:54:09 +00:00
Bill Paul
62967ca2b2 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.
1995-05-03 18:33:10 +00:00
Jordan K. Hubbard
a7a5bb1246 Export the chunk names properly. 1995-05-03 17:38:00 +00:00
Poul-Henning Kamp
fcdd2c3c7d Make the target for tst01 more sensible.
Remove bogus targets.
Allocate partition letters as follows:
	lowest offset "flags & CHUNK_IS_ROOT" gets 'a',
	lowest offset "subtype==FS_SWAP" gets 'b'
	the rest is allocated in offset order from this sequence "defghab".
This will generally make sense.
Added rules to complain if more than one CHUNK_IS_ROOT or more than one
FS_SWAP per FreeBSD chunk.
Set CHUNK_IS_ROOT on the 'a' partition in Open_Disk.
Run Fixup_Names in Open_Disk.
1995-05-03 06:30:59 +00:00
Jordan K. Hubbard
d81fc24bca foo -> unknown 1995-05-02 20:16:16 +00:00
Jordan K. Hubbard
1d56870d74 I need Open_Disk() to not spew on my screen. #ifdef out some diagnostic
printfs.
1995-05-02 19:52:27 +00:00
Andrey A. Chernov
ff17906bc9 Fix bracket error for LogMask
Submitted by: Ruslan Belkin <rus@home2.UA.net>
1995-05-02 17:46:30 +00:00
Jordan K. Hubbard
ec27acc8cb foo -> unknown.
I have to be able to show this stuff to the user. :-)
1995-05-01 21:30:24 +00:00
Joerg Wunsch
85c30cfa12 Added function and man page for ftok(3), used in conjunction with
the so-called "System V IPC".

Submitted by:	jbeukema@HK.Super.Net (John Beukema)
Obtained from:  Th. Lockert <tholo@sigmasoft.com>, via NetBSD
1995-05-01 08:53:21 +00:00
Jordan K. Hubbard
81b15f5715 Stick a more BSD-like Makefile here so that I can link to the library. 1995-05-01 08:08:02 +00:00
Poul-Henning Kamp
20c9844ca0 start CHS is 0xff,0xff,0xff if past 1024.
end CHS is 1023,bios_hd,bios_sect if past 1024.  This way we can find
bios the geometry again.
Added a primitive "scan" to tst01.
1995-05-01 04:05:27 +00:00
Poul-Henning Kamp
87d4886cc3 Use the DIOCSYNCSLICE ioctl now. (use only with kernel from this morning).
Get the CHS's right.
Get the disklabels (more) right.
1995-04-30 22:51:05 +00:00
Poul-Henning Kamp
9781a14091 get bootblocks right.
Add mbr and bteasy17 to tst01
read partitions from kernel instead of disk.
Still problems with writing labels, discussing with Bruce.
Extended slices doesn't get written yet.
1995-04-30 11:04:16 +00:00
Poul-Henning Kamp
e6b172ee57 Use 0xff for CHS when past 1024 cyls.
Fix (hopefully) a bug Gary found.
1995-04-30 07:30:45 +00:00
Poul-Henning Kamp
98fc07cacb Make the default case less scary :-) 1995-04-30 06:19:32 +00:00
Poul-Henning Kamp
2d5caf92d0 Now we do writes too. 1995-04-30 06:09:29 +00:00
Bill Paul
04adcdacbf Small fix for the following problems:
- If you take the wheel entry out of /etc/group and turn on NIS,
the '+:*::' line is incorrectly flagged as the entry for wheel (the
empty gid section is translated to 0), hence getgrgid() returns '+'
as the name of the group instead of 'wheel.'

- Using just '+:' as the 'turn on NIS' switch in /etc/group makes
getgrgid() dump core because of a null pointer dereference. (Last
time I was in here, I foolishly assumed that fixing the core dump
problems with getgrnam() and getgrent() would fix getgrgid() too.
Silly me.)
1995-04-29 17:14:50 +00:00
Poul-Henning Kamp
a29b6fccc0 Names are assigned when chunks are created.
Rules for only one fat & one extended in MBR.
1995-04-29 07:21:14 +00:00
Poul-Henning Kamp
a907b94117 Even More stuff. Disk_Names() is here amongst other things. 1995-04-29 04:50:39 +00:00
Poul-Henning Kamp
f9c10dfd1a Next Iteration, getting better.
Made an All_FreeBSD() function.
Added a cmd-line interface (lowest rank) to the tst01 program.
The tst01 program is harmless (worst it can do is coredump), but it
is instructive to run, you can see what the slice-code things of your
disk...
1995-04-29 04:00:57 +00:00
Poul-Henning Kamp
27bff5727d Sanitize and explain a little bit... Implement the first rules... 1995-04-29 01:55:25 +00:00
Poul-Henning Kamp
aded89c1b1 This is a revision 0.00 of the backend stuff for the fdisk/disklabel stuff
in the new sysinstall.  If you want to give a helping hand, then send email
to phk@FreeBSD.ORG.  DO NOT COMMIT TO THIS DIRECTORY!
1995-04-28 23:57:04 +00:00
Peter Dufault
c46c1a53eb Fix a few problems with the debugging output. Add a new "visit" function. 1995-04-28 19:23:51 +00:00
Garrett Wollman
003d29986d No sense in copying the hex[] array in each call to MDXEnd(), it's a
constant.  (There probably ought to be a single libc version of it.)
1995-04-27 16:05:51 +00:00
Bill Paul
456ebbf8f5 ypbind.c: Major overhaul.
- 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.
1995-04-26 19:03:16 +00:00
Jordan K. Hubbard
8a65b63a2c Fix a number of additional warnings. 1995-04-26 14:04:36 +00:00
Jordan K. Hubbard
7662263998 Move <varargs.h> out of FtpLibrary.h and into the .c files that actually
need them.  Fix a number of additional warnings.
1995-04-26 14:04:23 +00:00
Jordan K. Hubbard
25f15401b9 Add libftp to list of targets. 1995-04-25 15:08:52 +00:00
Jordan K. Hubbard
8e47e70f34 Now check all the warning purges and general clean-up in on the second
pass.
1995-04-25 15:08:02 +00:00
Jordan K. Hubbard
6f52f41fb2 A programmatic interface to ftp. I need this for several other
components of the system.

The license is poorly worded, though I have an (email only) release
from the author for unlimited FreeBSD use.  I will try to get something
more concrete, though the author's remote location makes this difficult.
Submitted by:	Oleg Orel <orel@oea.ihep.su>
1995-04-25 15:05:11 +00:00
Bruce Evans
a87df1c4d5 Remove setre*id*. 1995-04-25 10:00:04 +00:00
Andrey A. Chernov
045aff38e6 Add setreuid/setregid to MAN section 1995-04-23 15:06:16 +00:00
Andrey A. Chernov
b48757c256 Add setreuid/setregid 1995-04-23 12:34:48 +00:00
Andrey A. Chernov
c6d8816ea8 Fix history info 1995-04-23 12:31:13 +00:00
Bill Paul
243ae8c754 in _freecaches(): strdup() allocates us memory -- remember to free it. 1995-04-22 17:28:04 +00:00
Bill Paul
644161688b small NIS binding fixes:
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.
1995-04-21 18:04:36 +00:00
Bruce Evans
55e2b2c608 Fix bugs in opendir():
- it succeeded on non-directories (see POSIX 5.1.2.4).
- it hung on (non-open) named pipes.
- it leaked memory if the second malloc() failed.
- it didn't preserve errno across errors in close().
1995-04-21 15:23:27 +00:00
Andrey A. Chernov
7ca7a1934b Add a bit more docs 1995-04-20 21:36:15 +00:00
Andrey A. Chernov
db4dc2ff6e If locale not available, fallback to strcasecmp, not to strcmp 1995-04-16 22:43:45 +00:00
Andreas Schulz
695176ba79 Removed the y.tab.h file from the sources. It is automatically generated
from yacc.
Put the lex.c parser.c and y.tab.h into a CLEANFILES target in the
makefile, they are all generated and need to be removed on a clean.
1995-04-15 17:15:11 +00:00
Bill Paul
8efe1172e2 Head off potential core dump in _havemaster() (we don't need to free any
memory here: the underlying YP routines handle this one for us).
1995-04-15 03:11:55 +00:00
Bill Paul
c98fda6ec8 Better conformance to SunOS behavior: if we can't match a user to one
of the plus or minus lists at all, reject him. This lets you create
a +@netgroup list of users that you want to admit and reject everybody
else. If you end your +@netgroup list with the wildcard line
(+:::::::::) then you'll have a +@netgroup list that remaps the
specified people but leaves people not in any netgroup unaffected.
1995-04-14 14:56:28 +00:00
Garrett Wollman
3688be0eeb Add err_set_file() and err_set_exit() functions to make it possible for
programs which use err(3) to work nicely in a wider range of environments
(e.g., dialog).
1995-04-13 18:04:11 +00:00
Bill Paul
8b4709fa93 Add an ethers(3) man page. 1995-04-12 22:28:49 +00:00
Joerg Wunsch
bfb50190bb The implementation of rexec() missed the function ruserpass(), so the
link stage fell over for any program that attempted to use rexec().

Ruserpass() remains undocumented; i could not find any documentation
for it on other systems.

Also added a BUGS section to the man page, stating that this function
constitutes a potential security hole (as well as the underlying
"exec" service).

Submitted by:	rgrimes
Originally submitted by: agc@uts.amdahl.com (Alistair G. Crooks)
Obtained from: netbsd-bugs@NetBSD.ORG
1995-04-11 19:52:10 +00:00
Joerg Wunsch
a72408576b My libcompat cleanup.
o	add missing man pages

o	make all man pages clearly refer to the libcompat thingie

o	add the information to the vtimes(3) and vlimit(3) man pages
	that nobody has reimplemented the functions by now

o	add the missing getpw.c

o	add code and man pages for cftime(3) and
	ascftime(3) -- i found them somewhere in old
	unfinished work
1995-04-10 18:48:06 +00:00
Bill Paul
b9729ac259 More of the same: we also need to handle multiple domains properly
even if /var/yp/binding/DOMAIN.VERS doesn't exist yet.
1995-04-09 21:52:31 +00:00
Bill Paul
f067dfeabc Fix behavior of YP library routines in environments with multiple domains,
where one or more of the non-default domains are not yet bound.

If we make a YP request for a domain other than the default domain,
and there is no binding for the new domain yet, _yp_dobind() sees
that the /var/yp/binding/DOMAIN.VERS file for the unbound domain is
not locked (by ypbind) and from this it concludes that the NIS system
is dead, so it gives up.

This behavior has been changed: before giving up in this case, we now
make a second check to see if the binding file for the *default* domain
is also not locked. Only if the default domain binding file is also
unlocked to we now assume that ypbind has bought the farm and bail out.
(Note: this assumes that the user hasn't changed the default domain
while ypbind is running.)

With this change, _do_ypbind() is allowed to proceed into the next
section of code wherein it prods ypbind into establishing a binding
for the new domain. This first call times out after ten seconds,
after which it should retry and succeed. From then on, the binding
for the second domain should be handled normally.
1995-04-09 19:26:23 +00:00