17f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt/*
27f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt * Common hostapd/wpa_supplicant command line interface functionality
37f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
47f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt *
57f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt * This software may be distributed under the terms of the BSD license.
67f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt * See README for more details.
77f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt */
87f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
97f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt#ifndef CLI_H
107f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt#define CLI_H
117f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
127f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt#include "utils/list.h"
137f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
147f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtextern const char *const cli_license;
157f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtextern const char *const cli_full_license;
167f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
177f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtstruct cli_txt_entry {
187f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt	struct dl_list list;
197f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt	char *txt;
207f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt};
217f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
227f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtvoid cli_txt_list_free(struct cli_txt_entry *e);
237f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtvoid cli_txt_list_flush(struct dl_list *list);
247f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
257f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtstruct cli_txt_entry *
267f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtcli_txt_list_get(struct dl_list *txt_list, const char *txt);
277f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
287f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtvoid cli_txt_list_del(struct dl_list *txt_list, const char *txt);
297f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtvoid cli_txt_list_del_addr(struct dl_list *txt_list, const char *txt);
307f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtvoid cli_txt_list_del_word(struct dl_list *txt_list, const char *txt,
317f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt			   int separator);
327f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
337f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint cli_txt_list_add(struct dl_list *txt_list, const char *txt);
347f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint cli_txt_list_add_addr(struct dl_list *txt_list, const char *txt);
357f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint cli_txt_list_add_word(struct dl_list *txt_list, const char *txt,
367f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt			  int separator);
377f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
387f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtchar ** cli_txt_list_array(struct dl_list *txt_list);
397f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
407f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint get_cmd_arg_num(const char *str, int pos);
417f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint write_cmd(char *buf, size_t buflen, const char *cmd, int argc,
427f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt	      char *argv[]);
437f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
447f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt#define max_args 10
457f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtint tokenize_cmd(char *cmd, char *argv[]);
467f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt
477f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt#endif /* CLI_H */
48