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