软件著作权源代码.doc

上传人:hw****26 文档编号:4056636 上传时间:2019-09-20 格式:DOC 页数:60 大小:187.50KB
下载 相关 举报
软件著作权源代码.doc_第1页
第1页 / 共60页
软件著作权源代码.doc_第2页
第2页 / 共60页
软件著作权源代码.doc_第3页
第3页 / 共60页
软件著作权源代码.doc_第4页
第4页 / 共60页
软件著作权源代码.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、1#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define NS_MAIN 1#include #endif#ifdef DLZ#include #endifstatic tybs_boolean_t want_stats = TYBS_FALSE;static char program_nameT

2、YBS_DIR_NAMEMAX = “named“;static char absolute_conffileTYBS_DIR_PATHMAX;static char saved_command_line512;static char version512;static unsigned int maxsocks = 0;voidns_main_earlywarning(const char *format, .) va_list args;va_start(args, format);if (ns_g_lctx != NULL) tybs_log_vwrite(ns_g_lctx, NS_L

3、OGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_WARNING,format, args); else fprintf(stderr, “%s: “, program_name);vfprintf(stderr, format, args);fprintf(stderr, “n“);fflush(stderr);va_end(args);Void ns_main_earlyfatal(const char *format, .) va_list args;va_start(args, format);if (ns_g_lctx != NULL) 2

4、tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,format, args);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,“exiting (due to early fatal error)“); else fprintf(stderr, “%s: “, program_name);vfprintf(stderr, format, args);

5、fprintf(stderr, “n“);fflush(stderr);va_end(args);exit(1);static voidassertion_failed(const char *file, int line, tybs_assertiontype_t type,const char *cond)if (ns_g_lctx != NULL) tybs_assertion_setcallback(NULL);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,“%

6、s:%d: %s(%s) failed“, file, line,tybs_assertion_typetotext(type), cond);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,“exiting (due to assertion failure)“); else fprintf(stderr, “%s:%d: %s(%s) failedn“,file, line, tybs_assertion_typetotext(type), cond);fflush(

7、stderr);if (ns_g_coreok)abort();exit(1);static voidlibrary_fatal_error(const char *file, int line, const char *format,va_list args) TYBS_FORMAT_PRINTF(3, 0);static voidlibrary_fatal_error(const char *file, int line, const char *format,va_list args)if (ns_g_lctx != NULL) tybs_error_setfatal(NULL);tyb

8、s_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,“%s:%d: fatal error:“, file, line);tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL,format, args);3tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_CRI

9、TICAL,“exiting (due to fatal error in library)“); else fprintf(stderr, “%s:%d: fatal error: “, file, line);vfprintf(stderr, format, args);fprintf(stderr, “n“);fflush(stderr);if (ns_g_coreok)abort();exit(1);static voidlibrary_unexpected_error(const char *file, int line, const char *format,va_list arg

10、s) TYBS_FORMAT_PRINTF(3, 0);static voidlibrary_unexpected_error(const char *file, int line, const char *format,va_list args)if (ns_g_lctx != NULL) tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_ERROR,“%s:%d: unexpected error:“, file, line);tybs_log_vwrite(ns_g_lctx, NS_

11、LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN, TYBS_LOG_ERROR,format, args); else fprintf(stderr, “%s:%d: fatal error: “, file, line);vfprintf(stderr, format, args);fprintf(stderr, “n“);fflush(stderr);static voidlwresd_usage(void) fprintf(stderr,“usage: lwresd -4|-6 -c conffile | -C resolvconffile “-d debug

12、leveln“ -f|-g -n number_of_cpus -p port “-P listen-port -sn“ -t chrootdir -u username -i pidfilen“ -m usage|trace|record|size|mctxn“);static voidusage(void) if (ns_g_lwresdonly) lwresd_usage();return;fprintf(stderr,“usage: named -4|-6 -c conffile -d debuglevel “4“-f|-g -n number_of_cpusn“ -p port -s

13、 -t chrootdir -u usernamen“ -m usage|trace|record|size|mctxn“);static voidsave_command_line(int argc, char *argv) int i;char *src;char *dst;char *eob;const char truncated = “.“;tybs_boolean_t quoted = TYBS_FALSE;dst = saved_command_line;eob = saved_command_line + sizeof(saved_command_line);for (i =

14、1; i = sizeof(truncated);if (dst = eob)strcpy(eob - sizeof(truncated), truncated);else*dst = 0;static intparse_int(char *arg, const char *desc) char *endp;int tmp;long int ltmp;ltmp = strtol(arg, tmp = (int) ltmp;if (*endp != 0)ns_main_earlyfatal(“%s %s must be numeric“, desc, arg);if (tmp name != N

15、ULL; def+) if (arglen = (int)strlen(def-name) goto found;ns_main_earlyfatal(“unrecognized flag %.*s“, arglen, arg);found:if (*end = 0)break;arg = end + 1;static voidparse_command_line(int argc, char *argv) int ch;int port;tybs_boolean_t disable6 = TYBS_FALSE;tybs_boolean_t disable4 = TYBS_FALSE;save

16、_command_line(argc, argv);tybs_commandline_errprint = TYBS_FALSE;while (ch = tybs_commandline_parse(argc, argv,“46c:C:d:fgi:lm:n:N:p:P:“sS:t:T:u:vVx:“) != -1) switch (ch) case 4:if (disable4)ns_main_earlyfatal(“cannot specify -4 and -6“);if (tybs_net_probeipv4() != TYBS_R_SUCCESS)ns_main_earlyfatal(

17、“IPv4 not supported by OS“);tybs_net_disableipv6();disable6 = TYBS_TRUE;break;case 6:if (disable6)6ns_main_earlyfatal(“cannot specify -4 and -6“);if (tybs_net_probeipv6() != TYBS_R_SUCCESS)ns_main_earlyfatal(“IPv6 not supported by OS“);tybs_net_disableipv4();disable4 = TYBS_TRUE;break;case c:ns_g_co

18、nffile = tybs_commandline_argument;lwresd_g_conffile = tybs_commandline_argument;if (lwresd_g_useresolvconf)ns_main_earlyfatal(“cannot specify -c and -C“);ns_g_conffileset = TYBS_TRUE;break;case C:lwresd_g_resolvconffile = tybs_commandline_argument;if (ns_g_conffileset)ns_main_earlyfatal(“cannot spe

19、cify -c and -C“);lwresd_g_useresolvconf = TYBS_TRUE;break;case d:ns_g_debuglevel = parse_int(tybs_commandline_argument,“debug level“);break;case f:ns_g_foreground = TYBS_TRUE;break;case g:ns_g_foreground = TYBS_TRUE;ns_g_logstderr = TYBS_TRUE;break;/* XXXBEW -i should be removed */case i:lwresd_g_de

20、faultpidfile = tybs_commandline_argument;break;case l:ns_g_lwresdonly = TYBS_TRUE;break;case m:set_flags(tybs_commandline_argument, mem_debug_flags,break;case N: /* Deprecated. */case n:ns_g_cpus = parse_int(tybs_commandline_argument,“number of cpus“);if (ns_g_cpus = 0)ns_g_cpus = 1;break;case p:por

21、t = parse_int(tybs_commandline_argument, “port“);if (port 65535)ns_main_earlyfatal(“port %s out of range“,7tybs_commandline_argument);ns_g_port = port;break;/* XXXBEW Should -P be removed? */case P:port = parse_int(tybs_commandline_argument, “port“);if (port 65535)ns_main_earlyfatal(“port %s out of

22、range“,tybs_commandline_argument);lwresd_g_listenport = port;break;case s:want_stats = TYBS_TRUE;break;case S:maxsocks = parse_int(tybs_commandline_argument,“max number of sockets“);break;case t:ns_g_chrootdir = tybs_commandline_argument;break;case T:if (strcmp(tybs_commandline_argument, “clienttest

23、“) = 0)ns_g_clienttest = TYBS_TRUE;elsefprintf(stderr, “unknown -T flag %sn“,tybs_commandline_argument);break;case u:ns_g_username = tybs_commandline_argument;break;case v:printf(“BIND %sn“, ns_g_version);exit(0);case V:printf(“BIND %s built with %sn“, ns_g_version,ns_g_configargs);exit(0);case ?:us

24、age();if (tybs_commandline_option = ?)exit(0);ns_main_earlyfatal(“unknown option -%c“,tybs_commandline_option);default:ns_main_earlyfatal(“parsing options returned %d“, ch);argc -= tybs_commandline_index;argv += tybs_commandline_index;if (argc 0) usage();8ns_main_earlyfatal(“extra command line argum

25、ents“);static tybs_result_tcreate_managers(void) tybs_result_t result;unsigned int socks;#ifdef TYBS_PLATFORM_USETHREADSunsigned int cpus_detected;#endif#ifdef TYBS_PLATFORM_USETHREADScpus_detected = tybs_os_ncpus();if (ns_g_cpus = 0)ns_g_cpus = cpus_detected;tybs_log_write(ns_g_lctx, NS_LOGCATEGORY

26、_GENERAL, NS_LOGMODULE_SERVER,TYBS_LOG_INFO, “found %u CPU%s, using %u worker thread%s“,cpus_detected, cpus_detected = 1 ? “ : “s“,ns_g_cpus, ns_g_cpus = 1 ? “ : “s“);#elsens_g_cpus = 1;#endifresult = tybs_taskmgr_create(ns_g_mctx, ns_g_cpus, 0, if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_,

27、 _LINE_,“tybs_taskmgr_create() failed: %s“,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_timermgr_create(ns_g_mctx, if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_,“tybs_timermgr_create() failed: %s“,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = t

28、ybs_socketmgr_create2(ns_g_mctx, if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_,“tybs_socketmgr_create() failed: %s“,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_socketmgr_getmaxsockets(ns_g_socketmgr, if (result = TYBS_R_SUCCESS) tybs_log_write(ns_g_lctx, NS_LO

29、GCATEGORY_GENERAL,NS_LOGMODULE_SERVER,TYBS_LOG_INFO, “using up to %u sockets“, socks);result = tybs_entropy_create(ns_g_mctx, if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_,“tybs_entropy_create() failed: %s“,9tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_hash_cre

30、ate(ns_g_mctx, ns_g_entropy, DNS_NAME_MAXWIRE);if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_,“tybs_hash_create() failed: %s“,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);return (TYBS_R_SUCCESS);static voiddestroy_managers(void) ns_lwresd_shutdown();tybs_entropy_detach(if (ns

31、_g_fallbackentropy != NULL)tybs_entropy_detach(tybs_taskmgr_destroy(tybs_timermgr_destroy(tybs_socketmgr_destroy(tybs_hash_destroy();static voidsetup(void) tybs_result_t result;#ifdef HAVE_LIBSCFchar *instance = NULL;#endifns_os_inituserinfo(ns_g_username);ns_os_tzset();ns_os_opendevnull();#ifdef HA

32、VE_LIBSCFresult = ns_smf_get_instance(if (result = TYBS_R_SUCCESS)ns_smf_got_instance = 1;elsens_smf_got_instance = 0;if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);#endif /* HAVE_LIBSCF */#ifdef PATH_RANDOMDEVif (ns_g_chrootdir != NULL) result = tybs_entropy_create(ns_g_mctx, if (result !=

33、 TYBS_R_SUCCESS)ns_main_earlyfatal(“tybs_entropy_create() failed: %s“,tybs_result_totext(result);result = tybs_entropy_createfilesource(ns_g_fallbackentropy,PATH_RANDOMDEV);if (result != TYBS_R_SUCCESS) ns_main_earlywarning(“could not open pre-chroot “entropy source %s: %s“,10PATH_RANDOMDEV,tybs_res

34、ult_totext(result);tybs_entropy_detach(#endifns_os_chroot(ns_g_chrootdir);ns_os_minprivs();result = ns_log_init(TYBS_TF(ns_g_username != NULL);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(“ns_log_init() failed: %s“,tybs_result_totext(result);if (!ns_g_foreground)ns_os_daemonize();result = tybs_ap

35、p_start();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(“tybs_app_start() failed: %s“,tybs_result_totext(result);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, “starting BIND %s%s“, ns_g_version,saved_command_line);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENE

36、RAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, “built with %s“, ns_g_configargs);(void)tybs_resource_getlimit(tybs_resource_stacksize,(void)tybs_resource_getlimit(tybs_resource_datasize,(void)tybs_resource_getlimit(tybs_resource_coresize,(void)tybs_resource_getlimit(tybs_resource_openfiles,if (! tybs_file_

37、isabsolute(ns_g_conffile) result = tybs_file_absolutepath(ns_g_conffile,absolute_conffile,sizeof(absolute_conffile);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(“could not construct absolute path of “configuration file: %s“,tybs_result_totext(result);ns_g_conffile = absolute_conffile;result = tyb

38、s_time_now(if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(“tybs_time_now() failed: %s“,tybs_result_totext(result);result = create_managers();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(“create_managers() failed: %s“,tybs_result_totext(result);ns_builtin_init();#ifdef DLZresult = dlz_drivers_init();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。