Non-contiguous ifIndex problems with ifMib sysctl
Brooks Davis
brooks at one-eyed-alien.net
Wed Oct 22 11:09:40 PDT 2003
On Wed, Oct 22, 2003 at 01:41:57PM -0400, Gerrit Nagelhout wrote:
> Hi,
>
> I am trying to debug a crash (null pointer access) in sysctl_ifdata (in
> if_mib.c). What I have noticed is that if interfaces (in this case vlans)
> are created and destroyed dynamically, it is possible to create "holes" in
> the ifnet_addrs structure. For example, if I start with the following
> interfaces:
> 1 em0
> 2 em1
> 3 lo0
>
> and then do:
> ifconfig vlan1 create
> ifconfig vlan2 create
> ifconfig vlan1 destroy
>
> I end up with:
> 1 em0
> 2 em1
> 3 lo0
> 4 0
> 5 vlan2
>
> In this case, the net.link.generic.system.ifcount is set to 4. If an
> application (like slurm) then calls sysctl on
> net.link.generic.ifdata.<ifindex>, and loops from 1 to 5 for ifIndex, it
> will crash when it gets to 4 because there are no checks for these holes,
> and 4 is less than if_index.
> I have also noticed that an snmpwalk to a system like this will have the
> proper interface count, but will only show the interfaces before the hole.
> It's easy enough to add the null check in sysctl_ifdata, and just return
> ENOENT, but that won't fix the snmpwalk problem. How should applications
> generally deal with this?
This was fixed in current with ENOENT two years ago, but the author
forgot to MFC the change. Given how long this has been broken (since we
got removable devices), I'm inclined to wait until after 4.9 comes out
to do the MFC rather then trying to get it in under the wire.
I don't see the behavior you describe with ifcount. The ifcount sysctl
is just an export if_index which is the last index, not the number of
interfaces. This might be considered a bug in ifcount's implementation.
-- Brooks
--
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20031022/bd53195b/attachment.bin
More information about the freebsd-net
mailing list