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);
|
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)
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 桥配置辅助函数 */
|
/* 桥配置辅助函数 */
|
||||||
|
|
Loading…
Reference in New Issue