1 /*
2     mtr  --  a network diagnostic tool
3     Copyright (C) 2016  Matt Kimball
4 
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License version 2 as
7     published by the Free Software Foundation.
8 
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13 
14     You should have received a copy of the GNU General Public License along
15     with this program; if not, write to the Free Software Foundation, Inc.,
16     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18 
19 #ifndef CMDPARSE_H
20 #define CMDPARSE_H
21 
22 enum {
23     MAX_COMMAND_ARGUMENTS = 16,
24     MAX_COMMAND_TOKENS = MAX_COMMAND_ARGUMENTS * 2 + 2
25 };
26 
27 /*  Parsed commands, or command replies, ready for semantic interpretation  */
28 struct command_t {
29     /*  A unique value for matching command requests with replies  */
30     int token;
31 
32     /*  Text indiciating the command type, or reply type  */
33     char *command_name;
34 
35     /*  The number of key, value argument pairs used  */
36     int argument_count;
37 
38     /*  Names for each argument  */
39     char *argument_name[MAX_COMMAND_ARGUMENTS];
40 
41     /*  Values for each argument, parallel to the argument_name array  */
42     char *argument_value[MAX_COMMAND_ARGUMENTS];
43 };
44 
45 int parse_command(
46     struct command_t *command,
47     char *command_string);
48 
49 #endif
50