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