All of lore.kernel.org
 help / color / mirror / Atom feed
From: Donald Hunter <donald.hunter@gmail.com>
To: netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>, Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org,
	Jacob Keller <jacob.e.keller@intel.com>
Cc: donald.hunter@redhat.com, Donald Hunter <donald.hunter@gmail.com>
Subject: [PATCH net-next v2 06/11] doc/netlink: Document the sub-message format for netlink-raw
Date: Mon, 11 Dec 2023 16:40:34 +0000	[thread overview]
Message-ID: <20231211164039.83034-7-donald.hunter@gmail.com> (raw)
In-Reply-To: <20231211164039.83034-1-donald.hunter@gmail.com>

Document the spec format used by netlink-raw families like rt and tc.

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
---
 .../userspace-api/netlink/netlink-raw.rst     | 75 ++++++++++++++++++-
 1 file changed, 74 insertions(+), 1 deletion(-)

diff --git a/Documentation/userspace-api/netlink/netlink-raw.rst b/Documentation/userspace-api/netlink/netlink-raw.rst
index f07fb9b9c101..e1d3e5ecfc6a 100644
--- a/Documentation/userspace-api/netlink/netlink-raw.rst
+++ b/Documentation/userspace-api/netlink/netlink-raw.rst
@@ -14,7 +14,8 @@ Specification
 The netlink-raw schema extends the :doc:`genetlink-legacy <genetlink-legacy>`
 schema with properties that are needed to specify the protocol numbers and
 multicast IDs used by raw netlink families. See :ref:`classic_netlink` for more
-information.
+information. The raw netlink families also make use of type-specific
+sub-messages.
 
 Globals
 -------
@@ -56,3 +57,75 @@ group registration.
       -
         name: rtnlgrp-mctp-ifaddr
         value: 34
+
+Sub-messages
+------------
+
+Several raw netlink families such as rt_link and tc have type-specific
+sub-messages. These sub-messages can appear as an attribute in a top-level or a
+nested attribute space.
+
+A sub-message attribute uses the value of another attribute as a selector key to
+choose the right sub-message format. For example if the following attribute has
+already been decoded:
+
+.. code-block:: json
+
+  { "kind": "gre" }
+
+and we encounter the following attribute spec:
+
+.. code-block:: yaml
+
+  -
+    name: data
+    type: sub-message
+    sub-message: linkinfo-data-msg
+    selector: kind
+
+Then we look for a sub-message definition called 'linkinfo-data-msg' and use the
+value of the 'kind' attribute i.e. 'gre' as the key to choose the correct format
+for the sub-message:
+
+.. code-block:: yaml
+
+  sub-messages:
+    name: linkinfo-data-msg
+    formats:
+      -
+        value: bridge
+        attribute-set: linkinfo-bridge-attrs
+      -
+        value: gre
+        attribute-set: linkinfo-gre-attrs
+      -
+        value: geneve
+        attribute-set: linkinfo-geneve-attrs
+
+This would decode the attribute value as a sub-message with the attribute-set
+called 'linkinfo-gre-attrs' as the attribute space.
+
+A sub-message can have an optional 'fixed-header' followed by zero or more
+attributes from an attribute-set. For example the following 'tc-options-msg'
+sub-message defines message formats that use a mixture of fixed-header,
+attribute-set or both together:
+
+.. code-block:: yaml
+
+  sub-messages:
+    -
+      name: tc-options-msg
+      formats:
+        -
+          value: bfifo
+          fixed-header: tc-fifo-qopt
+        -
+          value: cake
+          attribute-set: tc-cake-attrs
+        -
+          value: netem
+          fixed-header: tc-netem-qopt
+          attribute-set: tc-netem-attrs
+
+Note that a selector attribute must appear in a netlink message before any
+sub-message attributes that depend on it.
-- 
2.42.0


  parent reply	other threads:[~2023-12-11 16:41 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11 16:40 [PATCH net-next v2 00/11] tools/net/ynl: Add 'sub-message' support to ynl Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 01/11] tools/net/ynl-gen-rst: Use bullet lists for attribute-set entries Donald Hunter
2023-12-11 23:28   ` Jakub Kicinski
2023-12-12 11:27     ` Donald Hunter
2023-12-12 16:11       ` Jakub Kicinski
2023-12-11 16:40 ` [PATCH net-next v2 02/11] tools/net/ynl-gen-rst: Sort the index of generated netlink specs Donald Hunter
2023-12-11 23:30   ` Jakub Kicinski
2023-12-12 11:30     ` Donald Hunter
2023-12-12 16:13       ` Jakub Kicinski
2023-12-12 20:42     ` Breno Leitao
2023-12-11 16:40 ` [PATCH net-next v2 03/11] doc/netlink: Regenerate netlink .rst files if ynl-gen-rst changes Donald Hunter
2023-12-11 23:30   ` Jakub Kicinski
2023-12-12 20:39   ` Breno Leitao
2023-12-12 21:48     ` Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 04/11] tools/net/ynl: Use consistent array index expression formatting Donald Hunter
2023-12-11 23:30   ` Jakub Kicinski
2023-12-11 16:40 ` [PATCH net-next v2 05/11] doc/netlink: Add sub-message support to netlink-raw Donald Hunter
2023-12-11 23:37   ` Jakub Kicinski
2023-12-12 11:30     ` Donald Hunter
2023-12-11 16:40 ` Donald Hunter [this message]
2023-12-12  1:56   ` [PATCH net-next v2 06/11] doc/netlink: Document the sub-message format for netlink-raw Jakub Kicinski
2023-12-12 11:32     ` Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 07/11] tools/net/ynl: Add 'sub-message' attribute decoding to ynl Donald Hunter
2023-12-12  2:00   ` Jakub Kicinski
2023-12-11 16:40 ` [PATCH net-next v2 08/11] tools/net/ynl: Add binary and pad support to structs for tc Donald Hunter
2023-12-12  2:04   ` Jakub Kicinski
2023-12-12 11:36     ` Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 09/11] doc/netlink/specs: add sub-message type to rt_link family Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 10/11] doc/netlink/specs: Add a spec for tc Donald Hunter
2023-12-11 16:40 ` [PATCH net-next v2 11/11] tools/net/ynl-gen-rst: Add sub-messages to generated docs Donald Hunter
2023-12-12 20:42   ` Breno Leitao
2023-12-11 23:32 ` [PATCH net-next v2 00/11] tools/net/ynl: Add 'sub-message' support to ynl Jakub Kicinski
2023-12-12 11:38   ` Donald Hunter
2023-12-12 16:14     ` 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=20231211164039.83034-7-donald.hunter@gmail.com \
    --to=donald.hunter@gmail.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@redhat.com \
    --cc=edumazet@google.com \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.