[PATCH mptcp-next v4 0/6] mptcp: convert netlink code to use YAML spec

Davide Caratti posted 6 patches 7 months, 2 weeks ago
Failed in applying to current master (apply log)
Maintainers: Jonathan Corbet <corbet@lwn.net>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Matthieu Baerts <matthieu.baerts@tessares.net>, Mat Martineau <martineau@kernel.org>
Documentation/netlink/genetlink-legacy.yaml |   2 +-
Documentation/netlink/specs/mptcp.yaml      | 394 ++++++++++++++++++++
MAINTAINERS                                 |   3 +-
include/uapi/linux/mptcp.h                  | 174 +--------
include/uapi/linux/mptcp_pm.h               | 149 ++++++++
net/mptcp/Makefile                          |   3 +-
net/mptcp/mptcp_pm_gen.c                    | 179 +++++++++
net/mptcp/mptcp_pm_gen.h                    |  58 +++
net/mptcp/pm_netlink.c                      | 114 +-----
net/mptcp/pm_userspace.c                    |   8 +-
net/mptcp/protocol.h                        |   6 +-
11 files changed, 816 insertions(+), 274 deletions(-)
create mode 100644 Documentation/netlink/specs/mptcp.yaml
create mode 100644 include/uapi/linux/mptcp_pm.h
create mode 100644 net/mptcp/mptcp_pm_gen.c
create mode 100644 net/mptcp/mptcp_pm_gen.h
[PATCH mptcp-next v4 0/6] mptcp: convert netlink code to use YAML spec
Posted by Davide Caratti 7 months, 2 weeks ago
this series converts most of the MPTCP netlink interface (plus uAPI bits)
to use sources generated by a YAML spec file. Patch 2/6 and 6/6 have been
individually verified with kselftests.

POC:

 $ sudo  ./tools/net/ynl/cli.py  --spec \
 > Documentation/netlink/specs/mptcp.yaml --do add_addr \
 > --json '{"addr": {"addr4": 16909061, "family": 2, "flags": 4, "id": 10, "port": 0}}'

 $ ip -j mptcp endpoint show id 10
 [{"address":"1.2.3.5","id":10,"backup":true}]

v4:
- removed unwanted whitespaces, update MAINTAINERS (Matthieu Baerts)

v3:
- add missing 'static' keyword (MPTCP CI)
- fix element ordering for 'attr' attributes in patch 2,
  mptcp spec and generated C code (Paolo Abeni)
- removed extra newline, deuglified subjects in patch 2 and 4

v2:
- mptcp.yaml: only put values around enum "holes" (Paolo Abeni)
-  _doit and _dumpit renames are done in a dedicate patch (Paolo Abeni)
- removed useless nla_policy passed through parse_entry()  (Paolo Abeni)
- renamed mptcp_pm_address_nl_policy in patch 2 (Paolo Abeni)
- (hopefully) more comprehensible commit messages (Paolo Abeni)


Davide Caratti (6):
  tools: ynl: add uns-admin-perm to genetlink legacy
  net: mptcp: convert netlink from small_ops to ops
  Documentation: netlink: add a YAML spec for mptcp
  uapi: mptcp: use header file generated from YAML spec
  net: mptcp: rename netlink handlers to
    mptcp_pm_nl_<blah>_{doit,dumpit}
  net: mptcp: use policy generated by YAML spec

 Documentation/netlink/genetlink-legacy.yaml |   2 +-
 Documentation/netlink/specs/mptcp.yaml      | 394 ++++++++++++++++++++
 MAINTAINERS                                 |   3 +-
 include/uapi/linux/mptcp.h                  | 174 +--------
 include/uapi/linux/mptcp_pm.h               | 149 ++++++++
 net/mptcp/Makefile                          |   3 +-
 net/mptcp/mptcp_pm_gen.c                    | 179 +++++++++
 net/mptcp/mptcp_pm_gen.h                    |  58 +++
 net/mptcp/pm_netlink.c                      | 114 +-----
 net/mptcp/pm_userspace.c                    |   8 +-
 net/mptcp/protocol.h                        |   6 +-
 11 files changed, 816 insertions(+), 274 deletions(-)
 create mode 100644 Documentation/netlink/specs/mptcp.yaml
 create mode 100644 include/uapi/linux/mptcp_pm.h
 create mode 100644 net/mptcp/mptcp_pm_gen.c
 create mode 100644 net/mptcp/mptcp_pm_gen.h

-- 
2.41.0
Re: [PATCH mptcp-next v4 0/6] mptcp: convert netlink code to use YAML spec
Posted by Matthieu Baerts 7 months, 1 week ago
Hi Davide, Paolo,

On 20/09/2023 11:24, Davide Caratti wrote:
> this series converts most of the MPTCP netlink interface (plus uAPI bits)
> to use sources generated by a YAML spec file. Patch 2/6 and 6/6 have been
> individually verified with kselftests.
> 
> POC:
> 
>  $ sudo  ./tools/net/ynl/cli.py  --spec \
>  > Documentation/netlink/specs/mptcp.yaml --do add_addr \
>  > --json '{"addr": {"addr4": 16909061, "family": 2, "flags": 4, "id": 10, "port": 0}}'
> 
>  $ ip -j mptcp endpoint show id 10
>  [{"address":"1.2.3.5","id":10,"backup":true}]

Thank you for this series, the new version and the reviews!

Now in our tree (feat. for net-next):

New patches for t/upstream:
- 9efccfde1d18: tools: ynl: add uns-admin-perm to genetlink legacy
- 34e8d83f1515: net: mptcp: convert netlink from small_ops to ops
- cf4a7c60248c: Documentation: netlink: add a YAML spec for mptcp
- 25385acaa5c7: uapi: mptcp: use header file generated from YAML spec
- 11351fc8e13b: net: mptcp: rename netlink handlers to
mptcp_pm_nl_<blah>_{doit,dumpit}
- 7d081cf1470a: net: mptcp: use policy generated by YAML spec
- Results: bf9368cc6ffb..1c2adc4e573c (export)

Tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20230923T075423

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net