⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 host.c

📁 bind 9.3结合mysql数据库
💻 C
📖 第 1 页 / 共 2 页
字号:
	/*	 * We get called multiple times.	 * Preserve any existing error status.	 */	force_error = (seen_error == 1) ? 1 : 0;	seen_error = 1;	if (listed_server) {		char sockstr[ISC_SOCKADDR_FORMATSIZE];		printf("Using domain server:\n");		printf("Name: %s\n", query->servname);		isc_sockaddr_format(&query->sockaddr, sockstr,				    sizeof(sockstr));		printf("Address: %s\n", sockstr);		printf("Aliases: \n\n");	}	if (msg->rcode != 0) {		char namestr[DNS_NAME_FORMATSIZE];		dns_name_format(query->lookup->name, namestr, sizeof(namestr));		printf("Host %s not found: %d(%s)\n", namestr,		       msg->rcode, rcodetext[msg->rcode]);		return (ISC_R_SUCCESS);	}	if (default_lookups && query->lookup->rdtype == dns_rdatatype_a) {		char namestr[DNS_NAME_FORMATSIZE];		dig_lookup_t *lookup;		/* Add AAAA and MX lookups. */		dns_name_format(query->lookup->name, namestr, sizeof(namestr));		lookup = clone_lookup(query->lookup, ISC_FALSE);		if (lookup != NULL) {			strncpy(lookup->textname, namestr,				sizeof(lookup->textname));			lookup->textname[sizeof(lookup->textname)-1] = 0;			lookup->rdtype = dns_rdatatype_aaaa;                        lookup->rdtypeset = ISC_TRUE;			lookup->origin = NULL;			lookup->retries = tries;			ISC_LIST_APPEND(lookup_list, lookup, link);		}		lookup = clone_lookup(query->lookup, ISC_FALSE);		if (lookup != NULL) {			strncpy(lookup->textname, namestr,				sizeof(lookup->textname));			lookup->textname[sizeof(lookup->textname)-1] = 0;			lookup->rdtype = dns_rdatatype_mx;                        lookup->rdtypeset = ISC_TRUE;			lookup->origin = NULL;			lookup->retries = tries;			ISC_LIST_APPEND(lookup_list, lookup, link);		}	}	if (!short_form) {		printf(";; ->>HEADER<<- opcode: %s, status: %s, id: %u\n",		       opcodetext[msg->opcode], rcodetext[msg->rcode],		       msg->id);		printf(";; flags: ");		if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) {			printf("qr");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) {			printf("%saa", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {			printf("%stc", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) {			printf("%srd", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) {			printf("%sra", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) {			printf("%sad", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) {			printf("%scd", did_flag ? " " : "");			did_flag = ISC_TRUE;		}		printf("; QUERY: %u, ANSWER: %u, "		       "AUTHORITY: %u, ADDITIONAL: %u\n",		       msg->counts[DNS_SECTION_QUESTION],		       msg->counts[DNS_SECTION_ANSWER],		       msg->counts[DNS_SECTION_AUTHORITY],		       msg->counts[DNS_SECTION_ADDITIONAL]);		opt = dns_message_getopt(msg);		if (opt != NULL)			printf(";; EDNS: version: %u, udp=%u\n",			       (unsigned int)((opt->ttl & 0x00ff0000) >> 16),			       (unsigned int)opt->rdclass);		tsigname = NULL;		tsig = dns_message_gettsig(msg, &tsigname);		if (tsig != NULL)			printf(";; PSEUDOSECTIONS: TSIG\n");	}	if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_QUESTION]) &&	    !short_form) {		printf("\n");		result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION",				      ISC_TRUE, query);		if (result != ISC_R_SUCCESS)			return (result);	}	if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_ANSWER])) {		if (!short_form)			printf("\n");		result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER",				      ISC_TF(!short_form), query);		if (result != ISC_R_SUCCESS)			return (result);	}	if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_AUTHORITY]) &&	    !short_form) {		printf("\n");		result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY",				      ISC_TRUE, query);		if (result != ISC_R_SUCCESS)			return (result);	}	if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_ADDITIONAL]) &&	    !short_form) {		printf("\n");		result = printsection(msg, DNS_SECTION_ADDITIONAL,				      "ADDITIONAL", ISC_TRUE, query);		if (result != ISC_R_SUCCESS)			return (result);	}	if ((tsig != NULL) && !short_form) {		printf("\n");		result = printrdata(msg, tsig, tsigname,				    "PSEUDOSECTION TSIG", ISC_TRUE);		if (result != ISC_R_SUCCESS)			return (result);	}	if (!short_form)		printf("\n");	if (short_form && !default_lookups &&	    ISC_LIST_EMPTY(msg->sections[DNS_SECTION_ANSWER])) {		char namestr[DNS_NAME_FORMATSIZE];		char typestr[DNS_RDATATYPE_FORMATSIZE];		dns_name_format(query->lookup->name, namestr, sizeof(namestr));		dns_rdatatype_format(query->lookup->rdtype, typestr,				     sizeof(typestr));		printf("%s has no %s record\n", namestr, typestr);	}	seen_error = force_error;	return (result);}static voidparse_args(isc_boolean_t is_batchfile, int argc, char **argv) {	char hostname[MXNAME];	dig_lookup_t *lookup;	int c;	char store[MXNAME];	isc_textregion_t tr;	isc_result_t result = ISC_R_SUCCESS;	dns_rdatatype_t rdtype;	dns_rdataclass_t rdclass;	isc_uint32_t serial = 0;	UNUSED(is_batchfile);	lookup = make_empty_lookup();	while ((c = isc_commandline_parse(argc, argv, "lvwrdt:c:aTCN:R:W:Dni46"))	       != EOF) {		switch (c) {		case 'l':			lookup->tcp_mode = ISC_TRUE;			lookup->rdtype = dns_rdatatype_axfr;			lookup->rdtypeset = ISC_TRUE;			fatalexit = 3;			break;		case 'v':		case 'd':			short_form = ISC_FALSE;			break;		case 'r':			lookup->recurse = ISC_FALSE;			break;		case 't':			if (strncasecmp(isc_commandline_argument,					"ixfr=", 5) == 0) {				rdtype = dns_rdatatype_ixfr;				/* XXXMPA add error checking */				serial = strtoul(isc_commandline_argument + 5,						 NULL, 10);				result = ISC_R_SUCCESS;			} else {				tr.base = isc_commandline_argument;				tr.length = strlen(isc_commandline_argument);				result = dns_rdatatype_fromtext(&rdtype,						   (isc_textregion_t *)&tr);			}			if (result != ISC_R_SUCCESS) {				fatalexit = 2;				fatal("invalid type: %s\n",				      isc_commandline_argument);			}			if (!lookup->rdtypeset ||			    lookup->rdtype != dns_rdatatype_axfr)				lookup->rdtype = rdtype;			lookup->rdtypeset = ISC_TRUE;			if (rdtype == dns_rdatatype_axfr) {				/* -l -t any -v */				list_type = dns_rdatatype_any;				short_form = ISC_FALSE;				lookup->tcp_mode = ISC_TRUE;			} else if (rdtype == dns_rdatatype_ixfr) {				lookup->ixfr_serial = serial;				list_type = rdtype;			} else				list_type = rdtype;			list_addresses = ISC_FALSE;			break;		case 'c':			tr.base = isc_commandline_argument;			tr.length = strlen(isc_commandline_argument);			result = dns_rdataclass_fromtext(&rdclass,						   (isc_textregion_t *)&tr);			if (result != ISC_R_SUCCESS) {				fatalexit = 2;				fatal("invalid class: %s\n",				      isc_commandline_argument);			} else {				lookup->rdclass = rdclass;				lookup->rdclassset = ISC_TRUE;			}			default_lookups = ISC_FALSE;			break;		case 'a':			if (!lookup->rdtypeset ||			    lookup->rdtype != dns_rdatatype_axfr)				lookup->rdtype = dns_rdatatype_any;			list_type = dns_rdatatype_any;			list_addresses = ISC_FALSE;			lookup->rdtypeset = ISC_TRUE;			short_form = ISC_FALSE;			default_lookups = ISC_FALSE;			break;		case 'i':			lookup->ip6_int = ISC_TRUE;			break;		case 'n':			/* deprecated */			break;		case 'w':			/*			 * The timer routines are coded such that			 * timeout==MAXINT doesn't enable the timer			 */			timeout = INT_MAX;			break;		case 'W':			timeout = atoi(isc_commandline_argument);			if (timeout < 1)				timeout = 1;			break;		case 'R':			tries = atoi(isc_commandline_argument) + 1;			if (tries < 2)				tries = 2;			break;		case 'T':			lookup->tcp_mode = ISC_TRUE;			break;		case 'C':			debug("showing all SOAs");			lookup->rdtype = dns_rdatatype_ns;			lookup->rdtypeset = ISC_TRUE;			lookup->rdclass = dns_rdataclass_in;			lookup->rdclassset = ISC_TRUE;			lookup->ns_search_only = ISC_TRUE;			lookup->trace_root = ISC_TRUE;			lookup->identify_previous_line = ISC_TRUE;			default_lookups = ISC_FALSE;			break;		case 'N':			debug("setting NDOTS to %s",			      isc_commandline_argument);			ndots = atoi(isc_commandline_argument);			break;		case 'D':			debugging = ISC_TRUE;			break;		case '4':			if (have_ipv4) {				isc_net_disableipv6();				have_ipv6 = ISC_FALSE;			} else				fatal("can't find IPv4 networking");			break;		case '6':			if (have_ipv6) {				isc_net_disableipv4();				have_ipv4 = ISC_FALSE;			} else				fatal("can't find IPv6 networking");			break;		}	}	lookup->retries = tries;	if (isc_commandline_index >= argc)		show_usage();	strncpy(hostname, argv[isc_commandline_index], sizeof(hostname));	hostname[sizeof(hostname)-1]=0;	if (argc > isc_commandline_index + 1) {		set_nameserver(argv[isc_commandline_index+1]);		debug("server is %s", argv[isc_commandline_index+1]);		listed_server = ISC_TRUE;	}	lookup->pending = ISC_FALSE;	if (get_reverse(store, sizeof(store), hostname,			lookup->ip6_int, ISC_TRUE) == ISC_R_SUCCESS) {		strncpy(lookup->textname, store, sizeof(lookup->textname));		lookup->textname[sizeof(lookup->textname)-1] = 0;		lookup->rdtype = dns_rdatatype_ptr;		lookup->rdtypeset = ISC_TRUE;		default_lookups = ISC_FALSE;	} else {		strncpy(lookup->textname, hostname, sizeof(lookup->textname));		lookup->textname[sizeof(lookup->textname)-1]=0;	}	lookup->new_search = ISC_TRUE;	ISC_LIST_APPEND(lookup_list, lookup, link);	usesearch = ISC_TRUE;}intmain(int argc, char **argv) {	isc_result_t result;	tries = 2;	ISC_LIST_INIT(lookup_list);	ISC_LIST_INIT(server_list);	ISC_LIST_INIT(search_list);		fatalexit = 1;	debug("main()");	progname = argv[0];	result = isc_app_start();	check_result(result, "isc_app_start");	setup_libs();	parse_args(ISC_FALSE, argc, argv);	setup_system();	result = isc_app_onrun(mctx, global_task, onrun_callback, NULL);	check_result(result, "isc_app_onrun");	isc_app_run();	cancel_all();	destroy_libs();	isc_app_finish();	return ((seen_error == 0) ? 0 : 1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -