freeradius学习文档.doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
freeradius学习文档 启动 freeradius驱动运行部分 /main/radiusd.c下radius_event_init函数中: listen_init函数初始化rad_listen_t的数据结构 rad_event_init函数中调用event_new_fd将rad_listen_t链表对应的描述符依次插入到fr_event_list_t结构中,并且指定fr_event_fd_handler_t,并将rad_listen_t作为ctx放入结构中。 /main/radiusd.c下radius_event_process调用 fr_event_loop调用select监听所有文件描述符,发现描述符中有数据可以读取时,调用该套接口下对应的函数进行处理,即fr_event_fd_t下的handler字段。 fr_event_fd_handler_t使用执行上下文参数ctx从fd中取出数据,并且rad_listen_recv_t读取数据后,并且指定处理函数,所以不管是单线程还是线程池都能正常地工作。 typedef int (* rad_listen_recv_t)(rad_listen_t *, RAD_REQUEST_FUNP *, REQUEST **); typedef int (*RAD_REQUEST_FUNP)(REQUEST *); listener作为REQUEST的一个字段放入,在内存中找到client后,将client也作为一个字段放入REQUEST。 读取用户参数 /src/main/radiusd.c下main函数中 getopt(argc, argv, "Cd:fhi:l:mn:p:stvxX")函数接收用户参数进行相应的设置 getopt函数决定选项-d, -i, -n, -p后需要接入参数 具体选项: -C check_config设为TRUE spaw_flag设为FALSE dont_fork设为TRUE 该选项使radius在前台运行,不创建线程池,在读取完配置文件加载模块后结束 -d conf_dir 用conf_dir指向的内容,替换radius_dir中的内容 该选项指定配置文件所在的目录 -f 指定dont_fork为TRUE 改选项指定radius前台运行 -h 打印帮助消息,调用exit结束进程 -l log_file_name 在全局配置变量main_config中指定日志文件为log_file_name,当指定stdout时为标准输出,并试图打开文件,不能打开则退出程序。 -i hostip 在全局变量中指定main_config中指定radius所在机器的ip -n conf_name main_config中name字段默认为radiusd,该选项将那么重新指定为conf_name -m 将全局变量debug_memory设定为1 -s 将spawn_flag设定为false,dont_fork设定为true,达到前台运行单进程下单线程效果 -t 将spawn_flag设定为false,不创建线程池后台启动 -v 输出freeradius的版本信息,调用exit退出进程 -X spawn_flag设定为false,dont_fork设定为true,全局变量debug增加2(DEBUG2函数会向日志文件中输出),main_config中指定日志输出到stdtou中 -x 全局变量debug自增,和函数DEBUGX相对应,日志输出位置为默认位置,可以通过其他选项进行指定 -p port_number mainconfig中指定port号为port_number 读取配置文件 组织形式 这里另外会形成一个单向链表和一颗树,每个子节点都知道自己的父节点,只有section节点可以作为父节点。 CONF_DATA主要用于防止配置重复加载 说明: 只有section节点才能衍生出子节点 CONF_ITEM为CONF系列的通用指针,便于组织数据结构,next和parent指针用于组织十字链表,lineno和filename用于读取配置失败时进行提示哪里出错,type用于指定CONF_ITEM被包含在什么类型中。 CONF_PAIR中attr为第一个token前面的内容,空格也被认为是token,但是oo xx会被认为是name1为oo,name2为xx的section,并且后面不带“{”会被认为是出错。oo为合法pair,token为T_OP_EQ,value为oo,结果为oo = NULL。具体可以查看cf_section_ read。 CONF_DATA中name和flag都由程序指定,flag取值:PW_TYPE_STRINT_PTR,

文档评论(0)

1318384917 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档