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