iproute2/tipc/cmdl.h
<<
>>
Prefs
   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
  17extern int help_flag;
  18
  19enum {
  20        OPT_KEY                 = (1 << 0),
  21        OPT_KEYVAL              = (1 << 1),
  22};
  23
  24struct cmdl {
  25        int optind;
  26        int argc;
  27        char **argv;
  28};
  29
  30struct tipc_sup_media {
  31        char *media;
  32        char *identifier;
  33        void (*help)(struct cmdl *cmdl, char *media);
  34};
  35
  36struct 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
  43struct opt {
  44        const char *key;
  45        uint16_t flag;
  46        char *val;
  47};
  48
  49struct opt *find_opt(struct opt *opts, char *str);
  50struct opt *get_opt(struct opt *opts, char *key);
  51bool has_opt(struct opt *opts, char *key);
  52int parse_opts(struct opt *opts, struct cmdl *cmdl);
  53char *shift_cmdl(struct cmdl *cmdl);
  54
  55int run_cmd(struct nlmsghdr *nlh, const struct cmd *caller,
  56            const struct cmd *cmds, struct cmdl *cmdl, void *data);
  57
  58#endif
  59