Re: Iterating all VNETs from userspace application
- Reply: Özkan KIRIK : "Re: Iterating all VNETs from userspace application"
- In reply to: Özkan KIRIK : "Iterating all VNETs from userspace application"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 18 Oct 2021 07:49:40 UTC
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