Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 152435 - sysctl is using deprecated syscall net.ipv6.neigh.lo.base_reachable_time
Summary: sysctl is using deprecated syscall net.ipv6.neigh.lo.base_reachable_time
Alias: None
Product: Fedora
Classification: Fedora
Component: procps
Version: rawhide
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Tomas Smetana
QA Contact: Brian Brock
Depends On:
Blocks: FC4Target FC7Target 501785 871827
TreeView+ depends on / blocked
Reported: 2005-03-29 15:00 UTC by Robert Scheck
Modified: 2015-10-23 14:17 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 501785 871827 (view as bug list)
Last Closed: 2007-05-28 11:08:38 UTC

Attachments (Terms of Use)

Description Robert Scheck 2005-03-29 15:00:42 UTC
Description of problem:
Mar 29 16:17:17 tux kernel: process `sysctl' is using deprecated sysctl 
(syscall) net.ipv6.neigh.lo.base_reachable_time; Use 
net.ipv6.neigh.lo.base_reachable_time_ms instead.

Version-Release number of selected component (if applicable):

How reproducible:
Everytime: Reboot the system, look into /var/log/messages or into dmesg

Actual results / Expected results:
No message in logfile, no use of deprecated syscall.

Comment 1 Karel Zak 2005-04-25 11:53:18 UTC

*** This bug has been marked as a duplicate of 144459 ***

Comment 2 Robert Scheck 2006-06-22 20:22:47 UTC
Reopening, because this bug report is neither a real duplicate of bug #136451 
nor is it fixed in Rawhide as bug #136451 is marked. Using procps-3.2.6-4 and 
kernel-2.6.17-1.2293_FC6 while today's reboot:

kernel: process `sysctl' is using deprecated sysctl (syscall) net.ipv6.neigh.lo.
base_reachable_time; Use net.ipv6.neigh.lo.base_reachable_time_ms instead.

Comment 3 Karel Zak 2006-06-23 13:58:25 UTC
It's same like bug #158701. 

I don't have idea where is a problem. There is something what calls sysctl with
this old option. I tried add some debug messages to the sysctl command, but it
seems that nothing calls (during boot) sysctl with this option, althought the
error message is in the /var/log/messages file. Strange...

Comment 4 Robert Scheck 2006-06-23 15:07:23 UTC
I would like to track this down and resolve forever as I'm able to reproduce 
this during any reboot; more information from my syslog (all messages below
from Jun 22 18:18:30 -> same second):

kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
kernel: Netfilter messages via NETLINK v0.30.
kernel: ip_conntrack version 2.4 (8191 buckets, 65528 max) - 232 bytes per 
kernel: NET: Registered protocol family 10
kernel: lo: Disabled Privacy Extensions
kernel: IPv6 over IPv4 tunneling driver
kernel: process `sysctl' is using deprecated sysctl (syscall) net.ipv6.neigh.lo.
base_reachable_time; Use net.ipv6.neigh.lo.base_reachable_time_ms instead.
kernel: ADDRCONF(NETDEV_UP): eth0: link is not ready
kernel: tg3: eth0: Link is up at 100 Mbps, full duplex.
kernel: tg3: eth0: Flow control is off for TX and off for RX.
kernel: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

A `grep -r "net.ipv6.neigh.eth0.base_reachable_time" /etc/* 2> /dev/null` 
returned nothing. Any suggestions out of the syslog messages?

Comment 5 Karel Zak 2006-06-23 15:30:39 UTC
Albert, do you have any experience with this strange problem on the latest kernels?

Comment 6 Joe Orton 2006-06-29 15:14:46 UTC
I vaguely recall reading that this message is triggered by the kernel on any
attempt to *read* that sysctl; which sysctl does at some point, possibly it
traverses the whole tree or something?  (I also vaguely recall that it was
generally agreed to be stupid behaviour on the kernel's part)

Comment 7 Joe Orton 2006-06-29 15:20:46 UTC
Ah, yeah; there is a "sysctl -a" in the
/etc/sysconfig/network-scripts/init.ipv6-global.  So my bet is that this error
doesn't manifest if you explicitly disable IPv6 in the init scripts with
NETWORKING_IPV6=no.   I guess that the kernel should probably make that procfs
file unreadable if it doesn't want sysctl to read it, presumably that would
prevent the warning.

Comment 8 Robert Scheck 2006-06-30 09:13:16 UTC
So it's more a kernel issue rather a procps problem? And thanks for figgering 

Comment 9 Joe Orton 2006-07-27 09:28:16 UTC
Yeah, I reckon.   The kernel should not make the proc entry readable if it
doesn't want it to be used.

Comment 10 Albert Cahalan 2006-07-27 16:39:41 UTC
Don't ever make them unreadable. The sysctl command needs to read back the data
to verify that the write was accepted and interpreted correctly. If the data
can not be read, sysctl needs to report the error to the user.

If you want to hide something, then hide it. Make it not show up in a
directory listing.

Every write-only sysctl is a kernel bug.

Comment 11 Dave Jones 2006-07-28 16:24:05 UTC
davem, can we just rip this out ?  What's likely to break ?

Comment 12 Robert Scheck 2006-09-02 15:53:15 UTC

Comment 13 Scott Scriven 2006-11-29 18:58:14 UTC
I get a nearly identical error on RHEL5b2, as of yesterday:

  process `cp' is using deprecated sysctl (syscall) net.ipv6.neigh.eth4.
base_reachable_time; Use net.ipv6.neigh.eth4.base_reachable_time_ms instead.

This was printed to the console during a postinstall sanity check test.  I 
assume the test tried to "cp /proc/sys/net/ipv6/neigh/eth4/base_reachable_time" 
somewhere, though I haven't located it yet.

I also get the original error during boot, or any time I run "sysctl -a".

While the "sysctl -a" is only doing what it's supposed to, it may be worth 
locating any other places in the distro which might try to access the old 
syscall.  A big "grep -r base_reachable_time" and replace through the entire 
distro source could probably do the trick.

As a quick test, I tried looking through binaries in /bin, /sbin, and /usr.  I 
found only a few matches:

[root@host /usr/lib]# grep base_reachable_time *
Binary file matches
Binary file matches
Binary file matches
Binary file matches

Comment 14 Robert Scheck 2006-12-09 18:56:37 UTC

Comment 15 Horst H. von Brand 2007-01-04 23:26:33 UTC
Is this a case of complaints when /reading/ the /proc entry? I'd understand that
one should complain on /writing/...

(Yes, still with us with today's rawhide, kernel-2.6.19-1.2904.fc7 and

Comment 16 David Miller 2007-03-26 19:55:37 UTC
The only valid reason to read a sysctl value is to see what it is
set to, and based upon that potentially change it.  When and if a
value goes away, both reads and writes will break, that's why we warn
for both read and write accesses.

I'm not getting rid of the warning just to satisfy this "sysctl -a"
case.  We are concerned about readers of the sysctl just as
equally as writers, because if the sysctl is taken away it would
break a shell script reading this value just as equally as something
making modifications.

This "sysctl -a" thing makes it absolutely impossible to warn about
a deprecated variable properly.  We are concerned about "access" of
any kind, be it read or write, because once the sysctl goes away both
kinds of accesses will stop working.

The ipv6 init script can be fixed to only access the sysctl values it
is actually interested in rather than everything.  It just wants a list
of sysctl values that ipv6 provides which match a given regexp, you don't
need to open and read the values just to provide that.

Please push this back to the script folks, this construct is quite
inefficient as well since it has to read all the sysctl values in
the system.

Comment 17 Karel Zak 2007-04-04 09:35:49 UTC
I've added to the sysctl command table with deprecated variables. Now, the
"sysctl -a" command does ignore and skip these values. It means that deprecated
values are hidden when (and only when) you list all values:

   sysctl -a | egrep "^net.ipv6..*.base_reachable_time ="

returns nothing. But you can directly use deprecated values (without -a):

   sysctl net.ipv6.neigh.lo.base_reachable_time

returns expected data. I think it's good compromise.

This change doesn't have any impact to our ipv6 init script. The scripts don't
look for these deprecated values.

Comment 18 Robert Scheck 2007-05-28 11:08:38 UTC
Confirmed to work, closing now.

Note You need to log in before you can comment on or make changes to this bug.