From: Matthieu Baerts <matttbe@kernel.org>
To: mptcp@lists.linux.dev, "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
Mat Martineau <martineau@kernel.org>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Davide Caratti <dcaratti@redhat.com>,
Matthieu Baerts <matttbe@kernel.org>
Subject: [PATCH net-next 3/6] Documentation: netlink: add a YAML spec for mptcp
Date: Tue, 10 Oct 2023 21:21:44 +0200 [thread overview]
Message-ID: <20231010-upstream-net-next-20231006-mptcp-ynl-v1-3-18dd117e8f50@kernel.org> (raw)
In-Reply-To: <20231010-upstream-net-next-20231006-mptcp-ynl-v1-0-18dd117e8f50@kernel.org>
From: Davide Caratti <dcaratti@redhat.com>
it describes most of the current netlink interface (uAPI definitions,
doit/dumpit operations and attributes)
Link: https://github.com/multipath-tcp/mptcp_net-next/issues/340
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
---
Documentation/netlink/specs/mptcp.yaml | 394 +++++++++++++++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 395 insertions(+)
diff --git a/Documentation/netlink/specs/mptcp.yaml b/Documentation/netlink/specs/mptcp.yaml
new file mode 100644
index 000000000000..f8ebcd009592
--- /dev/null
+++ b/Documentation/netlink/specs/mptcp.yaml
@@ -0,0 +1,394 @@
+# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
+
+name: mptcp_pm
+protocol: genetlink-legacy
+doc: Multipath TCP.
+
+c-family-name: mptcp_pm_name
+c-version-name: mptcp_pm_ver
+max-by-define: true
+kernel-policy: per-op
+
+definitions:
+ -
+ type: enum
+ name: event-type
+ enum-name: mptcp_event_type
+ name-prefix: mptcp_event_
+ entries:
+ -
+ name: unspec
+ value: 0
+ -
+ name: created
+ doc:
+ token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
+ A new MPTCP connection has been created. It is the good time to
+ allocate memory and send ADD_ADDR if needed. Depending on the
+ traffic-patterns it can take a long time until the
+ MPTCP_EVENT_ESTABLISHED is sent.
+ -
+ name: established
+ doc:
+ token, family, saddr4 | saddr6, daddr4 | daddr6, sport, dport
+ A MPTCP connection is established (can start new subflows).
+ -
+ name: closed
+ doc:
+ token
+ A MPTCP connection has stopped.
+ -
+ name: announced
+ value: 6
+ doc:
+ token, rem_id, family, daddr4 | daddr6 [, dport]
+ A new address has been announced by the peer.
+ -
+ name: removed
+ value: 7
+ doc:
+ token, rem_id
+ An address has been lost by the peer.
+ -
+ name: sub_established
+ value: 10
+ doc:
+ token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
+ dport, backup, if_idx [, error]
+ A new subflow has been established. 'error' should not be set.
+ -
+ name: sub_closed
+ value: 11
+ doc:
+ token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
+ dport, backup, if_idx [, error]
+ A subflow has been closed. An error (copy of sk_err) could be set if an
+ error has been detected for this subflow.
+ -
+ name: sub_priority
+ value: 13
+ doc:
+ token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | daddr6, sport,
+ dport, backup, if_idx [, error]
+ The priority of a subflow has changed. 'error' should not be set.
+ -
+ name: listener_created
+ value: 15
+ doc:
+ family, sport, saddr4 | saddr6
+ A new PM listener is created.
+ -
+ name: listener_closed
+ value: 16
+ doc:
+ family, sport, saddr4 | saddr6
+ A PM listener is closed.
+
+attribute-sets:
+ -
+ name: address
+ name-prefix: mptcp_pm_addr_attr_
+ attributes:
+ -
+ name: unspec
+ type: unused
+ value: 0
+ -
+ name: family
+ type: u16
+ -
+ name: id
+ type: u8
+ -
+ name: addr4
+ type: u32
+ byte-order: big-endian
+ -
+ name: addr6
+ type: binary
+ checks:
+ min-len: 16
+ -
+ name: port
+ type: u16
+ byte-order: big-endian
+ -
+ name: flags
+ type: u32
+ -
+ name: if_idx
+ type: s32
+ -
+ name: subflow-attribute
+ name-prefix: mptcp_subflow_attr_
+ attributes:
+ -
+ name: unspec
+ type: unused
+ value: 0
+ -
+ name: token_rem
+ type: u32
+ -
+ name: token_loc
+ type: u32
+ -
+ name: relwrite_seq
+ type: u32
+ -
+ name: map_seq
+ type: u64
+ -
+ name: map_sfseq
+ type: u32
+ -
+ name: ssn_offset
+ type: u32
+ -
+ name: map_datalen
+ type: u16
+ -
+ name: flags
+ type: u32
+ -
+ name: id_rem
+ type: u8
+ -
+ name: id_loc
+ type: u8
+ -
+ name: pad
+ type: pad
+ -
+ name: endpoint
+ name-prefix: mptcp_pm_endpoint_
+ attributes:
+ -
+ name: addr
+ type: nest
+ nested-attributes: address
+ -
+ name: attr
+ name-prefix: mptcp_pm_attr_
+ attributes:
+ -
+ name: unspec
+ type: unused
+ value: 0
+ -
+ name: addr
+ type: nest
+ nested-attributes: address
+ -
+ name: rcv_add_addrs
+ type: u32
+ -
+ name: subflows
+ type: u32
+ -
+ name: token
+ type: u32
+ -
+ name: loc_id
+ type: u8
+ -
+ name: addr_remote
+ type: nest
+ nested-attributes: address
+ -
+ name: event_attr
+ enum-name: mptcp_event_attr
+ name-prefix: mptcp_attr_
+ attributes:
+ -
+ name: UNSPEC
+ type: unused
+ value: 0
+ -
+ name: token
+ type: u32
+ -
+ name: family
+ type: u16
+ -
+ name: loc_id
+ type: u8
+ -
+ name: rem_id
+ type: u8
+ -
+ name: saddr4
+ type: u32
+ byte-order: big-endian
+ -
+ name: saddr6
+ type: binary
+ checks:
+ min-len: 16
+ -
+ name: daddr4
+ type: u32
+ byte-order: big-endian
+ -
+ name: daddr6
+ type: binary
+ checks:
+ min-len: 16
+ -
+ name: sport
+ type: u16
+ byte-order: big-endian
+ -
+ name: dport
+ type: u16
+ byte-order: big-endian
+ -
+ name: backup
+ type: u8
+ -
+ name: error
+ type: u8
+ -
+ name: flags
+ type: u16
+ -
+ name: timeout
+ type: u32
+ -
+ name: if_idx
+ type: u32
+ -
+ name: reset_reason
+ type: u32
+ -
+ name: reset_flags
+ type: u32
+ -
+ name: server_side
+ type: u8
+
+operations:
+ list:
+ -
+ name: unspec
+ doc: unused
+ value: 0
+ -
+ name: add_addr
+ doc: Add endpoint
+ attribute-set: endpoint
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &add_addr_attrs
+ request:
+ attributes:
+ - addr
+ -
+ name: del_addr
+ doc: Delete endpoint
+ attribute-set: endpoint
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: *add_addr_attrs
+ -
+ name: get_addr
+ doc: Get endpoint information
+ attribute-set: endpoint
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &get_addr_attrs
+ request:
+ attributes:
+ - addr
+ reply:
+ attributes:
+ - addr
+ dump:
+ reply:
+ attributes:
+ - addr
+ -
+ name: flush_addrs
+ doc: flush addresses
+ attribute-set: endpoint
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: *add_addr_attrs
+ -
+ name: set_limits
+ doc: Set protocol limits
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &mptcp_limits
+ request:
+ attributes:
+ - rcv_add_addrs
+ - subflows
+ -
+ name: get_limits
+ doc: Get protocol limits
+ attribute-set: attr
+ dont-validate: [ strict ]
+ do: &mptcp_get_limits
+ request:
+ attributes:
+ - rcv_add_addrs
+ - subflows
+ reply:
+ attributes:
+ - rcv_add_addrs
+ - subflows
+ -
+ name: set_flags
+ doc: Change endpoint flags
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &mptcp_set_flags
+ request:
+ attributes:
+ - addr
+ - token
+ - addr_remote
+ -
+ name: announce
+ doc: announce new sf
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &announce_add
+ request:
+ attributes:
+ - addr
+ - token
+ -
+ name: remove
+ doc: announce removal
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do:
+ request:
+ attributes:
+ - token
+ - loc_id
+ -
+ name: subflow_create
+ doc: todo
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: &sf_create
+ request:
+ attributes:
+ - addr
+ - token
+ - addr_remote
+ -
+ name: subflow_destroy
+ doc: todo
+ attribute-set: attr
+ dont-validate: [ strict ]
+ flags: [ uns-admin-perm ]
+ do: *sf_create
diff --git a/MAINTAINERS b/MAINTAINERS
index 1bd96045beb8..ab699a697616 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14960,6 +14960,7 @@ W: https://github.com/multipath-tcp/mptcp_net-next/wiki
B: https://github.com/multipath-tcp/mptcp_net-next/issues
T: git https://github.com/multipath-tcp/mptcp_net-next.git export-net
T: git https://github.com/multipath-tcp/mptcp_net-next.git export
+F: Documentation/netlink/specs/mptcp.yaml
F: Documentation/networking/mptcp-sysctl.rst
F: include/net/mptcp.h
F: include/trace/events/mptcp.h
--
2.40.1
next prev parent reply other threads:[~2023-10-10 19:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-10 19:21 [PATCH net-next 0/6] mptcp: convert Netlink code to use YAML spec Matthieu Baerts
2023-10-10 19:21 ` [PATCH net-next 1/6] tools: ynl: add uns-admin-perm to genetlink legacy Matthieu Baerts
2023-10-10 19:21 ` [PATCH net-next 2/6] net: mptcp: convert netlink from small_ops to ops Matthieu Baerts
2023-10-10 19:21 ` Matthieu Baerts [this message]
2023-10-11 1:08 ` [PATCH net-next 3/6] Documentation: netlink: add a YAML spec for mptcp Jakub Kicinski
2023-10-11 10:13 ` Davide Caratti
2023-10-11 16:22 ` Jakub Kicinski
2023-10-10 19:21 ` [PATCH net-next 4/6] uapi: mptcp: use header file generated from YAML spec Matthieu Baerts
2023-10-13 17:28 ` Simon Horman
2023-10-14 11:37 ` Davide Caratti
2023-10-17 8:58 ` Simon Horman
2023-10-10 19:21 ` [PATCH net-next 5/6] net: mptcp: rename netlink handlers to mptcp_pm_nl_<blah>_{doit,dumpit} Matthieu Baerts
2023-10-10 19:21 ` [PATCH net-next 6/6] net: mptcp: use policy generated by YAML spec Matthieu Baerts
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=20231010-upstream-net-next-20231006-mptcp-ynl-v1-3-18dd117e8f50@kernel.org \
--to=matttbe@kernel.org \
--cc=davem@davemloft.net \
--cc=dcaratti@redhat.com \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martineau@kernel.org \
--cc=mptcp@lists.linux.dev \
--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 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).