netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
To: "Asbjørn Sloth Tønnesen" <ast@fiberby.net>
Cc: Jakub Kicinski <kuba@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	Donald Hunter <donald.hunter@gmail.com>,
	Simon Horman <horms@kernel.org>,
	Jacob Keller <jacob.e.keller@intel.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	wireguard@lists.zx2c4.com, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, Jordan Rife <jordan@jrife.io>
Subject: Re: [PATCH net-next v3 04/11] netlink: specs: add specification for wireguard
Date: Tue, 18 Nov 2025 16:07:15 +0100	[thread overview]
Message-ID: <aRyLoy2iqbkUipZW@zx2c4.com> (raw)
In-Reply-To: <f21458b6-f169-4cd3-bd1b-16255c78d6cd@fiberby.net>

Hi Asbjørn,

On Tue, Nov 18, 2025 at 12:08:20PM +0000, Asbjørn Sloth Tønnesen wrote:
> > I'll need to do my own reading, I guess, but what is going on with this
> > "legacy" business? Is there some newer genetlink that falls outside of
> > versioning?
> 
> There's a few reasons why the stricter genetlink doesn't fit:
> - Less flexible with C naming (breaking UAPI).
> - Doesn't allow C struct types.
> 
> diff -Naur Documentation/netlink/genetlink{,-legacy}.yaml

Oh, thanks, useful diff. So the protocol didn't change, persay, but the
non-legacy one just firms up some of the floppiness of what was done
before. Makes sense.

> > There's lots of control over the C output here. Why can't there also be
> > a top-level c-function-prefix attribute, so that patch 10/11 is
> > unnecessary? Stack traces for wireguard all include wg_; why pollute
> > this with the new "wireguard_" ones?
> 
> It could also be just "c-prefix".

Works for me.

> >> +      dump:
> >> +        pre: wireguard-nl-get-device-start
> >> +        post: wireguard-nl-get-device-done
> > 
> > Oh, or, the wg_ prefix can be defined here (instead of wireguard_, per
> > my 10/11 comment above).
> 
> The key here is the missing ones, I renamed these for alignment with
> doit and dumpit which can't be customized at this time.

Oh, interesting. So actually, the c-prefix thing would let you ditch
this too, and it'd be more consistent.

> > On the other hand, maybe that's an implementation detail and doesn't
> > need to be specified? Or if you think rigidity is important, we should
> > specify 0 in both directions and then validate it to ensure userspace
> > sends 0 (all userspaces currently do).
> 
> As is, the YNL-based clients are taking advantage of it not being validated.
> Changing that would require adding some new YNL type properties.
> See this series[1] for my earlier attempt to extend YNL in this area.
> 
> [1] https://lore.kernel.org/r/20251022182701.250897-1-ast@fiberby.net/
> 
> The modern way would be to use multi-attrs, but I don't think it's worth it
> to transition, you mainly save a few bytes of overhead.

Oh, huh, interesting. In libmnl, this parameter is referred to as "type"
instead of index, so it was natural to stick 0 there. It looks like so
does Go's netlink library, but in wgctrl-go, Matt stuck index there.

So... darn. We're stuck with this being poorly defined. I guess we can
have as the text something like:

    The index/type parameter is unused on SET_DEVICE operations and is zero on GET_DEVICE operations.

> WGDEVICE_A_IFINDEX
> WGDEVICE_A_PEERS2: NLA_NESTED
>    WGPEER_A_PUBLIC_KEY
>    [..]
>    WGPEER_A_ALLOWEDIPS2: NLA_NESTED
>      WGALLOWEDIP_A_FAMILY
>      [..]
>    WGPEER_A_ALLOWEDIPS2: NLA_NESTED
>      WGALLOWEDIP_A_FAMILY
>      [..]
> WGDEVICE_A_PEERS2: NLA_NESTED
>    [..]

Def not worth it. But good to know about for future protocols.

> >> +        While this command does accept the other ``WGDEVICE_A_*``
> >> +        attributes, for compatibility reasons, but they are ignored
> >> +        by this command, and should not be used in requests.
> > 
> > Either "While" or ", but" but not both.
> > 
> > However, can we actually just make this strict? No userspaces send
> > random attributes in a GET. Nothing should break.
> 
> I agree that nothing should break, just tried to avoid changing UAPI in the
> spec commit, but by moving the split ops conversion patch, then I can eliminate
> this before adding the spec.

Okay, great, let's do that.

Thanks a bunch.

Jason

  reply	other threads:[~2025-11-18 15:07 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-05 18:32 [PATCH net-next v3 00/11] wireguard: netlink: ynl conversion Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 01/11] wireguard: netlink: validate nested arrays in policy Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 02/11] wireguard: netlink: use WG_KEY_LEN in policies Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 03/11] wireguard: netlink: enable strict genetlink validation Asbjørn Sloth Tønnesen
2025-11-18 15:15   ` Jason A. Donenfeld
2025-11-18 17:10   ` Jason A. Donenfeld
2025-11-26 16:24     ` Asbjørn Sloth Tønnesen
2025-11-26 16:26       ` Jason A. Donenfeld
2025-11-05 18:32 ` [PATCH net-next v3 04/11] netlink: specs: add specification for wireguard Asbjørn Sloth Tønnesen
2025-11-18  2:15   ` Jason A. Donenfeld
2025-11-18 12:08     ` Asbjørn Sloth Tønnesen
2025-11-18 15:07       ` Jason A. Donenfeld [this message]
2025-11-18 21:59         ` Asbjørn Sloth Tønnesen
2025-11-18 22:52           ` Jason A. Donenfeld
2025-11-19  0:50             ` Jakub Kicinski
2025-11-19 19:19               ` Asbjørn Sloth Tønnesen
2025-11-19 19:22                 ` Jason A. Donenfeld
2025-11-19 19:47                   ` Asbjørn Sloth Tønnesen
2025-11-19 20:01                     ` Jason A. Donenfeld
2025-11-20  2:27                 ` Jakub Kicinski
2025-11-05 18:32 ` [PATCH net-next v3 05/11] uapi: wireguard: move enum wg_cmd Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 06/11] uapi: wireguard: move flag enums Asbjørn Sloth Tønnesen
2025-11-18 15:10   ` Jason A. Donenfeld
2025-11-05 18:32 ` [PATCH net-next v3 07/11] uapi: wireguard: generate header with ynl-gen Asbjørn Sloth Tønnesen
2025-11-18 15:17   ` Jason A. Donenfeld
2025-11-19  0:53     ` Jakub Kicinski
2025-11-20  0:55       ` Jason A. Donenfeld
2025-11-05 18:32 ` [PATCH net-next v3 08/11] tools: ynl: add sample for wireguard Asbjørn Sloth Tønnesen
2025-11-18 15:20   ` Jason A. Donenfeld
2025-11-18 17:16     ` Asbjørn Sloth Tønnesen
2025-11-18 17:17       ` Jason A. Donenfeld
2025-11-05 18:32 ` [PATCH net-next v3 09/11] wireguard: netlink: convert to split ops Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 10/11] wireguard: netlink: rename netlink handlers Asbjørn Sloth Tønnesen
2025-11-05 18:32 ` [PATCH net-next v3 11/11] wireguard: netlink: generate netlink code Asbjørn Sloth Tønnesen
2025-11-18 15:15   ` Jason A. Donenfeld
2025-11-18 16:57     ` Jason A. Donenfeld
2025-11-18 22:23     ` Asbjørn Sloth Tønnesen
2025-11-18 22:51       ` Jason A. Donenfeld
2025-11-19  1:00         ` Jakub Kicinski
2025-11-20  0:54           ` Jason A. Donenfeld
2025-11-20  2:44             ` Jakub Kicinski
2025-11-20  2:46               ` Jason A. Donenfeld
2025-11-20  3:19                 ` Jakub Kicinski
2025-11-20 19:49             ` Asbjørn Sloth Tønnesen
2025-11-11  2:07 ` [PATCH net-next v3 00/11] wireguard: netlink: ynl conversion Jakub Kicinski
2025-11-12  3:59   ` Jason A. Donenfeld
2025-11-18  0:14     ` Jakub Kicinski
2025-11-18  0:43       ` Jason A. Donenfeld
2025-11-18  0:56         ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aRyLoy2iqbkUipZW@zx2c4.com \
    --to=jason@zx2c4.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=ast@fiberby.net \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jacob.e.keller@intel.com \
    --cc=jordan@jrife.io \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=wireguard@lists.zx2c4.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).