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);
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)
{
hnode->event_func(event_type, event_arg);
rpc_log_info("br event:%d\n", event_type);
}
}
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;
@ -45,34 +46,34 @@ int br_event_register(BR_EVENT_TYPE event_type, BR_EVENT_FUNC event_func)
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);
if(!hnode)
{
rpc_log_error("br_event_register failed\n");
return -1;
}
ASSERT_PTR(hnode, RET_NOMEM);
INIT_HLIST_NODE(&hnode->list);
hnode->br_event = event_type;
hnode->event_func = event_func;
pthread_mutex_lock(&(br_event_tbl.lock));
pthread_mutex_lock(&(br_event_tbl.lock));
hlist_add_head(&hnode->list, &(br_event_tbl.head));
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;
struct hlist_node *n;
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));
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));
return 0;
return RET_OK;
}
/* 桥配置辅助函数 */