File Index
Files and directories
Sign in
FILE

main.h

File preview with syntax highlighting.

linux-6.19.14/tools/net/ynl/ynltool/main.h C
 1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
 2/* Copyright (C) 2017-2018 Netronome Systems, Inc. */
 3/* Copyright Meta Platforms, Inc. and affiliates */
 4
 5#ifndef __YNLTOOL_H
 6#define __YNLTOOL_H
 7
 8#ifndef _GNU_SOURCE
 9#define _GNU_SOURCE
10#endif
11#include <stdbool.h>
12#include <stdio.h>
13#include <stdlib.h>
14#include <errno.h>
15#include <string.h>
16
17#include "json_writer.h"
18
19#define NEXT_ARG()	({ argc--; argv++; if (argc < 0) usage(); })
20#define NEXT_ARGP()	({ (*argc)--; (*argv)++; if (*argc < 0) usage(); })
21#define BAD_ARG()	({ p_err("what is '%s'?", *argv); -1; })
22#define GET_ARG()	({ argc--; *argv++; })
23#define REQ_ARGS(cnt)							\
24	({								\
25		int _cnt = (cnt);					\
26		bool _res;						\
27									\
28		if (argc < _cnt) {					\
29			p_err("'%s' needs at least %d arguments, %d found", \
30			      argv[-1], _cnt, argc);			\
31			_res = false;					\
32		} else {						\
33			_res = true;					\
34		}							\
35		_res;							\
36	})
37
38#define HELP_SPEC_OPTIONS						\
39	"OPTIONS := { {-j|--json} [{-p|--pretty}] }"
40
41extern const char *bin_name;
42
43extern json_writer_t *json_wtr;
44extern bool json_output;
45extern bool pretty_output;
46
47void __attribute__((format(printf, 1, 2))) p_err(const char *fmt, ...);
48void __attribute__((format(printf, 1, 2))) p_info(const char *fmt, ...);
49
50bool is_prefix(const char *pfx, const char *str);
51int detect_common_prefix(const char *arg, ...);
52void usage(void) __attribute__((noreturn));
53
54struct cmd {
55	const char *cmd;
56	int (*func)(int argc, char **argv);
57};
58
59int cmd_select(const struct cmd *cmds, int argc, char **argv,
60	       int (*help)(int argc, char **argv));
61
62/* subcommands */
63int do_page_pool(int argc, char **argv);
64int do_qstats(int argc, char **argv);
65
66#endif /* __YNLTOOL_H */
~/ Read-only file preview.