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? Thanks, Gerrit _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"