From: "Jason A. Donenfeld" <Jason@zx2c4.com>
To: "Asbjørn Sloth Tønnesen" <ast@fiberby.net>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, 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 03:15:40 +0100 [thread overview]
Message-ID: <aRvWzC8qz3iXDAb3@zx2c4.com> (raw)
In-Reply-To: <20251105183223.89913-5-ast@fiberby.net>
On Wed, Nov 05, 2025 at 06:32:13PM +0000, Asbjørn Sloth Tønnesen wrote:
> +name: wireguard
> +protocol: genetlink-legacy
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?
> +c-family-name: wg-genl-name
> +c-version-name: wg-genl-version
> +max-by-define: true
> +
> +definitions:
> + -
> + name-prefix: wg-
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?
> + doc: The index is set as ``0`` in ``DUMP``, and unused in ``DO``.
I think get/set might match the operations better than the underlying
netlink verbs? This is a doc comment specific to getting and setting.
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).
> + The kernel will then return several messages (``NLM_F_MULTI``).
> + It is possible that all of the allowed IPs of a single peer
> + will not fit within a single netlink message. In that case, the
> + same peer will be written in the following message, except it will
> + only contain ``WGPEER_A_PUBLIC_KEY`` and ``WGPEER_A_ALLOWEDIPS``.
> + This may occur several times in a row for the same peer.
> + It is then up to the receiver to coalesce adjacent peers.
> + Likewise, it is possible that all peers will not fit within a
> + single message.
> + So, subsequent peers will be sent in following messages,
> + except those will only contain ``WGDEVICE_A_IFNAME`` and
> + ``WGDEVICE_A_PEERS``. It is then up to the receiver to coalesce
> + these messages to form the complete list of peers.
There's an extra line break before the "So," that wasn't there in the
original.
> + 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.
> + 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).
> + # request only uses ifindex | ifname, but keep .maxattr as is
> + request: &all-attrs
> + attributes:
> + - ifindex
> + - ifname
> + - private-key
> + - public-key
> + - flags
> + - listen-port
> + - fwmark
> + - peers
As mentioned earlier, maybe this can be reduced to ifindex+ifname.
> + It is possible that the amount of configuration data exceeds that
> + of the maximum message length accepted by the kernel.
> + In that case, several messages should be sent one after another,
> + with each successive one filling in information not contained in
> + the prior.
> + Note that if ``WGDEVICE_F_REPLACE_PEERS`` is specified in the first
> + message, it probably should not be specified in fragments that come
> + after, so that the list of peers is only cleared the first time but
> + appended after.
> + Likewise for peers, if ``WGPEER_F_REPLACE_ALLOWEDIPS`` is specified
> + in the first message of a peer, it likely should not be specified
> + in subsequent fragments.
More odd linebreaks added. Either it's a new paragraph or it isn't. Keep
this how it was before?
Jason
next prev parent reply other threads:[~2025-11-18 2:15 UTC|newest]
Thread overview: 48+ 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 [this message]
2025-11-18 12:08 ` Asbjørn Sloth Tønnesen
2025-11-18 15:07 ` Jason A. Donenfeld
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-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=aRvWzC8qz3iXDAb3@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