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

📄 parser.c

📁 bind-3.2.
💻 C
📖 第 1 页 / 共 5 页
字号:
static cfg_tuplefielddef_t acl_fields[] = {	{ "name", &cfg_type_astring, 0 },	{ "value", &cfg_type_bracketed_aml, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_acl = {	"acl", parse_tuple, print_tuple, &cfg_rep_tuple, acl_fields };/* * "sockaddrkeylist", a list of socket addresses with optional keys * and an optional default port, as used in the masters option. * E.g., *   "port 1234 { 10.0.0.1 key foo; 1::2 port 69; }" */static cfg_tuplefielddef_t sockaddrkey_fields[] = {	{ "sockaddr", &cfg_type_sockaddr, 0 },	{ "key", &cfg_type_optional_keyref, 0 },	{ NULL, NULL, 0 },};static cfg_type_t cfg_type_sockaddrkey = {	"sockaddrkey", parse_tuple, print_tuple, &cfg_rep_tuple,	sockaddrkey_fields};static cfg_type_t cfg_type_bracketed_sockaddrkeylist = {	"bracketed_sockaddrkeylist", parse_bracketed_list,	print_bracketed_list, &cfg_rep_list, &cfg_type_sockaddrkey};static cfg_tuplefielddef_t sockaddrkeylist_fields[] = {	{ "port", &cfg_type_optional_port, 0 },	{ "addresses", &cfg_type_bracketed_sockaddrkeylist, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_sockaddrkeylist = {	"sockaddrkeylist", parse_tuple, print_tuple, &cfg_rep_tuple,	sockaddrkeylist_fields};/* * A list of socket addresses with an optional default port, * as used in the also-notify option.  E.g., * "port 1234 { 10.0.0.1; 1::2 port 69; }" */static cfg_tuplefielddef_t portiplist_fields[] = {	{ "port", &cfg_type_optional_port, 0 },	{ "addresses", &cfg_type_bracketed_sockaddrlist, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_portiplist = {	"portiplist", parse_tuple, print_tuple, &cfg_rep_tuple,	portiplist_fields};/* * A public key, as in the "pubkey" statement. */static cfg_tuplefielddef_t pubkey_fields[] = {	{ "flags", &cfg_type_uint32, 0 },	{ "protocol", &cfg_type_uint32, 0 },	{ "algorithm", &cfg_type_uint32, 0 },	{ "key", &cfg_type_qstring, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_pubkey = {	"pubkey", parse_tuple, print_tuple, &cfg_rep_tuple, pubkey_fields };/* * A list of RR types, used in grant statements. * Note that the old parser allows quotes around the RR type names. */static cfg_type_t cfg_type_rrtypelist = {	"rrtypelist", parse_spacelist, print_spacelist, &cfg_rep_list,	&cfg_type_astring};static const char *mode_enums[] = { "grant", "deny", NULL };static cfg_type_t cfg_type_mode = {	"mode", parse_enum, print_ustring, &cfg_rep_string,	&mode_enums};static const char *matchtype_enums[] = {	"name", "subdomain", "wildcard", "self", NULL };static cfg_type_t cfg_type_matchtype = {	"matchtype", parse_enum, print_ustring, &cfg_rep_string,	&matchtype_enums};/* * A grant statement, used in the update policy. */static cfg_tuplefielddef_t grant_fields[] = {	{ "mode", &cfg_type_mode, 0 },	{ "identity", &cfg_type_astring, 0 }, /* domain name */ 	{ "matchtype", &cfg_type_matchtype, 0 },	{ "name", &cfg_type_astring, 0 }, /* domain name */	{ "types", &cfg_type_rrtypelist, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_grant = {	"grant", parse_tuple, print_tuple, &cfg_rep_tuple, grant_fields };static cfg_type_t cfg_type_updatepolicy = {	"update_policy", parse_bracketed_list, print_bracketed_list,	&cfg_rep_list, &cfg_type_grant};/* * A view statement. */static cfg_tuplefielddef_t view_fields[] = {	{ "name", &cfg_type_astring, 0 },	{ "class", &cfg_type_optional_class, 0 },	{ "options", &cfg_type_viewopts, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_view = {	"view", parse_tuple, print_tuple, &cfg_rep_tuple, view_fields };/* * A zone statement. */static cfg_tuplefielddef_t zone_fields[] = {	{ "name", &cfg_type_astring, 0 },	{ "class", &cfg_type_optional_class, 0 },	{ "options", &cfg_type_zoneopts, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_zone = {	"zone", parse_tuple, print_tuple, &cfg_rep_tuple, zone_fields };/* * A "category" clause in the "logging" statement. */static cfg_tuplefielddef_t category_fields[] = {	{ "name", &cfg_type_astring, 0 },	{ "destinations", &cfg_type_destinationlist,0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_category = {	"category", parse_tuple, print_tuple, &cfg_rep_tuple, category_fields };/* * A trusted key, as used in the "trusted-keys" statement. */static cfg_tuplefielddef_t trustedkey_fields[] = {	{ "name", &cfg_type_astring, 0 },	{ "flags", &cfg_type_uint32, 0 },	{ "protocol", &cfg_type_uint32, 0 },	{ "algorithm", &cfg_type_uint32, 0 },	{ "key", &cfg_type_qstring, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_trustedkey = {	"trustedkey", parse_tuple, print_tuple, &cfg_rep_tuple,	trustedkey_fields};static keyword_type_t wild_class_kw = { "class", &cfg_type_ustring };static cfg_type_t cfg_type_optional_wild_class = {	"optional_wild_class", parse_optional_keyvalue,	print_keyvalue, &cfg_rep_string, &wild_class_kw};static keyword_type_t wild_type_kw = { "type", &cfg_type_ustring };static cfg_type_t cfg_type_optional_wild_type = {	"optional_wild_type", parse_optional_keyvalue,	print_keyvalue, &cfg_rep_string, &wild_type_kw};static keyword_type_t wild_name_kw = { "name", &cfg_type_qstring };static cfg_type_t cfg_type_optional_wild_name = {	"optional_wild_name", parse_optional_keyvalue,	print_keyvalue, &cfg_rep_string, &wild_name_kw};/* * An rrset ordering element. */static cfg_tuplefielddef_t rrsetorderingelement_fields[] = {	{ "class", &cfg_type_optional_wild_class, 0 },	{ "type", &cfg_type_optional_wild_type, 0 },	{ "name", &cfg_type_optional_wild_name, 0 },	{ "order", &cfg_type_ustring, 0 }, /* must be literal "order" */ 	{ "ordering", &cfg_type_ustring, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_rrsetorderingelement = {	"rrsetorderingelement", parse_tuple, print_tuple, &cfg_rep_tuple,	rrsetorderingelement_fields};/* * A global or view "check-names" option.  Note that the zone * "check-names" option has a different syntax. */static cfg_tuplefielddef_t checknames_fields[] = {	{ "type", &cfg_type_ustring, 0 },	{ "mode", &cfg_type_ustring, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_checknames = {	"checknames", parse_tuple, print_tuple, &cfg_rep_tuple,	checknames_fields};static cfg_type_t cfg_type_bracketed_sockaddrlist = {	"bracketed_sockaddrlist", parse_bracketed_list, print_bracketed_list,	&cfg_rep_list, &cfg_type_sockaddr};static cfg_type_t cfg_type_rrsetorder = {	"rrsetorder", parse_bracketed_list, print_bracketed_list,	&cfg_rep_list, &cfg_type_rrsetorderingelement};static keyword_type_t port_kw = { "port", &cfg_type_uint32 };static cfg_type_t cfg_type_optional_port = {	"optional_port", parse_optional_keyvalue, print_keyvalue,	&cfg_rep_uint32, &port_kw};/* A list of keys, as in the "key" clause of the controls statement. */static cfg_type_t cfg_type_keylist = {	"keylist", parse_bracketed_list, print_bracketed_list, &cfg_rep_list,	&cfg_type_astring};static cfg_type_t cfg_type_trustedkeys = {	"trusted-keys", parse_bracketed_list, print_bracketed_list, &cfg_rep_list,	&cfg_type_trustedkey};/* * An implicit list.  These are formed by clauses that occur multiple times. */static cfg_type_t cfg_type_implicitlist = {	"implicitlist", NULL, print_list, &cfg_rep_list, NULL };static const char *forwardtype_enums[] = { "first", "only", NULL };static cfg_type_t cfg_type_forwardtype = {	"forwardtype", parse_enum, print_ustring, &cfg_rep_string,	&forwardtype_enums};static const char *zonetype_enums[] = {	"master", "slave", "stub", "hint", "forward", "delegation-only", NULL };static cfg_type_t cfg_type_zonetype = {	"zonetype", parse_enum, print_ustring, &cfg_rep_string,	&zonetype_enums};static const char *loglevel_enums[] = {	"critical", "error", "warning", "notice", "info", "dynamic", NULL };static cfg_type_t cfg_type_loglevel = {	"loglevel", parse_enum, print_ustring, &cfg_rep_string,	&loglevel_enums};static const char *transferformat_enums[] = {	"many-answers", "one-answer", NULL };static cfg_type_t cfg_type_transferformat = {	"transferformat", parse_enum, print_ustring, &cfg_rep_string,	&transferformat_enums};/* * Clauses that can be found within the top level of the named.conf * file only. */static cfg_clausedef_tnamedconf_clauses[] = {	{ "options", &cfg_type_options, 0 },	{ "controls", &cfg_type_controls, CFG_CLAUSEFLAG_MULTI },	{ "acl", &cfg_type_acl, CFG_CLAUSEFLAG_MULTI },	{ "logging", &cfg_type_logging, 0 },	{ "view", &cfg_type_view, CFG_CLAUSEFLAG_MULTI },	{ "lwres", &cfg_type_lwres, CFG_CLAUSEFLAG_MULTI },	{ NULL, NULL, 0 }};/* * Clauses that can occur at the top level or in the view * statement, but not in the options block. */static cfg_clausedef_tnamedconf_or_view_clauses[] = {	{ "key", &cfg_type_key, CFG_CLAUSEFLAG_MULTI },	{ "zone", &cfg_type_zone, CFG_CLAUSEFLAG_MULTI },	{ "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI },#ifdef ISC_RFC2535	{ "trusted-keys", &cfg_type_trustedkeys, CFG_CLAUSEFLAG_MULTI },#else	{ "trusted-keys", &cfg_type_trustedkeys,		 CFG_CLAUSEFLAG_MULTI|CFG_CLAUSEFLAG_OBSOLETE },#endif	{ NULL, NULL, 0 }};/* * Clauses that can be found within the 'options' statement. */static cfg_clausedef_toptions_clauses[] = {	{ "blackhole", &cfg_type_bracketed_aml, 0 },	{ "coresize", &cfg_type_size, 0 },	{ "datasize", &cfg_type_size, 0 },	{ "deallocate-on-exit", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "directory", &cfg_type_qstring, CFG_CLAUSEFLAG_CALLBACK },	{ "dump-file", &cfg_type_qstring, 0 },	{ "fake-iquery", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "files", &cfg_type_size, 0 },	{ "has-old-clients", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "heartbeat-interval", &cfg_type_uint32, 0 },	{ "host-statistics", &cfg_type_boolean, CFG_CLAUSEFLAG_NOTIMP },	{ "interface-interval", &cfg_type_uint32, 0 },	{ "listen-on", &cfg_type_listenon, CFG_CLAUSEFLAG_MULTI },	{ "listen-on-v6", &cfg_type_listenon, CFG_CLAUSEFLAG_MULTI },	{ "match-mapped-addresses", &cfg_type_boolean, 0 },	{ "memstatistics-file", &cfg_type_qstring, CFG_CLAUSEFLAG_NOTIMP },	{ "multiple-cnames", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "named-xfer", &cfg_type_qstring, CFG_CLAUSEFLAG_OBSOLETE },	{ "pid-file", &cfg_type_qstring, 0 },	{ "port", &cfg_type_uint32, 0 },	{ "random-device", &cfg_type_qstring, 0 },	{ "recursive-clients", &cfg_type_uint32, 0 },	{ "rrset-order", &cfg_type_rrsetorder, CFG_CLAUSEFLAG_NOTIMP },	{ "serial-queries", &cfg_type_uint32, CFG_CLAUSEFLAG_OBSOLETE },	{ "serial-query-rate", &cfg_type_uint32, 0 },	{ "stacksize", &cfg_type_size, 0 },	{ "statistics-file", &cfg_type_qstring, 0 },	{ "statistics-interval", &cfg_type_uint32, CFG_CLAUSEFLAG_NYI },	{ "tcp-clients", &cfg_type_uint32, 0 },	{ "tkey-dhkey", &cfg_type_tkey_dhkey, 0 },	{ "tkey-gssapi-credential", &cfg_type_qstring, 0 },	{ "tkey-domain", &cfg_type_qstring, 0 },	{ "transfers-per-ns", &cfg_type_uint32, 0 },	{ "transfers-in", &cfg_type_uint32, 0 },	{ "transfers-out", &cfg_type_uint32, 0 },	{ "treat-cr-as-space", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "use-id-pool", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "use-ixfr", &cfg_type_boolean, 0 },	{ "version", &cfg_type_qstring, 0 },	{ NULL, NULL, 0 }};static cfg_type_t cfg_type_namelist = {	"namelist", parse_bracketed_list, print_bracketed_list,	&cfg_rep_list, &cfg_type_qstring };static keyword_type_t exclude_kw = { "exclude", &cfg_type_namelist };static cfg_type_t cfg_type_optional_exclude = {	"optional_exclude", parse_optional_keyvalue, print_keyvalue,	&cfg_rep_list, &exclude_kw };/* * Clauses that can be found within the 'view' statement, * with defaults in the 'options' statement. */static cfg_clausedef_tview_clauses[] = {	{ "allow-recursion", &cfg_type_bracketed_aml, 0 },	{ "allow-v6-synthesis", &cfg_type_bracketed_aml, 0 },	{ "sortlist", &cfg_type_bracketed_aml, 0 },	{ "topology", &cfg_type_bracketed_aml, CFG_CLAUSEFLAG_NOTIMP },	{ "auth-nxdomain", &cfg_type_boolean, CFG_CLAUSEFLAG_NEWDEFAULT },	{ "minimal-responses", &cfg_type_boolean, 0 },	{ "recursion", &cfg_type_boolean, 0 },	{ "provide-ixfr", &cfg_type_boolean, 0 },	{ "request-ixfr", &cfg_type_boolean, 0 },	{ "fetch-glue", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "rfc2308-type1", &cfg_type_boolean, CFG_CLAUSEFLAG_NYI },	{ "additional-from-auth", &cfg_type_boolean, 0 },	{ "additional-from-cache", &cfg_type_boolean, 0 },	/*	 * Note that the query-source option syntax is different	 * from the other -source options.	 */	{ "query-source", &cfg_type_querysource4, 0 },	{ "query-source-v6", &cfg_type_querysource6, 0 },	{ "cleaning-interval", &cfg_type_uint32, 0 },	{ "min-roots", &cfg_type_uint32, CFG_CLAUSEFLAG_NOTIMP },	{ "lame-ttl", &cfg_type_uint32, 0 },	{ "max-ncache-ttl", &cfg_type_uint32, 0 },	{ "max-cache-ttl", &cfg_type_uint32, 0 },	{ "transfer-format", &cfg_type_transferformat, 0 },	{ "max-cache-size", &cfg_type_sizenodefault, 0 },	{ "check-names", &cfg_type_checknames,	  CFG_CLAUSEFLAG_MULTI | CFG_CLAUSEFLAG_NOTIMP },	{ "cache-file", &cfg_type_qstring, 0 },	{ "root-delegation-only",  &cfg_type_optional_exclude, 0 },	{ NULL, NULL, 0 }};/* * Clauses that can be found within the 'view' statement only. */static cfg_clausedef_tview_only_clauses[] = {	{ "match-clients", &cfg_type_bracketed_aml, 0 },	{ "match-destinations", &cfg_type_bracketed_aml, 0 },	{ "match-recursive-only", &cfg_type_boolean, 0 },	{ NULL, NULL, 0 }};/* * Clauses that can be found in a 'zone' statement, * with defaults in the 'view' or 'options' statement. */static cfg_clausedef_tzone_clauses[] = {	{ "allow-query", &cfg_type_bracketed_aml, 0 },	{ "allow-transfer", &cfg_type_bracketed_aml, 0 },	{ "allow-update-forwarding", &cfg_type_bracketed_aml, 0 },	{ "allow-notify", &cfg_type_bracketed_aml, 0 },	{ "notify", &cfg_type_notifytype, 0 },	{ "notify-source", &cfg_type_sockaddr4wild, 0 },	{ "notify-source-v6", &cfg_type_sockaddr6wild, 0 },	{ "also-notify", &cfg_type_portiplist, 0 },	{ "dialup", &cfg_type_dialuptype, 0 },	{ "forward", &cfg_type_forwardtype, 0 },	{ "forwarders", &cfg_type_portiplist, 0 },	{ "maintain-ixfr-base", &cfg_type_boolean, CFG_CLAUSEFLAG_OBSOLETE },	{ "max-ixfr-log-size", &cfg_type_size, CFG_CLAUSEFLAG_OBSOLETE },	{ "transfer-source", &cfg_type_sockaddr4wild, 0 },	{ "transfer-source-v6", &cfg_type_sockaddr6wild, 0 },	{ "max-transfer-time-in", &cfg_type_uint32, 0 },	{ "max-transfer-time-out", &cfg_type_uint32, 0 },	{ "max-transfer-idle-in", &cfg_type_uint32, 0 },	{ "max-transfer-idle-out", &cfg_type_uint32, 0 },	{ "max-retry-time", &cfg_type_uint32, 0 },	{ "min-retry-time", &cfg_type_uint32, 0 },	{ "max-refresh-time", &cfg_type_uint32, 0 },	{ "min-refresh-time", &cfg_type_uint32, 0 },	{ "sig-validity-interval", &cfg_type_uint32, 0 },	{ "zone-statistics", &cfg_type_boolean, 0 },	{ NULL, NULL, 0 }};/* * Clauses that can be found in a 'zone' statement * only. */static cfg_clausedef_tzone_only_clauses[] = {	{ "type", &cfg_type_zonetype, 0 },	{ "allow-update", &cfg_type_bracketed_aml, 0 },	{ "file", &cfg_type_qstring, 0 },	{ "ixfr-base", &cfg_type_qstring, CFG_CLAUSEFLAG_OBSOLETE },	{ "ixfr-tmp-file", &cfg_type_qstring, CFG_CLAUSEFLAG_OBSOLETE },	{ "masters", &cfg_type_sockaddrkeylist, 0 },	{ "pubkey", &cfg_type_pubkey,	  CFG_CLAUSEFLAG_MULTI | CFG_CLAUSEFLAG_OBSOLETE },	{ "update-policy", &cfg_type_updatepolicy, 0 },	{ "database", &cfg_type_astring, 0 },	{ "delegation-only", &cfg_type_boolean, 0 },	/*	 * Note that the format of the check-names option is different between	 * the zone options and the global/view options.  Ugh.	 */	{ "check-names", &cfg_type_ustring, CFG_CLAUSEFLAG_NOTIMP },	{ NULL, NULL, 0 }};/* The top-level named.conf syntax. */static cfg_clausedef_t *namedconf_clausesets[] = {	namedconf_clauses,	namedconf_or_view_clauses,	NULL};LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_namedconf = {	"namedconf", parse_mapbody, print_mapbody, &cfg_rep_map,	namedconf_clausesets};/* The "options" statement syntax. */static cfg_clausedef_t *

⌨️ 快捷键说明

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