On 12.07.2011 11:10, Garrett Cooper wrote:
On Mon, Jul 11, 2011 at 11:16 PM, Alexander V. Chernikov
<melif...@ipfw.ru>  wrote:
Garrett Cooper wrote:
Hi,
     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.
Thanks!

Hello!

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)?
I don't know - It was too long ago :)
Walking RADIX directly gives an advantage of accessing its internal fields like "refcount" and "use" values which we are get used to see in
'netstat -rn' output, for example.

Thanks,
-Garrett


_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to