MOD aaa-12 增加桥事件通知机制

SOL  增加桥事件通知机制
修改人:zhangliang
检视人:zhangliang
This commit is contained in:
zhanglianghy 2019-08-05 10:41:01 +08:00
parent b89e1f0bfc
commit 3c7b5df4bd
2 changed files with 18 additions and 11 deletions

View File

@ -131,6 +131,12 @@ ret_code br_if_bridge_del(char *br_name, char *port_list,
/* 获取桥中接口数量 */ /* 获取桥中接口数量 */
int br_if_bridge_num(char *br_name); int br_if_bridge_num(char *br_name);
ret_code br_event_register(BR_EVENT_TYPE event_type,
BR_EVENT_FUNC event_func);
ret_code br_event_unregister(BR_EVENT_TYPE event_type,
BR_EVENT_FUNC event_func);
/* **********************************************************/ /* **********************************************************/
/* 配置管理注册函数 */ /* 配置管理注册函数 */
/************************************************************/ /************************************************************/

View File

@ -28,13 +28,14 @@ int br_invoke_event(BR_EVENT_TYPE event_type, br_event_t event_arg)
if(hnode->br_event == event_type) if(hnode->br_event == event_type)
{ {
hnode->event_func(event_type, event_arg); hnode->event_func(event_type, event_arg);
rpc_log_info("br event:%d\n", event_type);
} }
} }
pthread_mutex_unlock(&(br_event_tbl.lock)); pthread_mutex_unlock(&(br_event_tbl.lock));
} }
int br_event_register(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func) ret_code br_event_register(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
{ {
br_event_node_t *hnode = NULL; br_event_node_t *hnode = NULL;
@ -45,12 +46,10 @@ int br_event_register(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
br_event_tbl.init = TRUE; br_event_tbl.init = TRUE;
} }
rpc_log_info("br event register:%d\n", event_type);
hnode = (br_event_node_t *)rpc_new0(br_event_node_t, 1); hnode = (br_event_node_t *)rpc_new0(br_event_node_t, 1);
if(!hnode) ASSERT_PTR(hnode, RET_NOMEM);
{
rpc_log_error("br_event_register failed\n");
return -1;
}
INIT_HLIST_NODE(&hnode->list); INIT_HLIST_NODE(&hnode->list);
hnode->br_event = event_type; hnode->br_event = event_type;
@ -60,19 +59,21 @@ int br_event_register(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
hlist_add_head(&hnode->list, &(br_event_tbl.head)); hlist_add_head(&hnode->list, &(br_event_tbl.head));
pthread_mutex_unlock(&(br_event_tbl.lock)); pthread_mutex_unlock(&(br_event_tbl.lock));
return 0; return RET_OK;
} }
int br_event_unregister(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func) ret_code br_event_unregister(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
{ {
br_event_node_t *hnode = NULL; br_event_node_t *hnode = NULL;
struct hlist_node *n; struct hlist_node *n;
if(br_event_tbl.init == FALSE) if(br_event_tbl.init == FALSE)
{ {
return 0; return RET_OK;
} }
rpc_log_info("br event unregister:%d\n", event_type);
pthread_mutex_lock(&(br_event_tbl.lock)); pthread_mutex_lock(&(br_event_tbl.lock));
hlist_for_each_entry_safe(hnode, n, &(br_event_tbl.head), list) hlist_for_each_entry_safe(hnode, n, &(br_event_tbl.head), list)
{ {
@ -86,7 +87,7 @@ int br_event_unregister(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
} }
pthread_mutex_unlock(&(br_event_tbl.lock)); pthread_mutex_unlock(&(br_event_tbl.lock));
return 0; return RET_OK;
} }
/* 桥配置辅助函数 */ /* 桥配置辅助函数 */