brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · a7ebbd1 Raw
66 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <stdio.h>3#include <string.h>4 5#include <ynl.h>6 7#include <net/if.h>8 9#include "ethtool-user.h"10 11int main(int argc, char **argv)12{13	struct ethtool_channels_get_req_dump creq = {};14	struct ethtool_rings_get_req_dump rreq = {};15	struct ethtool_channels_get_list *channels;16	struct ethtool_rings_get_list *rings;17	struct ynl_sock *ys;18 19	ys = ynl_sock_create(&ynl_ethtool_family, NULL);20	if (!ys)21		return 1;22 23	creq._present.header = 1; /* ethtool needs an empty nest, sigh */24	channels = ethtool_channels_get_dump(ys, &creq);25	if (!channels)26		goto err_close;27 28	printf("Channels:\n");29	ynl_dump_foreach(channels, dev) {30		printf("  %8s: ", dev->header.dev_name);31		if (dev->_present.rx_count)32			printf("rx %d ", dev->rx_count);33		if (dev->_present.tx_count)34			printf("tx %d ", dev->tx_count);35		if (dev->_present.combined_count)36			printf("combined %d ", dev->combined_count);37		printf("\n");38	}39	ethtool_channels_get_list_free(channels);40 41	rreq._present.header = 1; /* ethtool needs an empty nest.. */42	rings = ethtool_rings_get_dump(ys, &rreq);43	if (!rings)44		goto err_close;45 46	printf("Rings:\n");47	ynl_dump_foreach(rings, dev) {48		printf("  %8s: ", dev->header.dev_name);49		if (dev->_present.rx)50			printf("rx %d ", dev->rx);51		if (dev->_present.tx)52			printf("tx %d ", dev->tx);53		printf("\n");54	}55	ethtool_rings_get_list_free(rings);56 57	ynl_sock_destroy(ys);58 59	return 0;60 61err_close:62	fprintf(stderr, "YNL (%d): %s\n", ys->err.code, ys->err.msg);63	ynl_sock_destroy(ys);64	return 2;65}66