From nobody Wed Oct 15 07:45:03 2025 X-Original-To: freebsd-net@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cmjmc1rFVz6CttL for ; Wed, 15 Oct 2025 07:45:20 +0000 (UTC) (envelope-from info@spmzt.net) Received: from mail.spmzt.net (ch.mail.spmzt.net [IPv6:2a01:e140:11:1::25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4cmjmZ4xc1z3Txv for ; Wed, 15 Oct 2025 07:45:18 +0000 (UTC) (envelope-from info@spmzt.net) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=spmzt.net header.s=mail header.b=SgrN78ok; dmarc=pass (policy=quarantine) header.from=spmzt.net; spf=pass (mx1.freebsd.org: domain of info@spmzt.net designates 2a01:e140:11:1::25 as permitted sender) smtp.mailfrom=info@spmzt.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spmzt.net; s=mail; t=1760514309; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=vA6Ka+qr4HsUktE5n7OV+ejodSXNfll98T0DzE1UsEk=; b=SgrN78okMWvM+QFu5swAH7jmQVPRe76T2g3OX8SLXugKNuduTyTAYOPicIIjFrHXZSuhj8 r/cVfn6KdG/0LoJxJyG5ttiN92vn2H139tGlOiuslmLUkBGMyyDh8+T8a44b9KwgnsZ6BF 9mr10VdtNZ0Dnx6vj4+iC9uLNiMG3DM= Received: by ch.mail.spmzt.net (OpenSMTPD) with ESMTPSA id 334e6233 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 15 Oct 2025 11:15:09 +0330 (+0330) Message-ID: <64262fc7-2c29-4749-94dc-1de2b464f270@spmzt.net> Date: Wed, 15 Oct 2025 11:15:03 +0330 List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Seyed Pouria Mousavizadeh Tehrani Subject: Support for nv(9) in if_clone To: freebsd-net@freebsd.org Content-Language: en-US, fa-IR Organization: SPMZT - AS214145 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------Z03Ryq1ePNoYkxD83Gq2uVD0" X-Spamd-Bar: ---- X-Spamd-Result: default: False [-5.00 / 15.00]; SIGNED_PGP(-2.00)[]; MIME_BASE64_TEXT_BOGUS(1.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[spmzt.net,quarantine]; MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,multipart/alternative,text/plain]; R_DKIM_ALLOW(-0.20)[spmzt.net:s=mail]; R_SPF_ALLOW(-0.20)[+mx]; MIME_BASE64_TEXT(0.10)[]; HAS_ATTACHMENT(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; HAS_ORG_HEADER(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_ONE(0.00)[1]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[spmzt.net:+]; MLMMJ_DEST(0.00)[freebsd-net@freebsd.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; ASN(0.00)[asn:214145, ipnet:2a01:e140:11::/48, country:IR]; ARC_NA(0.00)[] X-Rspamd-Queue-Id: 4cmjmZ4xc1z3Txv This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------Z03Ryq1ePNoYkxD83Gq2uVD0 Content-Type: multipart/mixed; boundary="------------9wq08ZILA4WavKoVBVGxosl0"; protected-headers="v1" From: Seyed Pouria Mousavizadeh Tehrani To: freebsd-net@freebsd.org Message-ID: <64262fc7-2c29-4749-94dc-1de2b464f270@spmzt.net> Subject: Support for nv(9) in if_clone --------------9wq08ZILA4WavKoVBVGxosl0 Content-Type: multipart/alternative; boundary="------------2bAdYUe6PGLfaMo7XtZQGDVk" --------------2bAdYUe6PGLfaMo7XtZQGDVk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCkN1cnJlbnRseSBvdXIgaWZyZXEgaW50ZXJmYWNlIHN1cHBvcnRzIG52KDkpIGxp c3RzIHZpYSBpZnJlcV9udl9yZXEuIA0KVGhpcyBhbGxvd3MgbmV0d29yayBpbnRlcmZhY2Ug ZHJpdmVycyB0byBpbXBsZW1lbnQgdGhlaXIgY29uZmlndXJhdGlvbiANCnVzaW5nIG52bGlz dHMgKGZvciBleGFtcGxlOiBpZl9vdnBuLCBpZl9wZiopLg0KDQpUaGVyZSBpcyBhIHByb2Js ZW06IGFuIGludGVyZmFjZSB0aGF0IGlzIGltcGxlbWVudGVkIGVudGlyZWx5IHZpYSBudig5 KSANCmNhbm5vdCBiZSBjb25maWd1cmVkIGR1cmluZyB0aGUgY2xvbmluZyBwaGFzZSAodmlh IGlmX2Nsb25lX2NyZWF0ZSkuIA0KaWZfY2xvbmVfY3JlYXRlIGNvbnZlcnRzIHRoZSBpZnJl cSBzdHJ1Y3QgdG8gaWZkcnYgYW5kIG9ubHkgY29waWVzIA0KaWZyX2RhdGEgdG8gcGFyYW1z LCBzbyB0aGUgaWZydV9udiBmaWVsZCBpcyBsb3N0IGR1cmluZyBjbG9uaW5nLg0KDQpJIGFt IGludGVyZXN0ZWQgaW4gaW1wbGVtZW50aW5nIGEgc29sdXRpb24gdG8gdGhpcyBpc3N1ZSBh bmQgYW0gDQpjb25zaWRlcmluZyB0d28gcG9zc2libGUgYXBwcm9hY2hlczoNCg0KIDEuIEV4 dGVuZCB0aGUgaWZkcnYgc3RydWN0IHRvIGluY2x1ZGUgdGhlIGlmcmVxX252X3JlcSBzdHJ1 Y3QsIGFuZA0KICAgIHZlcmlmeS9tYWtlIHN1cmUgdGhhdCBvdGhlciBpbXBsZW1lbnRlZCBt b2R1bGVzIGFyZSBub3QgYWZmZWN0ZWQuDQogMi4gSW50cm9kdWNlIGEgbmV3IGlvY3RsLCBT SU9DSUZDUkVBVEVOViwgdG8gaGFuZGxlIHRoZSBudiBwYXJ0DQogICAgc2VwYXJhdGVseSwg d2hpY2ggd291bGQgYmUgbW9yZSBjb21wbGljYXRlZCBidXQgcG90ZW50aWFsbHkgbGVzcw0K ICAgIGRpc3J1cHRpdmUgdG8gZXhpc3RpbmcgbW9kdWxlcy4NCg0KV2hpY2ggb25lIGRvIHlv dSB0aGluayB3b3VsZCBiZSBtb3JlIHN1aXRhYmxlLCBvciBkbyB5b3UgaGF2ZSBhbnkgDQph bHRlcm5hdGl2ZSBzdWdnZXN0aW9ucz8NCg0KLS0NCnNwbXp0DQoNCg== --------------2bAdYUe6PGLfaMo7XtZQGDVk Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

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
--------------2bAdYUe6PGLfaMo7XtZQGDVk-- --------------9wq08ZILA4WavKoVBVGxosl0-- --------------Z03Ryq1ePNoYkxD83Gq2uVD0 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQSqt7cppfvJ816gj0lUwVnUeMwagAUCaO9Q/wAKCRBUwVnUeMwa gB51AQDir1XteA1qK5Lyyn4p0qyHZKh7o7kPddWI2O2wQEoh/AEA/3A9iWHGa0wQ y7euY9mFO+wv1erHQr83iWVvBdLKywU= =yj0d -----END PGP SIGNATURE----- --------------Z03Ryq1ePNoYkxD83Gq2uVD0--