[PATCH mptcp-next v2 0/6] convert MPTCP to use YAML spec

Davide Caratti posted 6 patches 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/cover.1693591676.git.dcaratti@redhat.com
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 ++++++++++++++++++++
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 +-
10 files changed, 814 insertions(+), 273 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 v2 0/6] convert MPTCP to use YAML spec
Posted by Davide Caratti 1 year, 2 months 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}]

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
  mptcp: convert netlink from small_ops to ops
  Documentation: netlink: add a YAML spec for mptcp
  mptcp: uapi: 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 ++++++++++++++++++++
 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 +-
 10 files changed, 814 insertions(+), 273 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.40.1
Re: [PATCH mptcp-next v2 0/6] convert MPTCP to use YAML spec
Posted by Paolo Abeni 1 year, 1 month ago
On Fri, 2023-09-01 at 20:10 +0200, 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}]
> 
> 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
>   mptcp: convert netlink from small_ops to ops
>   Documentation: netlink: add a YAML spec for mptcp
>   mptcp: uapi: 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 ++++++++++++++++++++
>  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 +-
>  10 files changed, 814 insertions(+), 273 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

Other then comments in patch 2/6 and the (IMHO quite confusing?!?)
warning reported by the CI, LGTM!

/P