接上篇: radembedded错误的修改

查看路径/usr/local/sbin

可以看到有这么多的有关radius的命令

再看一看源代码中的src文件夹,所有的含有main函数的.c文件都别编译成了相应的命令,上一篇博客我们看到了3个命令的使用: radloginradexampleradacct。我们这次来看看radembedded(还有其他的,我就没怎么研究过了。因为我要做的事情是,利用freeradius的功能设计自己的程序,radembeddedradexampleradacct我看得比较多)。

 

在客户端的主机上运行 radembedded

会看到出错信息:"ERROR: Unable to set dictionary.

这是怎么回事?难道开源的代码还有错?刚开始我也认为怎么会有错呢,设计这些的专家们怎么会看不出来?可事实在这,让我顿时懵了。不过,还是要走下去啊.

回头继续看代码,发现错误在72行:

  if(rc_add_config(rh,"dictionary","/usr/local/radius/dictionary","config",0)!=0)

看出错误了吗?

 

没看出来?那就试试这个吧

cat /usr/local/etc/radiusclient/radiusclient.conf

(也可以看看上篇博客的相应部分)

发现原来是dictionary的值错了,应该是:

/usr/local/etc/radiusclient/dictionary

而不是:  /usr/local/radius/dictionary

改正之。重新编译安装,再运行一下radembedded

又错了?是不是 段错误(Segmentation  Failure)?

 

别着急。用gdb查看一下。指示我们在这个地方出现了问题: buildrequest.c中的rc_aaa函数中,

int          radius_deadtime = rc_conf_int(rh, "radius_deadtime");出现了段错误。

 

我于是去看代码,找不出问题。师兄(佩服并感谢一下)来也看了一段时间,然后找到了错误所在:在radembedded.c中没有把 radius_deadtime写进配置文件中去!

所以要在radembedded.c中添加如下代码(仿照前面的格式即可):

 

if (rc_add_config(rh, "radius_deadtime ", "0", "config", 0) != 0)

       {

              printf("ERROR: Unable to set radius_deadtime./n");

              rc_destroy(rh);

              exit(1);

       }

 

好了,现在没错了。

----------------------------------------------------------------------------------------------------------------------

写这个是因为我之前多相信这些源代码是没有错误的。后面发现了错误对我的触动很大。尽信书不如无书。我们要学会质疑,切记切记!

 

转载请注明来自:piaoxuwuyu的优快云博客。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值