freediameter部分源码分析

本文详细分析了FreeDiameter的部分源码,包括dict_lxml.c中通过XML解析配置并存储到字典的过程,以及服务器启动时client_worker线程和serv_th线程的角色。还介绍了如何设置配置文件以建立Diameter连接,并提供了编译和调试步骤。
摘要由CSDN通过智能技术生成
freediameter状态机启动p_psm_th。


client端:
fd_peer_add添加server,连接每个server启动一个线程,fd_psm_begin,p_psm_th,通过fd_event_timedget获取消息;
如果超时未获取,得到FDEVP_PSM_TIMEOUT消息,执行fd_p_cnx_init,启动connect_thr线程,给自己发送FDEVP_CNX_ESTABLISHED消息;
状态机收到此FDEVP_CNX_ESTABLISHED消息,执行fd_p_ce_handle_newcnx,create_CER并发送,切换到STATE_WAITCEA状态。
如果状态机收到server回复的应答CC_CAPABILITIES_EXCHANGE消息,fd_p_ce_msgrcv,切换到STATE_OPEN状态;启动定时器;
定时器超时fd_p_dw_timeout,如果是第一次,发送DWR,fd_out_send,启动out_thr线程发送消息;




server端:
解析配置文件fd_core_parseconf;通过fd_ext_load,可以加载扩展的动态库;其中每个扩展的动态库,都调用EXTENSION_ENTRY,生成fd_ext_init,动态库的入口。
每个扩展都通过EXTENSION_ENTRY生成自己动态库的fd_ext_init函数,此函数实际调用注册的函数,

如dict_lxml.c调用dict_lxml_entry&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值