Commit Graph

51 Commits

Author SHA1 Message Date
Robert Watson
a78d3eaffc Tighten up the string->integer conversion in sysctl(8):
(1) Reject zero-length strings for CTLTYPE_INT, _UINT, _LONG,
    _ULONG.  Do not silently convert to 0.

(2) When converting CTLTYPE_INT, _UINT, _LONG, and _ULONG, check the
    end pointer generated by strtol() and strtoul() rather than
    discarding it.  Reject the string if either none of the string
    was useful for conversion to an integer, or if there was
    trailing garbage.

I.e., we will not allow you to set a numeric sysctl to a value unless
we can completely convert the string argument to a numeric value.
I tripped over this when I put the following in /etc/sysctl.conf:

   kern.maxfiles="4000"

Ouch.
2003-06-15 06:26:08 +00:00
Poul-Henning Kamp
5b03e4b6a1 Output machdep.guessed_bootdev as an integer rather than try to format
it according to ancient and obsolete rules.

This removes one more user of <sys/diskslice.h>
2003-04-03 21:41:14 +00:00
Peter Wemm
661b2c1683 Fix what I think is an off-by-one in certain worst-case scenarios
caused by rev 1.45.  (eg: the estimate being exactly half of the result.)
2003-01-22 00:34:22 +00:00
Matthew Dillon
654e22e7bb Cleanup the formatting from the last commit, convert everything to
a more human-readable 'kilobytes' instead of pages.
2003-01-11 20:03:43 +00:00
Matthew Dillon
f7550ecf3f Make 'sysctl vm.vmtotal' work properly using updated patch from Hiten.
(the patch in the PR was stale).

PR:             kern/5689
Submitted by:   Hiten Pandya <hiten@unixdaemons.com>
2003-01-11 07:29:47 +00:00
Peter Wemm
9866352ec7 Fix a "bug" in sysctl(8). Limit the length when we print a string from
the kernel rather than ignoring the length and keeping on going till we
finally hit a \0 character in the buffer.
2002-11-12 21:18:21 +00:00
Philippe Charnier
7fed38d0a0 Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:10:45 +00:00
Alfred Perlstein
996076bbc7 Don't err(3) (and exit prematurely) when a sysctl's object size has
changed, instead just warn(3)
2002-05-24 08:34:18 +00:00
Andrey A. Chernov
76d3dc5297 Don't forget to null-terminate string we got from sysctl (f.e. in 'A' format).
Stack garbadge may be printed otherwise.
2002-05-08 23:49:19 +00:00
Poul-Henning Kamp
b35c8f287d Take the "tickadj" element out of struct clockinfo. Our adjtime(2)
implementation is being changed and the very concept of tickadj will
no longer be meaningful.
2002-04-15 12:11:06 +00:00
Luigi Rizzo
bca9bbeae7 Make the handling of machdep.guessed_bootdev compiled on i386 only. 2002-03-11 06:50:28 +00:00
Luigi Rizzo
60cf2c1254 Export a (machine dependent) kernel variable bootdev as
machdep.guessed_bootdev, and add code to sysctl to parse its value
and give a (not necessarily correct) name to the device we booted
from (the main motivation for this code is to use the info in the
PicoBSD boot scripts, and the impact on the kernel is minimal).

NOTE: the information available in bootdev is not always reliable,
so you should not trust it too much.  The parsing code is the same
as in boot2.c, and cannot cover all cases -- as it is, it seems to
work fine with floppies and IDE disks recognised by the BIOS. It
_should_ work as well with SCSI disks recognised by the BIOS.
Booting from a CDROM in floppy emulation will return /dev/fd0 (because
this is what the BIOS tells us).
Booting off the network (e.g. with etherboot) leaves bootdev unset so
the value will be printed as "invalid (0xffffffff)".

Finally, this feature might go away at some point, hopefully when we
have a more reliable way to get the same information.

MFC-after: 5 days
2002-03-10 20:08:44 +00:00
Bruce Evans
ce68584226 #include <sys/time.h> instead of depending on namespace pollution in
<sys/stat.h> for its prerequisite <sys/time.h>.

#include <sys/param.h> in the correct place instead of bogusly including
<sys/types.h>.
2002-02-25 03:36:06 +00:00
Poul-Henning Kamp
d58f005463 Allow setting of variables of type dev_t by indicating the name of
a special file on the command line, eg:
  sysctl kern.dumpdev=/dev/ad1s1b

In parse(), when a value is given for a CTLTYPE_QUAD variable,
newval and newsize erroneously fail to be set because of an early
"break".

show_var() contains code that duplicates the functionality of the
oidfmt() function.

PR:		33151, 33150
Submitted by:	Thomas Quinot <thomas@cuivre.fr.eu.org>
2001-12-30 10:33:34 +00:00
Luigi Rizzo
6105f81565 Add code to export and print the description associated to sysctl
variables. Use the -d flag in sysctl(8) to see this information.

Possible extensions to sysctl:
 + report variables that do not have a description
 + given a name, report the oid it maps to.

Note to developers: have a look at your code, there are a number of
	variables which do not have a description.

Note to developers: do we want this in 4.5 ? It is a very small change
	and very useful for documentation purposes.

Suggested by: Orion Hodson
2001-12-16 02:55:41 +00:00
Anton Berezin
d0b8aabb19 Implement -e option. It modifies the output produced by sysctl(8) in
such a way that the name and the value of the variable(s) are separated
with `=' instead of the usual `: '.  This is useful for producing output
that can be fed back to the sysctl utility (pasted to sysctl.conf, for
example).

Reviewed by:	rwatson
Approved by:	markm
MFC after:	2 weeks
2001-10-30 20:15:32 +00:00
Jim Pirzyk
1ce1a53dc3 modfied sysctl command to allow setting values > 2GB if the mib supports it.
PR:		kern/21132
Reviewed by:	no objections to by -arch
MFC after:	1 month
2001-06-18 21:06:24 +00:00
Dima Dorfman
31fb466194 Normalize the use of sizeof according to style(9).
Reviewed by:	md5(1)
2001-06-09 03:56:16 +00:00
Dima Dorfman
ce35978374 Remove unused variable (descr) in show_var().
PR:		22582
Submitted by:	Giorgos Keramidas <charon@gray.westgate.gr>
2001-06-01 02:58:09 +00:00
Dag-Erling Smørgrav
a89ab9bbe4 Perform random drive-by style cleanups, and rewrite a while loop that
offended my artistic sensibilities.
2001-05-28 12:35:40 +00:00
Dag-Erling Smørgrav
9a2402bc41 Try to make sysctl options slightly more orthogonal:
- introduce a -o option that displays opaque variables.
 - introduce a -x option that displays opaque variables in full.
 - deprecate -A in favor of -ao and -X in favor of -ax.
 - remove -A and -X from usage() and SYNOPSIS (but not from DESCRIPTION).
 - ignore -a if one or more variables were listed on the command line.
 - deprecate -w, it is not needed to determine the user's intentions.
 - some language and style cleanup in the man page.

This commit should not break any existing scripts.

MFC after:	4 weeks
2001-05-28 12:15:45 +00:00
Dag-Erling Smørgrav
0ef56fd857 Document the -N option in the usage message and the man page. 2001-01-14 19:08:58 +00:00
Dag-Erling Smørgrav
ca5fac557f Add a -N option that makes sysctl(8) print out just the variable names.
Zsh users can add the following to their .zshrc for sysctl completion:

function listsysctls {
    case $1 in
    *.*) set -A reply $(sysctl -AN ${1%.*}) ;;
    *) set -A reply $(sysctl -AN) ;;
    esac
}
compctl -K listsysctls sysctl

While I'm here, brucify the getopt() switch.
2001-01-14 16:40:06 +00:00
Andrew Gallatin
3c884b5097 Give correct results for SYSCTL_LONG arrays when sizeof(int) != sizeof(long)
This fixes unaligned access on alpha for, eg, sysctl kern.ipc.mbtypes.
2000-10-23 21:04:18 +00:00
Poul-Henning Kamp
aa02fb5729 Array of long support.
Submitted by:	Ian Dowse <iedowse@maths.tcd.ie>
2000-07-11 21:59:54 +00:00
John Baldwin
9701cd40b4 Support for unsigned integer and long sysctl variables. Update the
SYSCTL_LONG macro to be consistent with other integer sysctl variables
and require an initial value instead of assuming 0.  Update several
sysctl variables to use the unsigned types.

PR:		15251
Submitted by:	Kelly Yancey <kbyanc@posi.net>
2000-07-05 07:46:41 +00:00
Poul-Henning Kamp
6ed3a29777 Handle minors like ls(1) does it.
PR:		19179
Submitted by:	Kelly Yancey <kbyanc@posi.net>
2000-06-10 19:55:39 +00:00
Dag-Erling Smørgrav
2d730c265e Belatedly back out rev. 1.20. 1999-11-22 08:38:29 +00:00
Greg Lehey
26909c8019 Allow octal or hex input.
Suggested-by:	Geoff Steckel <gwes@sitaranetworks.com>
1999-11-17 23:42:09 +00:00
Peter Wemm
7f3dea244c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
Bill Fumerola
c1160fe492 Avoid ambigious if/else 1999-07-21 02:49:42 +00:00
Dag-Erling Smørgrav
81e7454a25 Clean up option handling a little.
Add an option for showing sysctl descriptions instead of their values.
1999-01-10 02:10:08 +00:00
Poul-Henning Kamp
2b4c0a3bc6 Allow for printing out integer arrays. 1998-11-08 19:27:43 +00:00
Doug Rabson
dbf9b92f80 Change length arguments to sysctl to size_t. 1998-08-25 07:38:19 +00:00
Bruce Evans
c2deb6082e Don't assume that time_t is long. 1998-06-29 17:54:29 +00:00
John Polstra
14b94d0464 Add missing argument detected by "-Wformat". 1997-11-18 03:37:45 +00:00
Philippe Charnier
d9b1bc7779 Use err(3). Change err(-1,... to err(1,... 1997-10-20 12:53:54 +00:00
John Hay
0fad62aead Display tickadj in struct clockinfo. 1997-06-24 18:23:32 +00:00
Warner Losh
6c3f552a31 compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-31 05:11:47 +00:00
Peter Wemm
476602a9d0 Revert $FreeBSD$ to $Id$ 1997-02-22 16:15:28 +00:00
Jordan K. Hubbard
1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
Sujal Patel
019d933039 Fix a core dump when the user gives "-w" without an "=" 1996-04-10 00:53:22 +00:00
Poul-Henning Kamp
1d86b91c32 The rewamped sysctl program that will find all the variables itself.
Also a couple of handy new options.
1995-12-21 12:39:25 +00:00
Poul-Henning Kamp
07f16e5324 Make sysctl compile again by removing all the debug stuff. 1995-11-17 16:28:42 +00:00
Rodney W. Grimes
d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes
709e8f9ae1 Remove trailing whitespace. 1995-05-30 03:57:47 +00:00
Garrett Wollman
55678a2eb9 Learn how to print out kern.dumpdev as a name. 1995-05-12 19:10:56 +00:00
Garrett Wollman
9426bb7c1d Allow the user access to net.inet.igmp, even though there's nothing
sysctl(8) can interpret there.  (Someday there might be.)
1995-02-16 00:28:42 +00:00
Garrett Wollman
35c13fa033 Implement TCP MIB variables. 1995-02-09 23:16:17 +00:00
Garrett Wollman
ebe06549fd Suppress irritating extra newline after kern.boottime. 1994-08-08 15:37:35 +00:00