Support for nv(9) in if_clone

From: Seyed Pouria Mousavizadeh Tehrani <info_at_spmzt.net>
Date: Wed, 15 Oct 2025 07:45:03 UTC
Hi,

Currently our ifreq interface supports nv(9) lists via ifreq_nv_req. 
This allows network interface drivers to implement their configuration 
using nvlists (for example: if_ovpn, if_pf*).

There is a problem: an interface that is implemented entirely via nv(9) 
cannot be configured during the cloning phase (via if_clone_create). 
if_clone_create converts the ifreq struct to ifdrv and only copies 
ifr_data to params, so the ifru_nv field is lost during cloning.

I am interested in implementing a solution to this issue and am 
considering two possible approaches:

 1. Extend the ifdrv struct to include the ifreq_nv_req struct, and
    verify/make sure that other implemented modules are not affected.
 2. Introduce a new ioctl, SIOCIFCREATENV, to handle the nv part
    separately, which would be more complicated but potentially less
    disruptive to existing modules.

Which one do you think would be more suitable, or do you have any 
alternative suggestions?

--
spmzt