sysctl is using deprecated syscall (fwd)
Pekka Savola
pekkas at netcore.fi
Wed Apr 11 12:12:44 UTC 2007
Forwarding for Peter, with a later comment added in.
---------- Forwarded message ----------
Date: Wed, 11 Apr 2007 11:30:46 +0200
From: Peter Bieringer <pb at bieringer.de>
To: Pekka Savola <pekkas at netcore.fi>
Cc: Development discussions related to Fedora Core
<fedora-devel-list at redhat.com>
Subject: Re: sysctl is using deprecated syscall
Hi Pekka and others,
At 11.04.2007 08:20, Pekka Savola wrote:
> (I added Peter in Cc: as he's probably not following this.)
Thank you for notifying, perhaps list moderator has to release my reply
now...
> On Tue, 10 Apr 2007, Miloslav Trmac wrote:
>> Hello,
>> Tomas Smetana napsal(a):
>>> The problem is that any attempt to read a deprecated sysctl ends up
>>> with kernel warning in the log. Thus "sysctl -a" produces warnings and
>>> since "sysctl -a" is used in init scripts
>>> (/etc/sysconfig/network-scripts/init.ipv6-global),
>>
>> While I have no opinion about the general case, can't the (sysctl -a
>> |grep "^net\.ipv6.conf\.") be replaced by (sysctl net.ipv6.conf) ?
>
> The reason is probably that when the initscripts were created 'sysctl
> net.ipv6.conf' wasn't supported. For example, it doesn't work (returns
> nothing) on RHL73 and RHL9 (and I suspect RHEL21 and RHEL3).
> It works on RHEL4 though.
>
> I'm also not sure (didn't check) if the failure mode is different when
> IPv6 hasn't been loaded. The grep returns an empty set, sysctl returns
> an error and a return code. Either could be made to work.
In this place, "sysctl -a" only retrieves the existing interface list
plus "all" and "default". This can be completly rewritten, if required.
Interface list is as far as I tested currently available via
# cat /proc/net/if_inet6 | awk '{ print $6 }' | sort -u
So we can rewrite this with e.g.
echo -e "all\ndefault\n`cat /proc/net/if_inet6 | awk '{ print $6 }' | sort -u`"
Instead of using /proc/net/if_inet6 also "ip" can be used:
# ip link | grep -w mtu | awk '{ print $2 }' | sed 's/://g'
echo -e "all\ndefault\n`ip link | grep -w mtu | awk '{ print $2 }' | sed
's/://g'`"
[[ Comment later on: This was not a good idea, because the list also
contains IPv4 only interfaces like "ppp", so "sysctl -w ..." would
throw an error.
Is there no tool available which retrieves the interface list from
kernel with the used protocols? ]]
The first should probably be the preferred one.
I will update my initscripts afterwards.
Peter
--
Dr. Peter Bieringer http://www.bieringer.de/pb/
GPG/PGP Key 0x958F422D mailto:pb at bieringer.de
Deep Space 6 Co-Founder and Core Member http://www.deepspace6.net/
OpenBC http://www.openbc.com/hp/Peter_Bieringer/
Personal invitation to OpenBC http://www.openbc.com/go/invita/3889
More information about the fedora-devel-list
mailing list