xref: /aosp_15_r20/external/iproute2/tipc/cmdl.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker /*
2*de1e4e89SAndroid Build Coastguard Worker  * cmdl.h	Framework for handling command line options.
3*de1e4e89SAndroid Build Coastguard Worker  *
4*de1e4e89SAndroid Build Coastguard Worker  *		This program is free software; you can redistribute it and/or
5*de1e4e89SAndroid Build Coastguard Worker  *		modify it under the terms of the GNU General Public License
6*de1e4e89SAndroid Build Coastguard Worker  *		as published by the Free Software Foundation; either version
7*de1e4e89SAndroid Build Coastguard Worker  *		2 of the License, or (at your option) any later version.
8*de1e4e89SAndroid Build Coastguard Worker  *
9*de1e4e89SAndroid Build Coastguard Worker  * Authors:	Richard Alpe <[email protected]>
10*de1e4e89SAndroid Build Coastguard Worker  */
11*de1e4e89SAndroid Build Coastguard Worker 
12*de1e4e89SAndroid Build Coastguard Worker #ifndef _TIPC_CMDL_H
13*de1e4e89SAndroid Build Coastguard Worker #define _TIPC_CMDL_H
14*de1e4e89SAndroid Build Coastguard Worker 
15*de1e4e89SAndroid Build Coastguard Worker #include <libmnl/libmnl.h>
16*de1e4e89SAndroid Build Coastguard Worker 
17*de1e4e89SAndroid Build Coastguard Worker extern int help_flag;
18*de1e4e89SAndroid Build Coastguard Worker 
19*de1e4e89SAndroid Build Coastguard Worker enum {
20*de1e4e89SAndroid Build Coastguard Worker 	OPT_KEY			= (1 << 0),
21*de1e4e89SAndroid Build Coastguard Worker 	OPT_KEYVAL		= (1 << 1),
22*de1e4e89SAndroid Build Coastguard Worker };
23*de1e4e89SAndroid Build Coastguard Worker 
24*de1e4e89SAndroid Build Coastguard Worker struct cmdl {
25*de1e4e89SAndroid Build Coastguard Worker 	int optind;
26*de1e4e89SAndroid Build Coastguard Worker 	int argc;
27*de1e4e89SAndroid Build Coastguard Worker 	char **argv;
28*de1e4e89SAndroid Build Coastguard Worker };
29*de1e4e89SAndroid Build Coastguard Worker 
30*de1e4e89SAndroid Build Coastguard Worker struct tipc_sup_media {
31*de1e4e89SAndroid Build Coastguard Worker 	char *media;
32*de1e4e89SAndroid Build Coastguard Worker 	char *identifier;
33*de1e4e89SAndroid Build Coastguard Worker 	void (*help)(struct cmdl *cmdl, char *media);
34*de1e4e89SAndroid Build Coastguard Worker };
35*de1e4e89SAndroid Build Coastguard Worker 
36*de1e4e89SAndroid Build Coastguard Worker struct cmd {
37*de1e4e89SAndroid Build Coastguard Worker 	const char *cmd;
38*de1e4e89SAndroid Build Coastguard Worker 	int (*func)(struct nlmsghdr *nlh, const struct cmd *cmd,
39*de1e4e89SAndroid Build Coastguard Worker 		    struct cmdl *cmdl, void *data);
40*de1e4e89SAndroid Build Coastguard Worker 	void (*help)(struct cmdl *cmdl);
41*de1e4e89SAndroid Build Coastguard Worker };
42*de1e4e89SAndroid Build Coastguard Worker 
43*de1e4e89SAndroid Build Coastguard Worker struct opt {
44*de1e4e89SAndroid Build Coastguard Worker 	const char *key;
45*de1e4e89SAndroid Build Coastguard Worker 	uint16_t flag;
46*de1e4e89SAndroid Build Coastguard Worker 	char *val;
47*de1e4e89SAndroid Build Coastguard Worker };
48*de1e4e89SAndroid Build Coastguard Worker 
49*de1e4e89SAndroid Build Coastguard Worker struct opt *get_opt(struct opt *opts, char *key);
50*de1e4e89SAndroid Build Coastguard Worker bool has_opt(struct opt *opts, char *key);
51*de1e4e89SAndroid Build Coastguard Worker int parse_opts(struct opt *opts, struct cmdl *cmdl);
52*de1e4e89SAndroid Build Coastguard Worker char *shift_cmdl(struct cmdl *cmdl);
53*de1e4e89SAndroid Build Coastguard Worker 
54*de1e4e89SAndroid Build Coastguard Worker int run_cmd(struct nlmsghdr *nlh, const struct cmd *caller,
55*de1e4e89SAndroid Build Coastguard Worker 	    const struct cmd *cmds, struct cmdl *cmdl, void *data);
56*de1e4e89SAndroid Build Coastguard Worker 
57*de1e4e89SAndroid Build Coastguard Worker const struct cmd *find_cmd(const struct cmd *cmds, char *str);
58*de1e4e89SAndroid Build Coastguard Worker 
59*de1e4e89SAndroid Build Coastguard Worker #endif
60