1 /* $Id: cmd.h,v 1.13 2002/05/14 22:00:22 bsd Exp $ */
2 
3 /*
4  * Copyright 2000, 2001, 2002 Brian S. Dean <bsd@bsdhome.com>
5  * All Rights Reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY BRIAN S. DEAN ``AS IS'' AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL BRIAN S. DEAN BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
23  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
27  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
28  * DAMAGE.
29  *
30  */
31 
32 #ifndef __cmd_h__
33 #define __cmd_h__
34 
35 
36 #include "endp.h"
37 
38 
39 #define MAX_COMMAND_LEN   32 /* max command name length */
40 
41 #define MAX_HOST         128 /* max host name length */
42 
43 #define MAX_RBUF        1024 /* buffer size for command port command line */
44 
45 #define MAX_PROMPT        32 /* command connection prompt length */
46 
47 #define MAX_CMD           64 /* max command name length */
48 
49 
50 /*
51  * data structure for commands
52  */
53 typedef struct {
54   char * command;
55   int    (*function)(ENDPOINT * e, char * cmdline);
56   char * desc;
57 } COMMAND;
58 
59 
60 /*
61  * Data structure for managing command connections
62  */
63 struct command_port {
64   struct hostent * h;                  /* remote host */
65   char             name[MAX_HOST];     /* remote host */
66   int              bufcnt;             /* remote host command buffer length */
67   char           * buf;                /* remote host command buffer */
68   char             lastc[2];           /* previous character(s) recieved */
69   char             prompt[MAX_PROMPT]; /* remote host command prompt */
70   int              echo;               /* boolean: echo chars in command mode */
71 };
72 
73 
74 extern COMMAND commands[];
75 #define N_COMMANDS (sizeof(commands)/sizeof(commands[0]))
76 
77 /*
78  * prototypes for commands implemented by the command interface
79  */
80 int cmd_init      (void);
81 int hexdump_buf   (int fd, char * prefix, int startaddr, char * buf, int len);
82 int cmd_add       (ENDPOINT * e, char * cmdline);
83 int cmd_ctl       (ENDPOINT * e, char * cmdline);
84 int cmd_close     (ENDPOINT * e, char * cmdline);
85 int cmd_debug     (ENDPOINT * e, char * cmdline);
86 int cmd_devdir    (ENDPOINT * e, char * cmdline);
87 int cmd_endpoints (ENDPOINT * e, char * cmdline);
88 int cmd_help      (ENDPOINT * e, char * cmdline);
89 int cmd_list      (ENDPOINT * e, char * cmdline);
90 int cmd_logdir    (ENDPOINT * e, char * cmdline);
91 int cmd_restart   (ENDPOINT * e, char * cmdline);
92 int cmd_serve     (ENDPOINT * e, char * cmdline);
93 int cmd_set       (ENDPOINT * e, char * cmdline);
94 int cmd_show      (ENDPOINT * e, char * cmdline);
95 int cmd_shutdown  (ENDPOINT * e, char * cmdline);
96 int cmd_status    (ENDPOINT * e, char * cmdline);
97 int cmd_version   (ENDPOINT * e, char * cmdline);
98 
99 COMMAND_PORT * new_cmd      (void);
100 COMMAND      * find_cmd     (char * cmd);
101 COMSERV_PORT * locate_devid (char * d);
102 int            run_command  (ENDPOINT * e);
103 
104 #endif
105