Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_mgmt.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2015, Emulex
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its contributors
16  * may be used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  */
32 
33 /**
34  * @file
35  * Declarations for the common functions used by ocs_mgmt.
36  */
37 
38 
39 #if !defined(__OCS_MGMT_H__)
40 #define __OCS_MGMT_H__
41 
42 #include "ocs_textbuf.h"
43 
44 #define OCS_MGMT_MAX_NAME 128
45 #define OCS_MGMT_MAX_VALUE 128
46 
47 #define MGMT_MODE_RD 4
48 #define MGMT_MODE_WR 2
49 #define MGMT_MODE_EX 1
50 #define MGMT_MODE_RW (MGMT_MODE_RD | MGMT_MODE_WR)
51 
52 #define OCS_ISCSI_MGMT_CMD_PARAMS_LEN 256
53 
54 #define SFP_PAGE_SIZE 128
55 #define SFP_PAGE_A0 0xa0
56 #define SFP_PAGE_A2 0xa2
57 
58 /*
59  * This structure is used in constructing a table of internal handler functions.
60  */
61 typedef void (*ocs_mgmt_get_func)(ocs_t *, char *, ocs_textbuf_t*);
62 typedef int (*ocs_mgmt_set_func)(ocs_t *, char *, char *);
63 typedef int (*ocs_mgmt_action_func)(ocs_t *, char *, void *, uint32_t, void *, uint32_t);
64 typedef struct ocs_mgmt_table_entry_s {
65  char *name;
70 
71 /*
72  * This structure is used when defining the top level management handlers for
73  * different types of objects (sport, node, domain, etc)
74  */
75 typedef void (*ocs_mgmt_get_list_handler)(ocs_textbuf_t *textbuf, void* object);
76 typedef void (*ocs_mgmt_get_all_handler)(ocs_textbuf_t *textbuf, void* object);
77 typedef int (*ocs_mgmt_get_handler)(ocs_textbuf_t *, char *parent, char *name, void *object);
78 typedef int (*ocs_mgmt_set_handler)(char *parent, char *name, char *value, void *object);
79 typedef int (*ocs_mgmt_exec_handler)(char *parent, char *action, void *arg_in, uint32_t arg_in_length,
80  void *arg_out, uint32_t arg_out_length, void *object);
81 
82 typedef struct ocs_mgmt_functions_s {
89 
90 
91 // Helper functions
92 extern void ocs_mgmt_start_section(ocs_textbuf_t *textbuf, const char *name, int index);
93 extern void ocs_mgmt_start_unnumbered_section(ocs_textbuf_t *textbuf, const char *name);
94 extern void ocs_mgmt_end_section(ocs_textbuf_t *textbuf, const char *name, int index);
95 extern void ocs_mgmt_end_unnumbered_section(ocs_textbuf_t *textbuf, const char *name);
96 extern void ocs_mgmt_emit_property_name(ocs_textbuf_t *textbuf, int access, const char *name);
97 extern void ocs_mgmt_emit_string(ocs_textbuf_t *textbuf, int access, const char *name, const char *value);
98 __attribute__((format(printf,4,5)))
99 extern void ocs_mgmt_emit_int(ocs_textbuf_t *textbuf, int access, const char *name, const char *fmt, ...);
100 extern void ocs_mgmt_emit_boolean(ocs_textbuf_t *textbuf, int access, const char *name, const int value);
101 extern int parse_wwn(char *wwn_in, uint64_t *wwn_out);
102 
103 // Top level management functions - called by the ioctl
104 extern void ocs_mgmt_get_list(ocs_t *ocs, ocs_textbuf_t *textbuf);
105 extern void ocs_mgmt_get_all(ocs_t *ocs, ocs_textbuf_t *textbuf);
106 extern int ocs_mgmt_get(ocs_t *ocs, char *name, ocs_textbuf_t *textbuf);
107 extern int ocs_mgmt_set(ocs_t *ocs, char *name, char *value);
108 extern int ocs_mgmt_exec(ocs_t *ocs, char *action, void *arg_in, uint32_t arg_in_length,
109  void *arg_out, uint32_t arg_out_length);
110 extern int32_t ocs_mgmt_get_sfp(ocs_t *ocs, uint16_t page,
111  void *buf, uint32_t buf_len);
112 
113 #endif
int(* ocs_mgmt_set_func)(ocs_t *, char *, char *)
Definition: ocs_mgmt.h:62
ocs_mgmt_get_handler get_handler
Definition: ocs_mgmt.h:84
ocs_mgmt_action_func action_handler
Definition: ocs_mgmt.h:68
int ocs_mgmt_get(ocs_t *ocs, char *name, ocs_textbuf_t *textbuf)
return the value of a mgmt item
Definition: ocs_mgmt.c:337
Definition: ocs_mgmt.h:64
int parse_wwn(char *wwn_in, uint64_t *wwn_out)
ocs_mgmt_set_func set_handler
Definition: ocs_mgmt.h:67
void ocs_mgmt_emit_int(ocs_textbuf_t *textbuf, int mode, const char *name, const char *fmt,...)
Generate a property with an integer value in a management XML document.
int(* ocs_mgmt_exec_handler)(char *parent, char *action, void *arg_in, uint32_t arg_in_length, void *arg_out, uint32_t arg_out_length, void *object)
Definition: ocs_mgmt.h:79
ocs_mgmt_get_func get_handler
Definition: ocs_mgmt.h:66
int ocs_mgmt_set(ocs_t *ocs, char *name, char *value)
set the value of a mgmt item
Definition: ocs_mgmt.c:456
int ocs_mgmt_exec(ocs_t *ocs, char *action, void *arg_in, uint32_t arg_in_length, void *arg_out, uint32_t arg_out_length)
perform a management action
Definition: ocs_mgmt.c:530
ocs_mgmt_exec_handler exec_handler
Definition: ocs_mgmt.h:87
const char * name
Definition: ocs_ddump.h:54
ocs_mgmt_get_all_handler get_all_handler
Definition: ocs_mgmt.h:85
void ocs_mgmt_start_unnumbered_section(ocs_textbuf_t *textbuf, const char *name)
Generate the beginning of an unnumbered section in a management XML document.
void ocs_mgmt_start_section(ocs_textbuf_t *textbuf, const char *name, int index)
Generate the beginning of a numbered section in a management XML document.
int const char const char void ocs_mgmt_emit_boolean(ocs_textbuf_t *textbuf, int access, const char *name, const int value)
Generate a property with a boolean value in a management XML document.
char * name
Definition: ocs_mgmt.h:65
int32_t ocs_mgmt_get_sfp(ocs_t *ocs, uint16_t page, void *buf, uint32_t buf_len)
void ocs_mgmt_get_list(ocs_t *ocs, ocs_textbuf_t *textbuf)
get a list of mgmt items supported by the driver
Definition: ocs_mgmt.c:274
void ocs_mgmt_get_all(ocs_t *ocs, ocs_textbuf_t *textbuf)
Definition: ocs_mgmt.c:396
void(* ocs_mgmt_get_all_handler)(ocs_textbuf_t *textbuf, void *object)
Definition: ocs_mgmt.h:76
void ocs_mgmt_end_unnumbered_section(ocs_textbuf_t *textbuf, const char *name)
Generate the end of a section in a management XML document.
int(* ocs_mgmt_set_handler)(char *parent, char *name, char *value, void *object)
Definition: ocs_mgmt.h:78
void ocs_mgmt_end_section(ocs_textbuf_t *textbuf, const char *name, int index)
Generate the indexed end of a section in a management XML document.
ocs_mgmt_get_list_handler get_list_handler
Definition: ocs_mgmt.h:83
void(* ocs_mgmt_get_list_handler)(ocs_textbuf_t *textbuf, void *object)
Definition: ocs_mgmt.h:75
int(* ocs_mgmt_action_func)(ocs_t *, char *, void *, uint32_t, void *, uint32_t)
Definition: ocs_mgmt.h:63
void(* ocs_mgmt_get_func)(ocs_t *, char *, ocs_textbuf_t *)
Definition: ocs_mgmt.h:61
__attribute__((format(printf, 3, 4))) extern void ocs_ddump_value(ocs_textbuf_t *textbuf
int access
Definition: ocs_mgmt.h:99
void ocs_mgmt_emit_string(ocs_textbuf_t *textbuf, int access, const char *name, const char *value)
Generate a property with a string value in a management XML document.
const char const char * fmt
Definition: ocs_ddump.h:54
void ocs_mgmt_emit_property_name(ocs_textbuf_t *textbuf, int access, const char *name)
Generate a property, with no value, in a management XML document.
ocs_mgmt_set_handler set_handler
Definition: ocs_mgmt.h:86
int(* ocs_mgmt_get_handler)(ocs_textbuf_t *, char *parent, char *name, void *object)
Definition: ocs_mgmt.h:77