消息结构:
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) | oam_layer_intf_process_msg(实体:LayerEntity) -> CSPL_SendMsg | 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_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_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
|