软件著作权源代码

上传人:ph****6 文档编号:70860422 上传时间:2022-04-06 格式:DOC 页数:124 大小:236KB
收藏 版权申诉 举报 下载
软件著作权源代码_第1页
第1页 / 共124页
软件著作权源代码_第2页
第2页 / 共124页
软件著作权源代码_第3页
第3页 / 共124页
资源描述:

《软件著作权源代码》由会员分享,可在线阅读,更多相关《软件著作权源代码(124页珍藏版)》请在装配图网上搜索。

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_twant_stats = TYBS_FALSE;static charprogram_nameTYB

2、S_DIR_NAMEMAX = named;static charabsolute_conffileTYBS_DIR_PATHMAX;static charsaved_command_line512;static charversion512;static unsigned intmaxsocks = 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_LOGCATEGO

3、RY_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);Voidns_main_earlyfatal(const char *format, .) va_list args;va_start(args, format);if (ns_g_lctx != NULL) tybs_log_vwr

4、ite(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);fprintf(stder

5、r, 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, %s:%d: %s(%s)

6、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(stderr);if (ns_g_

7、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);tybs_log_write(ns_

8、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);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL, exitin

9、g (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 args) TYBS_FORMAT_PRI

10、NTF(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_LOGCATEGORY_GENER

11、AL, 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 debugleveln -f|-g -n numbe

12、r_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 -f|-g -n number_of_cpusn -p port -s -t chrootdir -u usernamen -m u

13、sage|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 = 1; i argc & dst eob; i+) *dst+ = ;s

14、rc = argvi;while (*src != 0 & dst = 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, &endp, 10);tmp = (int) ltmp;if (*endp != 0)ns_main_earlyfatal(%s %s must be

15、 numeric, desc, arg);if (tmp name != NULL; def+) if (arglen = (int)strlen(def-name) & memcmp(arg, def-name, arglen) = 0) *ret |= def-value;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) in

16、t ch;int port;tybs_boolean_t disable6 = TYBS_FALSE;tybs_boolean_t disable4 = TYBS_FALSE;save_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

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

18、 supported by OS);tybs_net_disableipv4();disable4 = TYBS_TRUE;break;case c:ns_g_conffile = 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

19、 = tybs_commandline_argument;if (ns_g_conffileset)ns_main_earlyfatal(cannot specify -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_lo

20、gstderr = TYBS_TRUE;break;/* XXXBEW -i should be removed */case i:lwresd_g_defaultpidfile = tybs_commandline_argument;break;case l:ns_g_lwresdonly = TYBS_TRUE;break;case m:set_flags(tybs_commandline_argument, mem_debug_flags, &tybs_mem_debugging);break;case N: /* Deprecated. */case n:ns_g_cpus = par

21、se_int(tybs_commandline_argument, number of cpus);if (ns_g_cpus = 0)ns_g_cpus = 1;break;case p:port = parse_int(tybs_commandline_argument, port);if (port 65535)ns_main_earlyfatal(port %s out of range,tybs_commandline_argument);ns_g_port = port;break;/* XXXBEW Should -P be removed */case P:port = par

22、se_int(tybs_commandline_argument, port);if (port 65535)ns_main_earlyfatal(port %s out of 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 = t

23、ybs_commandline_argument;break;case T:if (strcmp(tybs_commandline_argument, clienttest) = 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

24、:printf(BIND %s built with %sn, ns_g_version,ns_g_configargs);exit(0);case :usage();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_commandlin

25、e_index;if (argc 0) usage();ns_main_earlyfatal(extra command line arguments);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

26、= 0)ns_g_cpus = cpus_detected;tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_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,

27、 0, &ns_g_taskmgr);if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_, tybs_taskmgr_create() failed: %s,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_timermgr_create(ns_g_mctx, &ns_g_timermgr);if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_, tybs_timerm

28、gr_create() failed: %s,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_, tybs_socketmgr_create() failed: %s,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);r

29、esult = tybs_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);if (result = TYBS_R_SUCCESS) tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,TYBS_LOG_INFO, using up to %u sockets, socks);result = tybs_entropy_create(ns_g_mctx, &ns_g_entropy);if (result != TYBS_R_SUCCESS) UNEXPECTE

30、D_ERROR(_FILE_, _LINE_, tybs_entropy_create() failed: %s,tybs_result_totext(result);return (TYBS_R_UNEXPECTED);result = tybs_hash_create(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);

31、return (TYBS_R_UNEXPECTED);return (TYBS_R_SUCCESS);static voiddestroy_managers(void) ns_lwresd_shutdown();tybs_entropy_detach(&ns_g_entropy);if (ns_g_fallbackentropy != NULL)tybs_entropy_detach(&ns_g_fallbackentropy);tybs_taskmgr_destroy(&ns_g_taskmgr);tybs_timermgr_destroy(&ns_g_timermgr);tybs_sock

32、etmgr_destroy(&ns_g_socketmgr);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 HAVE_LIBSCFresult = ns_smf_get_instance(&instance, 0, ns_g_mctx);if (result = TYBS_R

33、_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, &ns_g_fallbackentropy);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal

34、(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, PATH_RANDOMDEV,tybs_result_totext(result);tybs_entropy_detach(

35、&ns_g_fallbackentropy);*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_app_start();if (resu

36、lt != 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_GENERAL, NS_LOGMODULE_MAI

37、N,TYBS_LOG_NOTICE, built with %s, ns_g_configargs);(void)tybs_resource_getlimit(tybs_resource_stacksize, &ns_g_initstacksize);(void)tybs_resource_getlimit(tybs_resource_datasize, &ns_g_initdatasize);(void)tybs_resource_getlimit(tybs_resource_coresize, &ns_g_initcoresize);(void)tybs_resource_getlimit

38、(tybs_resource_openfiles, &ns_g_initopenfiles);if (! tybs_file_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

39、_totext(result);ns_g_conffile = absolute_conffile;result = tybs_time_now(&ns_g_boottime);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_

40、result_totext(result);ns_builtin_init();*ifdef DLZresult = dlz_drivers_init();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(dlz_drivers_init() failed: %s,tybs_result_totext(result);*endifns_server_create(ns_g_mctx, &ns_g_server);static voidcleanup(void) destroy_managers();ns_server_destroy(&ns_g_s

41、erver);ns_builtin_deinit();*ifdef DLZdlz_drivers_clear();*endifdns_name_destroy();tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, exiting);ns_log_shutdown();static char *memstats = NULL;voidns_main_setmemstats(const char *filename) if (memstats != NULL) free(mems

42、tats);memstats = NULL;if (filename = NULL)return;memstats = malloc(strlen(filename) + 1);if (memstats)strcpy(memstats, filename);*ifdef HAVE_LIBSCFtybs_result_tns_smf_get_instance(char *ins_name, int debug, tybs_mem_t *mctx) scf_handle_t *h = NULL;int namelen;char *instance;REQUIRE(ins_name != NULL

43、& *ins_name = NULL);if (h = scf_handle_create(SCF_VERSION) = NULL) if (debug)UNEXPECTED_ERROR(_FILE_, _LINE_, scf_handle_create() failed: %s, scf_strerror(scf_error();return (TYBS_R_FAILURE);if (scf_handle_bind(h) = -1) if (debug)UNEXPECTED_ERROR(_FILE_, _LINE_, scf_handle_bind() failed: %s, scf_str

44、error(scf_error();scf_handle_destroy(h);return (TYBS_R_FAILURE);if (namelen = scf_myname(h, NULL, 0) = -1) if (debug)UNEXPECTED_ERROR(_FILE_, _LINE_, scf_myname() failed: %s, scf_strerror(scf_error();scf_handle_destroy(h);return (TYBS_R_FAILURE);if (instance = tybs_mem_allocate(mctx, namelen + 1) =

45、NULL) UNEXPECTED_ERROR(_FILE_, _LINE_, ns_smf_get_instance memory allocation failed: %s,tybs_result_totext(TYBS_R_NOMEMORY);scf_handle_destroy(h);return (TYBS_R_FAILURE);if (scf_myname(h, instance, namelen + 1) = -1) if (debug)UNEXPECTED_ERROR(_FILE_, _LINE_, scf_myname() failed: %s, scf_strerror(sc

46、f_error();scf_handle_destroy(h);tybs_mem_free(mctx, instance);return (TYBS_R_FAILURE);scf_handle_destroy(h);*ins_name = instance;return (TYBS_R_SUCCESS);*endif intmain(int argc, char *argv) tybs_result_t result;*ifdef HAVE_LIBSCFchar *instance = NULL;*endifstrlcat(version,*ifdef _DATE_named version:

47、 BIND VERSION ( _DATE_ ),*elsenamed version: BIND VERSION,*endifsizeof(version);result = tybs_file_progname(*argv, program_name, sizeof(program_name);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal(program name too long);if (strcmp(program_name, lwresd) = 0)ns_g_lwresdonly = TYBS_TRUE;tybs_assertion

48、_setcallback(assertion_failed);tybs_error_setfatal(library_fatal_error);tybs_error_setunexpected(library_unexpected_error);ns_os_init(program_name);dns_result_register();dst_result_register();tybscc_result_register();parse_command_line(argc, argv);if (ns_g_chrootdir != NULL) int len = strlen(ns_g_ch

49、rootdir);if (strncmp(ns_g_chrootdir, ns_g_conffile, len) = 0 & (ns_g_conffilelen = / | ns_g_conffilelen = )ns_main_earlywarning(config filename (-c %s) contains chroot path (-t %s), ns_g_conffile, ns_g_chrootdir);result = tybs_mem_create(0, 0, &ns_g_mctx);if (result != TYBS_R_SUCCESS)ns_main_earlyfa

50、tal(tybs_mem_create() failed: %s,tybs_result_totext(result);tybs_mem_setname(ns_g_mctx, main, NULL);setup();do result = tybs_app_run();if (result = TYBS_R_RELOAD) ns_server_reloadwanted(ns_g_server); else if (result != TYBS_R_SUCCESS) UNEXPECTED_ERROR(_FILE_, _LINE_, tybs_app_run(): %s,tybs_result_t

51、otext(result);result = TYBS_R_SUCCESS; while (result != TYBS_R_SUCCESS);*ifdef HAVE_LIBSCFif (ns_smf_want_disable = 1) result = ns_smf_get_instance(&instance, 1, ns_g_mctx);if (result = TYBS_R_SUCCESS & instance != NULL) if (smf_disable_instance(instance, 0) != 0)UNEXPECTED_ERROR(_FILE_, _LINE_, smf_disable_instance() failed for %s : %s, instance, scf_strerror(scf_error();if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);*endif /* HAVE_LIBSCF */cleanup();if (want_stats) tybs_mem_stats(ns_g_mctx, stdout);tybs_mutex_stats(stdout)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!