summaryrefslogtreecommitdiff
path: root/tools/net/ynl/samples
diff options
context:
space:
mode:
Diffstat (limited to 'tools/net/ynl/samples')
-rw-r--r--tools/net/ynl/samples/.gitignore5
-rw-r--r--tools/net/ynl/samples/Makefile35
-rw-r--r--tools/net/ynl/samples/devlink.c60
-rw-r--r--tools/net/ynl/samples/ethtool.c65
-rw-r--r--tools/net/ynl/samples/netdev.c128
-rw-r--r--tools/net/ynl/samples/ovs.c60
-rw-r--r--tools/net/ynl/samples/page-pool.c149
7 files changed, 0 insertions, 502 deletions
diff --git a/tools/net/ynl/samples/.gitignore b/tools/net/ynl/samples/.gitignore
deleted file mode 100644
index dda6686257a7..000000000000
--- a/tools/net/ynl/samples/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-ethtool
-devlink
-netdev
-ovs
-page-pool \ No newline at end of file
diff --git a/tools/net/ynl/samples/Makefile b/tools/net/ynl/samples/Makefile
deleted file mode 100644
index c9494a564da4..000000000000
--- a/tools/net/ynl/samples/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-
-include ../Makefile.deps
-
-CC=gcc
-CFLAGS += -std=gnu11 -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow \
- -I../lib/ -I../generated/ -idirafter $(UAPI_PATH)
-ifeq ("$(DEBUG)","1")
- CFLAGS += -g -fsanitize=address -fsanitize=leak -static-libasan
-endif
-
-LDLIBS=../lib/ynl.a ../generated/protos.a
-
-SRCS=$(wildcard *.c)
-BINS=$(patsubst %.c,%,${SRCS})
-
-include $(wildcard *.d)
-
-all: $(BINS)
-
-CFLAGS_page-pool=$(CFLAGS_netdev)
-
-$(BINS): ../lib/ynl.a ../generated/protos.a $(SRCS)
- @echo -e '\tCC sample $@'
- @$(COMPILE.c) $(CFLAGS_$@) $@.c -o $@.o
- @$(LINK.c) $@.o -o $@ $(LDLIBS)
-
-clean:
- rm -f *.o *.d *~
-
-distclean: clean
- rm -f $(BINS)
-
-.PHONY: all clean distclean
-.DEFAULT_GOAL=all
diff --git a/tools/net/ynl/samples/devlink.c b/tools/net/ynl/samples/devlink.c
deleted file mode 100644
index d2611d7ebab4..000000000000
--- a/tools/net/ynl/samples/devlink.c
+++ /dev/null
@@ -1,60 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <stdio.h>
-#include <string.h>
-
-#include <ynl.h>
-
-#include "devlink-user.h"
-
-int main(int argc, char **argv)
-{
- struct devlink_get_list *devs;
- struct ynl_sock *ys;
-
- ys = ynl_sock_create(&ynl_devlink_family, NULL);
- if (!ys)
- return 1;
-
- devs = devlink_get_dump(ys);
- if (!devs)
- goto err_close;
-
- ynl_dump_foreach(devs, d) {
- struct devlink_info_get_req *info_req;
- struct devlink_info_get_rsp *info_rsp;
-
- printf("%s/%s:\n", d->bus_name, d->dev_name);
-
- info_req = devlink_info_get_req_alloc();
- devlink_info_get_req_set_bus_name(info_req, d->bus_name);
- devlink_info_get_req_set_dev_name(info_req, d->dev_name);
-
- info_rsp = devlink_info_get(ys, info_req);
- devlink_info_get_req_free(info_req);
- if (!info_rsp)
- goto err_free_devs;
-
- if (info_rsp->_present.info_driver_name_len)
- printf(" driver: %s\n", info_rsp->info_driver_name);
- if (info_rsp->n_info_version_running)
- printf(" running fw:\n");
- for (unsigned i = 0; i < info_rsp->n_info_version_running; i++)
- printf(" %s: %s\n",
- info_rsp->info_version_running[i].info_version_name,
- info_rsp->info_version_running[i].info_version_value);
- printf(" ...\n");
- devlink_info_get_rsp_free(info_rsp);
- }
- devlink_get_list_free(devs);
-
- ynl_sock_destroy(ys);
-
- return 0;
-
-err_free_devs:
- devlink_get_list_free(devs);
-err_close:
- fprintf(stderr, "YNL: %s\n", ys->err.msg);
- ynl_sock_destroy(ys);
- return 2;
-}
diff --git a/tools/net/ynl/samples/ethtool.c b/tools/net/ynl/samples/ethtool.c
deleted file mode 100644
index a7ebbd1b98db..000000000000
--- a/tools/net/ynl/samples/ethtool.c
+++ /dev/null
@@ -1,65 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <stdio.h>
-#include <string.h>
-
-#include <ynl.h>
-
-#include <net/if.h>
-
-#include "ethtool-user.h"
-
-int main(int argc, char **argv)
-{
- struct ethtool_channels_get_req_dump creq = {};
- struct ethtool_rings_get_req_dump rreq = {};
- struct ethtool_channels_get_list *channels;
- struct ethtool_rings_get_list *rings;
- struct ynl_sock *ys;
-
- ys = ynl_sock_create(&ynl_ethtool_family, NULL);
- if (!ys)
- return 1;
-
- creq._present.header = 1; /* ethtool needs an empty nest, sigh */
- channels = ethtool_channels_get_dump(ys, &creq);
- if (!channels)
- goto err_close;
-
- printf("Channels:\n");
- ynl_dump_foreach(channels, dev) {
- printf(" %8s: ", dev->header.dev_name);
- if (dev->_present.rx_count)
- printf("rx %d ", dev->rx_count);
- if (dev->_present.tx_count)
- printf("tx %d ", dev->tx_count);
- if (dev->_present.combined_count)
- printf("combined %d ", dev->combined_count);
- printf("\n");
- }
- ethtool_channels_get_list_free(channels);
-
- rreq._present.header = 1; /* ethtool needs an empty nest.. */
- rings = ethtool_rings_get_dump(ys, &rreq);
- if (!rings)
- goto err_close;
-
- printf("Rings:\n");
- ynl_dump_foreach(rings, dev) {
- printf(" %8s: ", dev->header.dev_name);
- if (dev->_present.rx)
- printf("rx %d ", dev->rx);
- if (dev->_present.tx)
- printf("tx %d ", dev->tx);
- printf("\n");
- }
- ethtool_rings_get_list_free(rings);
-
- ynl_sock_destroy(ys);
-
- return 0;
-
-err_close:
- fprintf(stderr, "YNL (%d): %s\n", ys->err.code, ys->err.msg);
- ynl_sock_destroy(ys);
- return 2;
-}
diff --git a/tools/net/ynl/samples/netdev.c b/tools/net/ynl/samples/netdev.c
deleted file mode 100644
index 22609d44c89a..000000000000
--- a/tools/net/ynl/samples/netdev.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <stdio.h>
-#include <string.h>
-
-#include <ynl.h>
-
-#include <net/if.h>
-
-#include "netdev-user.h"
-
-/* netdev genetlink family code sample
- * This sample shows off basics of the netdev family but also notification
- * handling, hence the somewhat odd UI. We subscribe to notifications first
- * then wait for ifc selection, so the socket may already accumulate
- * notifications as we wait. This allows us to test that YNL can handle
- * requests and notifications getting interleaved.
- */
-
-static void netdev_print_device(struct netdev_dev_get_rsp *d, unsigned int op)
-{
- char ifname[IF_NAMESIZE];
- const char *name;
-
- if (!d->_present.ifindex)
- return;
-
- name = if_indextoname(d->ifindex, ifname);
- if (name)
- printf("%8s", name);
- printf("[%d]\t", d->ifindex);
-
- if (!d->_present.xdp_features)
- return;
-
- printf("xdp-features (%llx):", d->xdp_features);
- for (int i = 0; d->xdp_features >= 1U << i; i++) {
- if (d->xdp_features & (1U << i))
- printf(" %s", netdev_xdp_act_str(1 << i));
- }
-
- printf(" xdp-rx-metadata-features (%llx):", d->xdp_rx_metadata_features);
- for (int i = 0; d->xdp_rx_metadata_features >= 1U << i; i++) {
- if (d->xdp_rx_metadata_features & (1U << i))
- printf(" %s", netdev_xdp_rx_metadata_str(1 << i));
- }
-
- printf(" xsk-features (%llx):", d->xsk_features);
- for (int i = 0; d->xsk_features >= 1U << i; i++) {
- if (d->xsk_features & (1U << i))
- printf(" %s", netdev_xsk_flags_str(1 << i));
- }
-
- printf(" xdp-zc-max-segs=%u", d->xdp_zc_max_segs);
-
- name = netdev_op_str(op);
- if (name)
- printf(" (ntf: %s)", name);
- printf("\n");
-}
-
-int main(int argc, char **argv)
-{
- struct netdev_dev_get_list *devs;
- struct ynl_ntf_base_type *ntf;
- struct ynl_error yerr;
- struct ynl_sock *ys;
- int ifindex = 0;
-
- if (argc > 1)
- ifindex = strtol(argv[1], NULL, 0);
-
- ys = ynl_sock_create(&ynl_netdev_family, &yerr);
- if (!ys) {
- fprintf(stderr, "YNL: %s\n", yerr.msg);
- return 1;
- }
-
- if (ynl_subscribe(ys, "mgmt"))
- goto err_close;
-
- printf("Select ifc ($ifindex; or 0 = dump; or -2 ntf check): ");
- if (scanf("%d", &ifindex) != 1) {
- fprintf(stderr, "Error: unable to parse input\n");
- goto err_destroy;
- }
-
- if (ifindex > 0) {
- struct netdev_dev_get_req *req;
- struct netdev_dev_get_rsp *d;
-
- req = netdev_dev_get_req_alloc();
- netdev_dev_get_req_set_ifindex(req, ifindex);
-
- d = netdev_dev_get(ys, req);
- netdev_dev_get_req_free(req);
- if (!d)
- goto err_close;
-
- netdev_print_device(d, 0);
- netdev_dev_get_rsp_free(d);
- } else if (!ifindex) {
- devs = netdev_dev_get_dump(ys);
- if (!devs)
- goto err_close;
-
- if (ynl_dump_empty(devs))
- fprintf(stderr, "Error: no devices reported\n");
- ynl_dump_foreach(devs, d)
- netdev_print_device(d, 0);
- netdev_dev_get_list_free(devs);
- } else if (ifindex == -2) {
- ynl_ntf_check(ys);
- }
- while ((ntf = ynl_ntf_dequeue(ys))) {
- netdev_print_device((struct netdev_dev_get_rsp *)&ntf->data,
- ntf->cmd);
- ynl_ntf_free(ntf);
- }
-
- ynl_sock_destroy(ys);
- return 0;
-
-err_close:
- fprintf(stderr, "YNL: %s\n", ys->err.msg);
-err_destroy:
- ynl_sock_destroy(ys);
- return 2;
-}
diff --git a/tools/net/ynl/samples/ovs.c b/tools/net/ynl/samples/ovs.c
deleted file mode 100644
index 3e975c003d77..000000000000
--- a/tools/net/ynl/samples/ovs.c
+++ /dev/null
@@ -1,60 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <stdio.h>
-#include <string.h>
-
-#include <ynl.h>
-
-#include "ovs_datapath-user.h"
-
-int main(int argc, char **argv)
-{
- struct ynl_sock *ys;
- int err;
-
- ys = ynl_sock_create(&ynl_ovs_datapath_family, NULL);
- if (!ys)
- return 1;
-
- if (argc > 1) {
- struct ovs_datapath_new_req *req;
-
- req = ovs_datapath_new_req_alloc();
- if (!req)
- goto err_close;
-
- ovs_datapath_new_req_set_upcall_pid(req, 1);
- ovs_datapath_new_req_set_name(req, argv[1]);
-
- err = ovs_datapath_new(ys, req);
- ovs_datapath_new_req_free(req);
- if (err)
- goto err_close;
- } else {
- struct ovs_datapath_get_req_dump *req;
- struct ovs_datapath_get_list *dps;
-
- printf("Dump:\n");
- req = ovs_datapath_get_req_dump_alloc();
-
- dps = ovs_datapath_get_dump(ys, req);
- ovs_datapath_get_req_dump_free(req);
- if (!dps)
- goto err_close;
-
- ynl_dump_foreach(dps, dp) {
- printf(" %s(%d): pid:%u cache:%u\n",
- dp->name, dp->_hdr.dp_ifindex,
- dp->upcall_pid, dp->masks_cache_size);
- }
- ovs_datapath_get_list_free(dps);
- }
-
- ynl_sock_destroy(ys);
-
- return 0;
-
-err_close:
- fprintf(stderr, "YNL (%d): %s\n", ys->err.code, ys->err.msg);
- ynl_sock_destroy(ys);
- return 2;
-}
diff --git a/tools/net/ynl/samples/page-pool.c b/tools/net/ynl/samples/page-pool.c
deleted file mode 100644
index e5d521320fbf..000000000000
--- a/tools/net/ynl/samples/page-pool.c
+++ /dev/null
@@ -1,149 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#define _GNU_SOURCE
-
-#include <stdio.h>
-#include <string.h>
-
-#include <ynl.h>
-
-#include <net/if.h>
-
-#include "netdev-user.h"
-
-struct stat {
- unsigned int ifc;
-
- struct {
- unsigned int cnt;
- size_t refs, bytes;
- } live[2];
-
- size_t alloc_slow, alloc_fast, recycle_ring, recycle_cache;
-};
-
-struct stats_array {
- unsigned int i, max;
- struct stat *s;
-};
-
-static struct stat *find_ifc(struct stats_array *a, unsigned int ifindex)
-{
- unsigned int i;
-
- for (i = 0; i < a->i; i++) {
- if (a->s[i].ifc == ifindex)
- return &a->s[i];
- }
-
- a->i++;
- if (a->i == a->max) {
- a->max *= 2;
- a->s = reallocarray(a->s, a->max, sizeof(*a->s));
- }
- a->s[i].ifc = ifindex;
- return &a->s[i];
-}
-
-static void count(struct stat *s, unsigned int l,
- struct netdev_page_pool_get_rsp *pp)
-{
- s->live[l].cnt++;
- if (pp->_present.inflight)
- s->live[l].refs += pp->inflight;
- if (pp->_present.inflight_mem)
- s->live[l].bytes += pp->inflight_mem;
-}
-
-int main(int argc, char **argv)
-{
- struct netdev_page_pool_stats_get_list *pp_stats;
- struct netdev_page_pool_get_list *pools;
- struct stats_array a = {};
- struct ynl_error yerr;
- struct ynl_sock *ys;
-
- ys = ynl_sock_create(&ynl_netdev_family, &yerr);
- if (!ys) {
- fprintf(stderr, "YNL: %s\n", yerr.msg);
- return 1;
- }
-
- a.max = 128;
- a.s = calloc(a.max, sizeof(*a.s));
- if (!a.s)
- goto err_close;
-
- pools = netdev_page_pool_get_dump(ys);
- if (!pools)
- goto err_free;
-
- ynl_dump_foreach(pools, pp) {
- struct stat *s = find_ifc(&a, pp->ifindex);
-
- count(s, 1, pp);
- if (pp->_present.detach_time)
- count(s, 0, pp);
- }
- netdev_page_pool_get_list_free(pools);
-
- pp_stats = netdev_page_pool_stats_get_dump(ys);
- if (!pp_stats)
- goto err_free;
-
- ynl_dump_foreach(pp_stats, pp) {
- struct stat *s = find_ifc(&a, pp->info.ifindex);
-
- if (pp->_present.alloc_fast)
- s->alloc_fast += pp->alloc_fast;
- if (pp->_present.alloc_refill)
- s->alloc_fast += pp->alloc_refill;
- if (pp->_present.alloc_slow)
- s->alloc_slow += pp->alloc_slow;
- if (pp->_present.recycle_ring)
- s->recycle_ring += pp->recycle_ring;
- if (pp->_present.recycle_cached)
- s->recycle_cache += pp->recycle_cached;
- }
- netdev_page_pool_stats_get_list_free(pp_stats);
-
- for (unsigned int i = 0; i < a.i; i++) {
- char ifname[IF_NAMESIZE];
- struct stat *s = &a.s[i];
- const char *name;
- double recycle;
-
- if (!s->ifc) {
- name = "<orphan>\t";
- } else {
- name = if_indextoname(s->ifc, ifname);
- if (name)
- printf("%8s", name);
- printf("[%u]\t", s->ifc);
- }
-
- printf("page pools: %u (zombies: %u)\n",
- s->live[1].cnt, s->live[0].cnt);
- printf("\t\trefs: %zu bytes: %zu (refs: %zu bytes: %zu)\n",
- s->live[1].refs, s->live[1].bytes,
- s->live[0].refs, s->live[0].bytes);
-
- /* We don't know how many pages are sitting in cache and ring
- * so we will under-count the recycling rate a bit.
- */
- recycle = (double)(s->recycle_ring + s->recycle_cache) /
- (s->alloc_fast + s->alloc_slow) * 100;
- printf("\t\trecycling: %.1lf%% (alloc: %zu:%zu recycle: %zu:%zu)\n",
- recycle, s->alloc_slow, s->alloc_fast,
- s->recycle_ring, s->recycle_cache);
- }
-
- ynl_sock_destroy(ys);
- return 0;
-
-err_free:
- free(a.s);
-err_close:
- fprintf(stderr, "YNL: %s\n", ys->err.msg);
- ynl_sock_destroy(ys);
- return 2;
-}