Re: Iterating all VNETs from userspace application

From: Özkan KIRIK <ozkan.kirik_at_gmail.com>
Date: Mon, 18 Oct 2021 08:07:55 UTC
I'll have a look

On Mon, Oct 18, 2021 at 11:07 AM Özkan KIRIK <ozkan.kirik@gmail.com> wrote:
>
> 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
> >