Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

消息结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
32字节的CSPL_HEAD + Payload

CSPL_HEAD:
Magic(4)+TRANS_ID(4)+SRC_ID(4)+DST_ID(4)+API_ID(2)+API_PRIO(2)+MSG_LENGTH(4)+paramLen(2)+Payload(2)+RESERV(4) = 32
SRC_ID = TYPE_ID(8bit)+CPU_ID(4bit)+柜(4bit)+槽(8bit)+框(8bit)
Payload:
api_id(2,oam中添加,msg_id)+cIdGroupNumber(1)+enOpCode(1)+cIdGroupLength(4)+cIdNumber(1)+cId(2)+cIdLength(4) = 13

cIdGroupLength = 数据总长度 - CSPL_HEAD_SIZE - 8
cIdNumber = 数据条数

CSPL_HEAD+API_ID+cIdGroupNumber+enOpCode+cIdGroupLength+cIdNumber[2] + cId1 + cIdLength1 + 数据1
+ cId2 + cIdLength2 + 数据2

DEVIP程序:

ADD DEVIP: PN=”1”,IP=”1.1.1.2”,MASK=”255.255.255.0”,VLAN=”1”,AddressingType=”Static”,Usage=”SigPlan

WebLMT消息下发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
CSPL_MAIN(mml)  -> initSectServ(循环接收消息:消息进入) 
-> checkMsgSock(区分消息为心跳或请求)
-> req_cnnd(请求消息)
-- readcmd(读取前台数据)
-> handleStmt(处理)
-- parse(解析数据)
-- trans(有些复杂未了解)
->> SendQuery(进入发送队列,唤醒其他线程)
|
CSPL_MAIN(lte_oam) //创建并注册各个实体(LayerEntity,CfgEntity)
|
oam_layer_intf_process_msg(实体:LayerEntity) -> CSPL_SendMsg
//根据api_id,配置module_id并转发至对应的模块(oam_cfg_intf_process_msg)
|
oam_cfg_intf_process_msg(实体:CfgEntity 注意:g_cfgMsgRspFunc->配置消息回应函数)
-> oam_cfg_msg_handle_req(全局变量未匹配到:cfg请求消息处理)
-> oam_cfg_msg_handle(全局变量未匹配到:处理配置消息)
-- oam_cfg_msg_handle_add_del_mod(根据enOpCode执行对应的功能:增删改查配置消息)
-> oam_cfg_get_moduleID_and_apiID(根据motype获取module_id和api_id)
-> CSPL_SendMsg
-- oam_cfg_ha_active_send_add_del_mod_msg
-> CSPL_HA_SendBoardMsg(发送板间消息)
-- oam_cfg_ha_enb_db_submit(修改数据库)
|
CSPL_MAIN(lte_ncp) -- ncp_parse_trm_scheme_cfg_file(初始化全局变量g_LteSchemeVppFlg)
--- ncp_init_trm_scheme_cfg_para
--- ncp_trm_scheme_conf_parse_arr
-> ncp_parse_lte_scheme_vpp_flag
-- ncp_init_local(初始化全局变量g_ncp_local)
-- ncp_init_oam_driver(初始化NCP消息通信实体oam_msg_entity)
--- ncp_init_oam_msg_addr(初始化CSPL通信地址,静态路由配置)
--- ncp_init_oam_msg_driver(创建注册通信entity)
-- ncp_int_module(初始化各功能模块)
-> g_module_init_array
//创建并注册NCP与OAM通信实体(oam_msg_entity)
|
ncp_process_msg(实体:oam_msg_entity)
-> ncp_oam_process_msg(根据type_id执行对应的功能:oam ipc消息处理)
-> ncp_process_cfg_from_oam(根据api_id执行对应的功能:OAM配置消息处理)
-> ncp_send_cfg_to_agent(根据宏IS_AGENT_CFG执行对应功能:NCP发送配置信息给AGENT)
-> CSPL_SendMsg
|
CSPL_MAIN(lte_agent)
-- agent_env_init(agent环境初始化)
-> ethname_init(eth名称初始化)
-> get_eth_name_from_cofig_file(从配置文件trm.cfg获取eth名称)
-- agent_init_local(初始化全局变量g_agent_local)
-- agent_init_oam_driver(初始化AGENT消息通信实体agent_msg_entity)
--- agent_init_oam_msg_addr(初始化与OAM通信地址,静态路由配置)
--- agent_init_oam_msg_driver(创建注册通信entity)
-- agent_parse_trm_slot_num_mcb_cfg_file(从配置文件trp_slot_num_mcb.cfg中获取主控板MCB槽号)
--- agent_init_trm_slot_num_mcb_cfg_para(设置默认槽号7)
--- conf_parse_func(解析数据)
-- pthread_create(创建va_start,agent_mo_proc_thread,agent_pm_proc_thread,agent_omch_dhcp_proc_thread四个线程)
//创建并注册AGENT与OAM通信实体,创建agent_mo_proc_thread等线程
|
agent_process_msg(实体:agent_msg_entity)
-> agent_ncp_process_msg(根据type_id执行对应的功能:ncp ipc消息处理)
-> agent_process_cfg_from_oam(根据api_id执行对应的功能:OAM配置消息处理)
-> agent_send_rsp_to_ncp(AGENT发送应答消息给NCP)
-> CSPL_SendMsg
|
agent_mo_proc_thread(MO处理线程)
-> agent_cfg_mo_proc_in_thread(MO配置信息处理)
-- agent_add_devip(addFunc>pAgentDeal>agent_mo_ctx 。agent添加DEVIP)
-> kernel_add_del_static_devip(系统内核添加删除静态DEVIP)
-> EXEC_CAM_AND_FAIL_RETRY
-> exec_cmd(执行命令行命令)
-(失败)- agent_add_re_deal_item

agent消息回传

1
2
3
4
5
6
7
8
9
10
11
agent_send_rsp_to_ncp(封装消息头 和 有效载体,并进行发送)
|
ncp_process_msg -> ncp_agent_process_msg
|
oam_layer_intf_process_msg
|
oam_cfg_intf_process_msg
|
OAM_SendMsgToNmsOrMML
|
initSectServ

评论