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 struct cmdl { 20 int optind; 21 int argc; 22 char **argv; 23 }; 24 25 struct cmd { 26 const char *cmd; 27 int (*func)(struct nlmsghdr *nlh, const struct cmd *cmd, 28 struct cmdl *cmdl, void *data); 29 void (*help)(struct cmdl *cmdl); 30 }; 31 32 struct opt { 33 const char *key; 34 char *val; 35 }; 36 37 struct opt *get_opt(struct opt *opts, char *key); 38 int parse_opts(struct opt *opts, struct cmdl *cmdl); 39 char *shift_cmdl(struct cmdl *cmdl); 40 41 int run_cmd(struct nlmsghdr *nlh, const struct cmd *caller, 42 const struct cmd *cmds, struct cmdl *cmdl, void *data); 43 44 const struct cmd *find_cmd(const struct cmd *cmds, char *str); 45 46 #endif 47