日期:2014-05-16  浏览次数:20787 次

如何参考freeradius client编写自己的客户端
freeradius client源码几乎每个.c文件都写了个main函数,如radacct.c radlogin.c radstatus.c
我想自己实现一个client,自己组包,并且处理服务端的响应消息,不知道是怎么调用这些函数(radacct.c),是用类似在控制台实现radiusclient [-f config_file] [-p nas_port] [-s | [-a]]对main函数调用,还是有别的方法?
或者有没有直接调用类库函数的方法呢?谢谢。。。

------解决方案--------------------
一般的做法是在认证阶段下发这个属性,协议原文是:

This Attribute is available to be sent by the server to the client in an Access-Accept or Access-Challenge.

实际上RADIUS协议的断开连接,也是客户端发起的,所以即便是你服务端进行检测,最后还是要让客户端发起计费结束请求。当然也可以扩展RADIUS协议,由NAS定时发送一个包含计费信息(流量、时长)的Access-Request报文,服务端收到后更新计费信息并判断是否需要断开,不过这样的做法貌似并不比Session-Timeout更好,而且开发难度要大一些。