概述
bind 启动是从bin/named下的main开始。在bind架构一文已有所介绍,本文试图从更细的角度试图分析,到底做了什么操作。
main开始
重点罗列如下
- program name验证。
- assertion,error_setfatal,setunexpected回调注册
- os_init 包括 paths_init,setup_syslog 初始化,前者用户获取相关配置路径后者用于注册日志。
- dns_result,dst_result,isccc_result注册 分别用于注册 DNS library’s message catalog
- ns_os_daemonize 创建管道和进程
- _app_start初始化线程和信号
- Get the initial resource limits包括isc_resource_stacksize,
isc_resource_datasize,isc_resource_coresize,isc_resource_openfiles - create_managers包括isc_taskmgr_create,isc_timermgr_create,isc_socketmgr_create2,isc_socketmgr_getmaxsockets,isc_entropy_create,isc_hash_create 创建managers
- ns_server_create 创建server 此处为重点
ns_server_create
- 分配nameserver 内存 ns_server_create
- Initialize conf