sysctl: deprecate parameters
According to arp(7) manual page base_reachable_time and retrans_time are obsolete since kernel 2.6.12. Based on that the print all listing will not show these two parameters, and attempt to set them will fail. Reported-by: Alexandre Cavalcante Alencar <alexandre.alencar@gmail.com> Bug-Debian: http://bugs.debian.org/599556 Reference: http://www.mail-archive.com/bk-commits-head@vger.kernel.org/msg03396.html Reference: http://www.opensubscriber.com/message/linux-kernel@vger.kernel.org/7344177.html Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
parent
96ba57b568
commit
e01765d30b
15
sysctl.8
15
sysctl.8
@ -62,6 +62,11 @@ given. Specifying \- as filename means reading data from standard input.
|
|||||||
\fB\-a\fR, \fB\-\-all\fR
|
\fB\-a\fR, \fB\-\-all\fR
|
||||||
Display all values currently available.
|
Display all values currently available.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-deprecated\fR
|
||||||
|
Include deprecated parameters to
|
||||||
|
.B \-\-all
|
||||||
|
values listing.
|
||||||
|
.TP
|
||||||
\fB\-b\fR, \fB\-\-binary\fR
|
\fB\-b\fR, \fB\-\-binary\fR
|
||||||
Print value without new line.
|
Print value without new line.
|
||||||
.TP
|
.TP
|
||||||
@ -126,6 +131,16 @@ Display version information and exit.
|
|||||||
/sbin/sysctl \-a \-\-pattern 'net.ipv4.conf.(eth|wlan)0.arp'
|
/sbin/sysctl \-a \-\-pattern 'net.ipv4.conf.(eth|wlan)0.arp'
|
||||||
.br
|
.br
|
||||||
/sbin/sysctl \-\-system \-\-pattern '^net.ipv6'
|
/sbin/sysctl \-\-system \-\-pattern '^net.ipv6'
|
||||||
|
.SH DEPRECATED PARAMETERS
|
||||||
|
The
|
||||||
|
.B base_reachable_time
|
||||||
|
and
|
||||||
|
.B retrans_time
|
||||||
|
are deprecated. The sysctl command does not allow changing values of there
|
||||||
|
parameters. Users who insist to use deprecated kernel interfaces should values
|
||||||
|
to /proc file system by other means. For example:
|
||||||
|
.PP
|
||||||
|
echo 256 > /proc/sys/net/ipv6/neigh/eth0/base_reachable_time
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.I /proc/sys
|
.I /proc/sys
|
||||||
.br
|
.br
|
||||||
|
31
sysctl.c
31
sysctl.c
@ -47,6 +47,12 @@ static bool false = 0;
|
|||||||
*/
|
*/
|
||||||
static const char PROC_PATH[] = "/proc/sys/";
|
static const char PROC_PATH[] = "/proc/sys/";
|
||||||
static const char DEFAULT_PRELOAD[] = "/etc/sysctl.conf";
|
static const char DEFAULT_PRELOAD[] = "/etc/sysctl.conf";
|
||||||
|
static const char *DEPRECATED[] = {
|
||||||
|
"base_reachable_time",
|
||||||
|
"retrans_time",
|
||||||
|
""
|
||||||
|
};
|
||||||
|
static bool IgnoreDeprecated;
|
||||||
static bool NameOnly;
|
static bool NameOnly;
|
||||||
static bool PrintName;
|
static bool PrintName;
|
||||||
static bool PrintNewline;
|
static bool PrintNewline;
|
||||||
@ -96,6 +102,7 @@ static void __attribute__ ((__noreturn__))
|
|||||||
fputs(_(" -a, --all display all variables\n"
|
fputs(_(" -a, --all display all variables\n"
|
||||||
" -A alias of -a\n"
|
" -A alias of -a\n"
|
||||||
" -X alias of -a\n"
|
" -X alias of -a\n"
|
||||||
|
" --deprecated include deprecated parameters to listing\n"
|
||||||
" -b, --binary print value without new line\n"
|
" -b, --binary print value without new line\n"
|
||||||
" -e, --ignore ignore unknown variables errors\n"
|
" -e, --ignore ignore unknown variables errors\n"
|
||||||
" -N, --names print variable names without values\n"
|
" -N, --names print variable names without values\n"
|
||||||
@ -275,6 +282,16 @@ static int ReadSetting(const char *restrict const name)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int is_deprecated(char *filename)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; strlen(DEPRECATED[i]); i++) {
|
||||||
|
if (strcmp(DEPRECATED[i], filename) == 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display all the sysctl settings
|
* Display all the sysctl settings
|
||||||
*/
|
*/
|
||||||
@ -296,6 +313,8 @@ static int DisplayAll(const char *restrict const path)
|
|||||||
readdir(dp); /* skip .. */
|
readdir(dp); /* skip .. */
|
||||||
while ((de = readdir(dp))) {
|
while ((de = readdir(dp))) {
|
||||||
char *restrict tmpdir;
|
char *restrict tmpdir;
|
||||||
|
if (IgnoreDeprecated && is_deprecated(de->d_name))
|
||||||
|
continue;
|
||||||
tmpdir =
|
tmpdir =
|
||||||
(char *restrict) xmalloc(strlen(path) +
|
(char *restrict) xmalloc(strlen(path) +
|
||||||
strlen(de->d_name) +
|
strlen(de->d_name) +
|
||||||
@ -369,6 +388,10 @@ static int WriteSetting(const char *setting)
|
|||||||
outname[equals - name] = 0;
|
outname[equals - name] = 0;
|
||||||
/* change / to . */
|
/* change / to . */
|
||||||
slashdot(outname, '/', '.');
|
slashdot(outname, '/', '.');
|
||||||
|
if(is_deprecated(strrchr(outname, '.') + 1)) {
|
||||||
|
xwarnx(_("%s is deprecated, value not set"), outname);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (stat(tmpname, &ts) < 0) {
|
if (stat(tmpname, &ts) < 0) {
|
||||||
if (!IgnoreError) {
|
if (!IgnoreError) {
|
||||||
@ -618,10 +641,12 @@ int main(int argc, char *argv[])
|
|||||||
const char *preloadfile = DEFAULT_PRELOAD;
|
const char *preloadfile = DEFAULT_PRELOAD;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SYSTEM_OPTION = CHAR_MAX + 1
|
DEPRECATED_OPTION = CHAR_MAX + 1,
|
||||||
|
SYSTEM_OPTION
|
||||||
};
|
};
|
||||||
static const struct option longopts[] = {
|
static const struct option longopts[] = {
|
||||||
{"all", no_argument, NULL, 'a'},
|
{"all", no_argument, NULL, 'a'},
|
||||||
|
{"deprecated", no_argument, NULL, DEPRECATED_OPTION},
|
||||||
{"binary", no_argument, NULL, 'b'},
|
{"binary", no_argument, NULL, 'b'},
|
||||||
{"ignore", no_argument, NULL, 'e'},
|
{"ignore", no_argument, NULL, 'e'},
|
||||||
{"names", no_argument, NULL, 'N'},
|
{"names", no_argument, NULL, 'N'},
|
||||||
@ -645,6 +670,7 @@ int main(int argc, char *argv[])
|
|||||||
PrintNewline = true;
|
PrintNewline = true;
|
||||||
IgnoreError = false;
|
IgnoreError = false;
|
||||||
Quiet = false;
|
Quiet = false;
|
||||||
|
IgnoreDeprecated = true;
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
Usage(stderr);
|
Usage(stderr);
|
||||||
@ -693,6 +719,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'X': /* same as -a -x */
|
case 'X': /* same as -a -x */
|
||||||
DisplayAllOpt = true;
|
DisplayAllOpt = true;
|
||||||
break;
|
break;
|
||||||
|
case DEPRECATED_OPTION:
|
||||||
|
IgnoreDeprecated = false;
|
||||||
|
break;
|
||||||
case SYSTEM_OPTION:
|
case SYSTEM_OPTION:
|
||||||
IgnoreError = true;
|
IgnoreError = true;
|
||||||
return PreloadSystem();
|
return PreloadSystem();
|
||||||
|
Loading…
Reference in New Issue
Block a user