Mellanox SwitchX SDK API Guide  4.3.2104
sx_lib_adviser.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2010-2019. Mellanox Technologies, Ltd. ALL RIGHTS RESERVED.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may
5  * not use this file except in compliance with the License. You may obtain
6  * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
7  *
8  * THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR
9  * CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
10  * LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS
11  * FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
12  *
13  * See the Apache Version 2.0 License for specific language governing
14  * permissions and limitations under the License.
15  *
16  */
17 
18 
19 #ifndef __SX_LIB_ADVISER_H__
20 #define __SX_LIB_ADVISER_H__
21 
22 #include "sx/sdk/sx_types.h"
23 
24 
25 /************************************************
26  * Type definitions
27  ***********************************************/
28 #define SX_GENERATE_ENUM(ENUM, STR) ENUM,
29 
30 
31 #define FOREACH_SX_LIB_ADVISER_EVENT_TYPE(F) \
32  F(SX_LIB_ADVISER_EVENT_NONE_E = 0, "N/A") \
33  F(SX_LIB_ADVISER_PORT_ADDED_E = 1, "Port Added") \
34  F(SX_LIB_ADVISER_PORT_DELETED_E = 2, "Port Deleted") \
35  F(SX_LIB_ADVISER_PORT_ADDED_TO_LAG = 3, "Port Added to LAG") \
36  F(SX_LIB_ADVISER_PORT_DELETED_FROM_LAG = 4, "Port Deleted from LAG") \
37  F(SX_LIB_ADVISER_EVENT_TYPE_MIN_E = SX_LIB_ADVISER_PORT_ADDED_E, "") \
38  F(SX_LIB_ADVISER_EVENT_TYPE_MAX_E = SX_LIB_ADVISER_PORT_DELETED_FROM_LAG, "")
39 
43 
44 #define SX_LIB_ADVISER_EVENT_TYPE_NUM (SX_LIB_ADVISER_EVENT_TYPE_MAX_E + 1)
45 
46 #define SX_LIB_ADVISER_EVENT_TYPE_CHECK_RANGE(TYPE) \
47  (SX_CHECK_RANGE(SX_LIB_ADVISER_EVENT_TYPE_MIN_E, (TYPE), SX_LIB_ADVISER_EVENT_TYPE_MAX_E))
48 
49 
50 typedef sx_event_port_lag_changes_t sx_lib_adviser_event_lag_changes_t;
51 typedef sx_event_port_added_deleted_t sx_lib_adviser_event_port_added_deleted_t;
52 
53 typedef struct sx_lib_adviser_event_info {
55  union {
58  } info;
60 
61 typedef sx_status_t (*sx_lib_adviser_cb_t)(const sx_lib_adviser_event_info_t event_info, const void *context);
62 
66  void *context;
67  sx_port_log_id_t *excluded_ports_p;
68  uint32_t excluded_ports_cnt;
70 
72  sx_log_cb_t logging_cb;
73  sx_verbosity_level_t verbosity_level;
75 
76 
77 /************************************************
78  * API functions
79  ***********************************************/
80 
93 sx_status_t sx_lib_adviser_init(const sx_lib_adviser_init_params_t init_params);
94 
102 sx_status_t sx_lib_adviser_deinit(void);
103 
104 
118 sx_status_t sx_lib_adviser_event_register(const sx_lib_adviser_event_registration_params_t event_register_params);
119 
133 sx_status_t sx_lib_adviser_event_deregister(const sx_lib_adviser_event_registration_params_t event_register_params);
134 
135 
136 #endif /* __SX_LIB_ADVISER_H__ */
sx_lib_adviser_event_deregister
sx_status_t sx_lib_adviser_event_deregister(const sx_lib_adviser_event_registration_params_t event_register_params)
SX_GENERATE_ENUM
#define SX_GENERATE_ENUM(ENUM, STR)
Definition: sx_lib_adviser.h:28
sx_lib_adviser_cb_t
sx_status_t(* sx_lib_adviser_cb_t)(const sx_lib_adviser_event_info_t event_info, const void *context)
Definition: sx_lib_adviser.h:60
sx_lib_adviser_init_params_t
struct sx_lib_adviser_init_params sx_lib_adviser_init_params_t
sx_lib_adviser_event_registration_params::context
void * context
Definition: sx_lib_adviser.h:65
sx_lib_adviser_event_port_added_deleted_t
sx_event_port_added_deleted_t sx_lib_adviser_event_port_added_deleted_t
Definition: sx_lib_adviser.h:50
sx_lib_adviser_event_registration_params::event_type
sx_lib_adviser_event_type_e event_type
Definition: sx_lib_adviser.h:63
sx_lib_adviser_event_info::port_added_deleted
sx_lib_adviser_event_port_added_deleted_t port_added_deleted
Definition: sx_lib_adviser.h:56
sx_lib_adviser_event_registration_params::callback
sx_lib_adviser_cb_t callback
Definition: sx_lib_adviser.h:64
sx_lib_adviser_event_registration_params_t
struct sx_lib_adviser_event_registration_params sx_lib_adviser_event_registration_params_t
sx_lib_adviser_event_registration_params
Definition: sx_lib_adviser.h:62
sx_lib_adviser_event_type_e
enum sx_lib_adviser_event_type sx_lib_adviser_event_type_e
sx_lib_adviser_event_info::info
union sx_lib_adviser_event_info::@0 info
sx_lib_adviser_event_info
Definition: sx_lib_adviser.h:52
FOREACH_SX_LIB_ADVISER_EVENT_TYPE
#define FOREACH_SX_LIB_ADVISER_EVENT_TYPE(F)
Definition: sx_lib_adviser.h:31
sx_lib_adviser_event_lag_changes_t
sx_event_port_lag_changes_t sx_lib_adviser_event_lag_changes_t
Definition: sx_lib_adviser.h:49
sx_lib_adviser_event_info_t
struct sx_lib_adviser_event_info sx_lib_adviser_event_info_t
sx_lib_adviser_init_params::logging_cb
sx_log_cb_t logging_cb
Definition: sx_lib_adviser.h:71
sx_lib_adviser_event_info::type
sx_lib_adviser_event_type_e type
Definition: sx_lib_adviser.h:53
sx_lib_adviser_init_params::verbosity_level
sx_verbosity_level_t verbosity_level
Definition: sx_lib_adviser.h:72
sx_lib_adviser_event_registration_params::excluded_ports_cnt
uint32_t excluded_ports_cnt
Definition: sx_lib_adviser.h:67
sx_lib_adviser_event_type
sx_lib_adviser_event_type
Definition: sx_lib_adviser.h:40
sx_lib_adviser_event_info::lag_changes
sx_lib_adviser_event_lag_changes_t lag_changes
Definition: sx_lib_adviser.h:55
sx_lib_adviser_event_registration_params::excluded_ports_p
sx_port_log_id_t * excluded_ports_p
Definition: sx_lib_adviser.h:66
sx_lib_adviser_init
sx_status_t sx_lib_adviser_init(const sx_lib_adviser_init_params_t init_params)
sx_lib_adviser_deinit
sx_status_t sx_lib_adviser_deinit(void)
sx_lib_adviser_init_params
Definition: sx_lib_adviser.h:70
sx_lib_adviser_event_register
sx_status_t sx_lib_adviser_event_register(const sx_lib_adviser_event_registration_params_t event_register_params)