Introduce a new sysctl flag, CTLFLAG_SKIP, which will cause

sysctl_sysctl_next() to skip this sysctl.  The sysctl is
still available, but doesn't appear in a "sysctl -a".

This is especially useful when you want to deprecate a sysctl,
and add a warning into it to warn users that they are using
an old interface.  Without this flag, the warning would get
echoed when running "sysctl -a" (which happens at boot).
This commit is contained in:
Maxime Henrion 2002-08-10 19:56:45 +00:00
parent 2f4bfb29bb
commit 306e6b8393
2 changed files with 4 additions and 0 deletions

View File

@ -542,6 +542,9 @@ sysctl_sysctl_next_ls(struct sysctl_oid_list *lsp, int *name, u_int namelen,
*next = oidp->oid_number;
*oidpp = oidp;
if (oidp->oid_kind & CTLFLAG_SKIP)
continue;
if (!namelen) {
if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
return 0;

View File

@ -86,6 +86,7 @@ struct ctlname {
#define CTLFLAG_SECURE 0x08000000 /* Permit set only if securelevel<=0 */
#define CTLFLAG_PRISON 0x04000000 /* Prisoned roots can fiddle */
#define CTLFLAG_DYN 0x02000000 /* Dynamic oid - can be freed */
#define CTLFLAG_SKIP 0x01000000 /* Skip this sysctl when listing */
/*
* USE THIS instead of a hardwired number from the categories below