1 /* 2 * Copyright (c) 2005-2007 Voltaire, Inc. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: 9 * 10 * Redistribution and use in source and binary forms, with or 11 * without modification, are permitted provided that the following 12 * conditions are met: 13 * 14 * - Redistributions of source code must retain the above 15 * copyright notice, this list of conditions and the following 16 * disclaimer. 17 * 18 * - Redistributions in binary form must reproduce the above 19 * copyright notice, this list of conditions and the following 20 * disclaimer in the documentation and/or other materials 21 * provided with the distribution. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 * 32 */ 33 /* 34 * Abstract: 35 * Declaration of osm_console_t. 36 * This object represents the OpenSM Console object. 37 * This object is part of the OpenSM family of objects. 38 */ 39 40 #ifndef _OSM_CONSOLE_IO_H_ 41 #define _OSM_CONSOLE_IO_H_ 42 43 #include <opensm/osm_subnet.h> 44 #include <opensm/osm_log.h> 45 46 #define OSM_DISABLE_CONSOLE "off" 47 #define OSM_LOCAL_CONSOLE "local" 48 #ifdef ENABLE_OSM_CONSOLE_SOCKET 49 #define OSM_REMOTE_CONSOLE "socket" 50 #endif 51 #ifdef ENABLE_OSM_CONSOLE_LOOPBACK 52 #define OSM_LOOPBACK_CONSOLE "loopback" 53 #endif 54 #define OSM_CONSOLE_NAME "OSM Console" 55 56 #define OSM_DEFAULT_CONSOLE OSM_DISABLE_CONSOLE 57 #define OSM_DEFAULT_CONSOLE_PORT 10000 58 #define OSM_DAEMON_NAME "opensm" 59 60 #define OSM_COMMAND_PROMPT "$ " 61 62 #ifdef __cplusplus 63 # define BEGIN_C_DECLS extern "C" { 64 # define END_C_DECLS } 65 #else /* !__cplusplus */ 66 # define BEGIN_C_DECLS 67 # define END_C_DECLS 68 #endif /* __cplusplus */ 69 70 BEGIN_C_DECLS 71 typedef struct osm_console { 72 int socket; 73 int in_fd; 74 int out_fd; 75 int authorized; 76 FILE *in; 77 FILE *out; 78 char client_type[32]; 79 char client_ip[64]; 80 char client_hn[128]; 81 } osm_console_t; 82 83 void osm_console_prompt(FILE * out); 84 int osm_console_init(osm_subn_opt_t * opt, osm_console_t * p_oct, osm_log_t * p_log); 85 void osm_console_exit(osm_console_t * p_oct, osm_log_t * p_log); 86 int is_console_enabled(osm_subn_opt_t *p_opt); 87 88 #ifdef ENABLE_OSM_CONSOLE_LOOPBACK 89 int cio_open(osm_console_t * p_oct, int new_fd, osm_log_t * p_log); 90 int cio_close(osm_console_t * p_oct, osm_log_t * p_log); 91 int is_authorized(osm_console_t * p_oct); 92 #else 93 #define cio_close(c, log) 94 #endif 95 96 END_C_DECLS 97 #endif /* _OSM_CONSOLE_IO_H_ */ 98