netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 00/15] tools: ynl: stop using libmnl
@ 2024-02-22 23:55 Jakub Kicinski
  2024-02-22 23:56 ` [PATCH net-next 01/15] tools: ynl: give up on libmnl for auto-ints Jakub Kicinski
                   ` (15 more replies)
  0 siblings, 16 replies; 43+ messages in thread
From: Jakub Kicinski @ 2024-02-22 23:55 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, pabeni, jiri, sdf, nicolas.dichtel,
	donald.hunter, Jakub Kicinski

There is no strong reason to stop using libmnl in ynl but there
are a few small ones which add up.

First, we do much more advanced netlink level parsing than libmnl
in ynl so it's hard to say that libmnl abstracts much from us.
The fact that this series, removing the libmnl dependency, only
adds <300 LoC shows that code savings aren't huge.
OTOH when new types are added (e.g. auto-int) we need to add
compatibility to deal with older version of libmnl (in fact,
even tho patches have been sent months ago, auto-ints are still
not supported in libmnl.git).

Second, the dependency makes ynl less self contained, and harder
to vendor in. Whether vendoring libraries into projects is a good
idea is a separate discussion, nonetheless, people want to do it.

Third, there are small annoyances with the libmnl APIs which
are hard to fix in backward-compatible ways.

All in all, libmnl is a great library, but with all the code
generation and structured parsing, ynl is better served by going
its own way.

Jakub Kicinski (15):
  tools: ynl: give up on libmnl for auto-ints
  tools: ynl: create local attribute helpers
  tools: ynl: create local for_each helpers
  tools: ynl: create local nlmsg access helpers
  tools: ynl: create local ARRAY_SIZE() helper
  tools: ynl: make yarg the first member of struct ynl_dump_state
  tools: ynl-gen: remove unused parse code
  tools: ynl: wrap recv() + mnl_cb_run2() into a single helper
  tools: ynl: use ynl_sock_read_msgs() for ACK handling
  tools: ynl: stop using mnl_cb_run2()
  tools: ynl: switch away from mnl_cb_t
  tools: ynl: switch away from MNL_CB_*
  tools: ynl: stop using mnl socket helpers
  tools: ynl: remove the libmnl dependency
  tools: ynl: use MSG_DONTWAIT for getting notifications

 tools/net/ynl/lib/ynl-priv.h   | 352 ++++++++++++++++++++++++++++---
 tools/net/ynl/lib/ynl.c        | 368 +++++++++++++++++----------------
 tools/net/ynl/lib/ynl.h        |   3 +-
 tools/net/ynl/samples/Makefile |   2 +-
 tools/net/ynl/ynl-gen-c.py     | 108 ++++------
 5 files changed, 565 insertions(+), 268 deletions(-)

-- 
2.43.2


^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2024-02-27 16:53 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-22 23:55 [PATCH net-next 00/15] tools: ynl: stop using libmnl Jakub Kicinski
2024-02-22 23:56 ` [PATCH net-next 01/15] tools: ynl: give up on libmnl for auto-ints Jakub Kicinski
2024-02-23 13:51   ` Nicolas Dichtel
2024-02-23 14:35     ` Jakub Kicinski
2024-02-23 15:07       ` Nicolas Dichtel
2024-02-23 15:34   ` Donald Hunter
2024-02-22 23:56 ` [PATCH net-next 02/15] tools: ynl: create local attribute helpers Jakub Kicinski
2024-02-23 14:03   ` Nicolas Dichtel
2024-02-23 14:46     ` Jakub Kicinski
2024-02-23 15:09       ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 03/15] tools: ynl: create local for_each helpers Jakub Kicinski
2024-02-23 15:16   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 04/15] tools: ynl: create local nlmsg access helpers Jakub Kicinski
2024-02-23 15:20   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 05/15] tools: ynl: create local ARRAY_SIZE() helper Jakub Kicinski
2024-02-23 15:21   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 06/15] tools: ynl: make yarg the first member of struct ynl_dump_state Jakub Kicinski
2024-02-23 15:23   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 07/15] tools: ynl-gen: remove unused parse code Jakub Kicinski
2024-02-23 15:24   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 08/15] tools: ynl: wrap recv() + mnl_cb_run2() into a single helper Jakub Kicinski
2024-02-23 15:33   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 09/15] tools: ynl: use ynl_sock_read_msgs() for ACK handling Jakub Kicinski
2024-02-23 15:35   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 10/15] tools: ynl: stop using mnl_cb_run2() Jakub Kicinski
2024-02-23 15:50   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 11/15] tools: ynl: switch away from mnl_cb_t Jakub Kicinski
2024-02-23 16:04   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 12/15] tools: ynl: switch away from MNL_CB_* Jakub Kicinski
2024-02-23 16:05   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 13/15] tools: ynl: stop using mnl socket helpers Jakub Kicinski
2024-02-23 16:14   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 14/15] tools: ynl: remove the libmnl dependency Jakub Kicinski
2024-02-23 16:14   ` Nicolas Dichtel
2024-02-22 23:56 ` [PATCH net-next 15/15] tools: ynl: use MSG_DONTWAIT for getting notifications Jakub Kicinski
2024-02-23 16:17   ` Nicolas Dichtel
2024-02-23 16:26 ` [PATCH net-next 00/15] tools: ynl: stop using libmnl Donald Hunter
2024-02-23 16:34   ` Jakub Kicinski
2024-02-26  9:04     ` Donald Hunter
2024-02-26 18:00       ` Jakub Kicinski
2024-02-27 10:49         ` Donald Hunter
2024-02-27 15:56           ` Jakub Kicinski
2024-02-27 16:29             ` Donald Hunter

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).