[PATCH] Remove dead code in netstat from route.c
yanegomi at gmail.com
Tue Jul 12 07:11:00 UTC 2011
On Mon, Jul 11, 2011 at 11:16 PM, Alexander V. Chernikov
<melifaro at ipfw.ru> wrote:
> Garrett Cooper wrote:
>> While trying to determine how to print out routes via kvm for
>> net-snmp, I noticed that there's a chunk of code from the 4.4 BSD Lite
>> days that isn't executed in netstat as NewTree is always 0. The
>> following patch removes that dead code and gets the FreeBSD source for
>> netstat more in line with NetBSD and OpenBSD's copy.
> This code is still working (I've tested it several months ago). Using
> RT_DUMP sysctl gives us less information than KVM, but this is much more
> better way of requesting infromation:
> KVM heavily assumes RADIX rtee is used and simply implement walking the
> tree in userland (p_tree()) which is quite hackish. Since some dynamic
> routing software can change massive amounts of data at once (BGP session
> with full-view going up/down) or physical interface with several hundred
> vlans goes up/down - requesting routing data via KVM can lead to fully
> unexpected behaviour. Calling this on regular basis on net-snmp is not
> the best thing one can do.
> Additionally, there can be address families where RADIX is unnecessary
> complicated since only direct key match is required (MPLS, for example).
> Moving from RADIX implementation for such family will require a lot of
> 'if (af == AF_MPLS)' code in many base userland utilities since
> assumption that RADIX is used do exists in many places, unfortunately.
> Requesting routes via KVM is completely undocumented and kernel
> internals dependent way. From the other side, NET_RT_DUMP sysctl is
> documented in sysctl(3) and is used by all major routing software
> (quagga, bird,openbgp). It also brings us more RADIX-dependent which
> should be avoided.
That's a compelling argument, but why is NewTree hardwired to 0
then (apart from the fact that kvm works with non-live kernel images)?
More information about the freebsd-hackers