Re: Iterating all VNETs from userspace application
Date: Mon, 18 Oct 2021 08:07:26 UTC
Thank you Bjoern, I'll have al On Mon, Oct 18, 2021 at 10:49 AM Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> wrote: > > On 18 Oct 2021, at 4:46, Özkan KIRIK wrote: > > > Hi, > > > > I'm trying to gather all even within jails/vnet interface stats which > > interface type ifmd_data.ifi_type == IFT_ETHER (6) for bsnmpd. Related > > function (not modified) is here: > > > > https://github.com/freebsd/freebsd-src/blob/main/contrib/bsnmp/snmp_mibII/mibII.c#L926-L985 > > > > It's possible to add a filter interface type adding a line below line > > 961: > > if (mib.ifmd_data.ifi_type != IFT_ETHER) return; > > > > I'm looking for a way to iterate VNET instances, but net/vnet.h is > > only for kernel space. > > VNET_LIST_RLOCK_NOSLEEP(); > > VNET_FOREACH(vnet_iter) { > > CURVNET_SET(vnet_iter); > > mib_refresh_iflist(); > > CURVNET_RESTORE(); > > } > > VNET_LIST_RUNLOCK_NOSLEEP(); > > The code above not working in userspace. > > > > Also I wonder that if it's possible to switch between jails. The > > pseudo code I want to write: > > > > JAIL_FOREACH(jail_iter) { > > jail_attach(jail_iter); > > mib_refresh_iflist(); > > jail_detach(); > > } > > > > What is the right way to gather all interface stats ? > > Have a look at libkvm; I seem to remember adding vnet support. > > /bz >