MOD aaa-12 增加桥事件通知机制
SOL 增加桥事件通知机制 修改人:zhangliang 检视人:zhangliang
This commit is contained in:
parent
b89e1f0bfc
commit
3c7b5df4bd
|
@ -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);
|
||||
|
||||
/* **********************************************************/
|
||||
/* 配置管理注册函数 */
|
||||
/************************************************************/
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/* 桥配置辅助函数 */
|
||||
|
|
Loading…
Reference in New Issue