summaryrefslogtreecommitdiffstats
path: root/contrib/unbound
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2013-10-13 02:35:19 +0000
committersjg <sjg@FreeBSD.org>2013-10-13 02:35:19 +0000
commit7fcd33c1faf567506b5c0b4148c7a15a10788a5d (patch)
tree2c6f4d1ca5d1c643faea64e1f4c90105a1ab406a /contrib/unbound
parent2a59274eda20cc626e28052fff7aa8b7bf6a3683 (diff)
parent5cca672bb0892f1c5da630c34a1f98e2de4d7064 (diff)
downloadFreeBSD-src-7fcd33c1faf567506b5c0b4148c7a15a10788a5d.zip
FreeBSD-src-7fcd33c1faf567506b5c0b4148c7a15a10788a5d.tar.gz
Merge head@256284
Diffstat (limited to 'contrib/unbound')
-rw-r--r--contrib/unbound/config.h902
-rw-r--r--contrib/unbound/config.h.in9
-rwxr-xr-xcontrib/unbound/configure287
-rw-r--r--contrib/unbound/configure.ac15
-rw-r--r--contrib/unbound/daemon/cachedump.c2
-rw-r--r--contrib/unbound/daemon/remote.c4
-rw-r--r--contrib/unbound/daemon/remote.h9
-rw-r--r--contrib/unbound/daemon/unbound.c5
-rw-r--r--contrib/unbound/daemon/worker.c15
-rw-r--r--contrib/unbound/daemon/worker.h69
-rw-r--r--contrib/unbound/doc/libunbound.3386
-rw-r--r--contrib/unbound/doc/unbound-anchor.8176
-rw-r--r--contrib/unbound/doc/unbound-checkconf.849
-rw-r--r--contrib/unbound/doc/unbound-control.8456
-rw-r--r--contrib/unbound/doc/unbound.851
-rw-r--r--contrib/unbound/doc/unbound.conf.51098
-rwxr-xr-xcontrib/unbound/freebsd-configure.sh44
-rwxr-xr-xcontrib/unbound/freebsd-sources.pl73
-rw-r--r--contrib/unbound/libunbound/context.c2
-rw-r--r--contrib/unbound/libunbound/context.h4
-rw-r--r--contrib/unbound/libunbound/libunbound.c22
-rw-r--r--contrib/unbound/libunbound/libworker.c5
-rw-r--r--contrib/unbound/libunbound/libworker.h52
-rw-r--r--contrib/unbound/libunbound/unbound.h22
-rw-r--r--contrib/unbound/libunbound/worker.h170
-rw-r--r--contrib/unbound/smallapp/unbound-anchor.c129
-rwxr-xr-xcontrib/unbound/smallapp/unbound-control-setup.sh7
-rwxr-xr-xcontrib/unbound/smallapp/unbound-control-setup.sh.in163
-rw-r--r--contrib/unbound/smallapp/worker_cb.c15
-rw-r--r--contrib/unbound/util/config_file.c10
-rw-r--r--contrib/unbound/util/config_file.h10
-rw-r--r--contrib/unbound/util/configlexer.c1989
-rw-r--r--contrib/unbound/util/configparser.c4928
-rw-r--r--contrib/unbound/util/configparser.h472
-rw-r--r--contrib/unbound/util/fptr_wlist.c3
35 files changed, 6471 insertions, 5182 deletions
diff --git a/contrib/unbound/config.h b/contrib/unbound/config.h
new file mode 100644
index 0000000..27af3d6
--- /dev/null
+++ b/contrib/unbound/config.h
@@ -0,0 +1,902 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Directory to chroot to */
+#define CHROOT_DIR "/var/unbound"
+
+/* Pathname to the Unbound configuration file */
+#define CONFIGFILE "/var/unbound/unbound.conf"
+
+/* Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work
+ */
+/* #undef DARWIN_BROKEN_SETREUID */
+
+/* Whether daemon is deprecated */
+/* #undef DEPRECATED_DAEMON */
+
+/* Define if you want to use debug lock checking (slow). */
+/* #undef ENABLE_LOCK_CHECKS */
+
+/* Define this if you enabled-allsymbols from libunbound to link binaries to
+ it for smaller install size, but the libunbound export table is polluted by
+ internal symbols */
+/* #undef EXPORT_ALL_SYMBOLS */
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Whether the C compiler accepts the "format" attribute */
+#define HAVE_ATTR_FORMAT 1
+
+/* Whether the C compiler accepts the "unused" attribute */
+#define HAVE_ATTR_UNUSED 1
+
+/* Define to 1 if your system has a working `chown' function. */
+#define HAVE_CHOWN 1
+
+/* Define to 1 if you have the `chroot' function. */
+#define HAVE_CHROOT 1
+
+/* Define to 1 if you have the `ctime_r' function. */
+#define HAVE_CTIME_R 1
+
+/* Define to 1 if you have the `daemon' function. */
+#define HAVE_DAEMON 1
+
+/* Define to 1 if you have the declaration of `NID_secp384r1', and to 0 if you
+ don't. */
+#define HAVE_DECL_NID_SECP384R1 1
+
+/* Define to 1 if you have the declaration of `NID_X9_62_prime256v1', and to 0
+ if you don't. */
+#define HAVE_DECL_NID_X9_62_PRIME256V1 1
+
+/* Define to 1 if you have the declaration of `sk_SSL_COMP_pop_free', and to 0
+ if you don't. */
+#define HAVE_DECL_SK_SSL_COMP_POP_FREE 1
+
+/* Define to 1 if you have the declaration of
+ `SSL_COMP_get_compression_methods', and to 0 if you don't. */
+#define HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `event_base_free' function. */
+/* #undef HAVE_EVENT_BASE_FREE */
+
+/* Define to 1 if you have the `event_base_get_method' function. */
+/* #undef HAVE_EVENT_BASE_GET_METHOD */
+
+/* Define to 1 if you have the `event_base_new' function. */
+/* #undef HAVE_EVENT_BASE_NEW */
+
+/* Define to 1 if you have the `event_base_once' function. */
+/* #undef HAVE_EVENT_BASE_ONCE */
+
+/* Define to 1 if you have the <event.h> header file. */
+/* #undef HAVE_EVENT_H */
+
+/* Define to 1 if you have the `EVP_sha1' function. */
+#define HAVE_EVP_SHA1 1
+
+/* Define to 1 if you have the `EVP_sha256' function. */
+#define HAVE_EVP_SHA256 1
+
+/* Define to 1 if you have the `EVP_sha512' function. */
+#define HAVE_EVP_SHA512 1
+
+/* Define to 1 if you have the `ev_default_loop' function. */
+/* #undef HAVE_EV_DEFAULT_LOOP */
+
+/* Define to 1 if you have the `ev_loop' function. */
+/* #undef HAVE_EV_LOOP */
+
+/* Define to 1 if you have the <expat.h> header file. */
+#define HAVE_EXPAT_H 1
+
+/* Define to 1 if you have the `fcntl' function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if you have the `FIPS_mode' function. */
+#define HAVE_FIPS_MODE 1
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#define HAVE_FSEEKO 1
+
+/* Whether getaddrinfo is available */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#define HAVE_GETOPT_H 1
+
+/* Define to 1 if you have the `getpwnam' function. */
+#define HAVE_GETPWNAM 1
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `glob' function. */
+#define HAVE_GLOB 1
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#define HAVE_GMTIME_R 1
+
+/* Define to 1 if you have the <grp.h> header file. */
+#define HAVE_GRP_H 1
+
+/* If you have HMAC_CTX_init */
+#define HAVE_HMAC_CTX_INIT 1
+
+/* Define to 1 if you have the `inet_aton' function. */
+#define HAVE_INET_ATON 1
+
+/* Define to 1 if you have the `inet_ntop' function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have the `inet_pton' function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the `initgroups' function. */
+#define HAVE_INITGROUPS 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* if the function 'ioctlsocket' is available */
+/* #undef HAVE_IOCTLSOCKET */
+
+/* Define to 1 if you have the <iphlpapi.h> header file. */
+/* #undef HAVE_IPHLPAPI_H */
+
+/* Define to 1 if you have the `kill' function. */
+#define HAVE_KILL 1
+
+/* Define to 1 if you have the `ldns_key_EVP_unload_gost' function. */
+/* #undef HAVE_LDNS_KEY_EVP_UNLOAD_GOST */
+
+/* Define to 1 if you have the <ldns/ldns.h> header file. */
+#define HAVE_LDNS_LDNS_H 1
+
+/* Define to 1 if you have the `ldns' library (-lldns). */
+#define HAVE_LIBLDNS 1
+
+/* Define to 1 if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
+/* Define to 1 if you have the <login_cap.h> header file. */
+#define HAVE_LOGIN_CAP_H 1
+
+/* If have GNU libc compatible malloc */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Use libnss for crypto */
+/* #undef HAVE_NSS */
+
+/* Define to 1 if you have the `OPENSSL_config' function. */
+#define HAVE_OPENSSL_CONFIG 1
+
+/* Define to 1 if you have the <openssl/conf.h> header file. */
+#define HAVE_OPENSSL_CONF_H 1
+
+/* Define to 1 if you have the <openssl/engine.h> header file. */
+#define HAVE_OPENSSL_ENGINE_H 1
+
+/* Define to 1 if you have the <openssl/err.h> header file. */
+#define HAVE_OPENSSL_ERR_H 1
+
+/* Define to 1 if you have the <openssl/rand.h> header file. */
+#define HAVE_OPENSSL_RAND_H 1
+
+/* Define to 1 if you have the <openssl/ssl.h> header file. */
+#define HAVE_OPENSSL_SSL_H 1
+
+/* Define if you have POSIX threads libraries and header files. */
+#define HAVE_PTHREAD 1
+
+/* Define to 1 if the system has the type `pthread_rwlock_t'. */
+#define HAVE_PTHREAD_RWLOCK_T 1
+
+/* Define to 1 if the system has the type `pthread_spinlock_t'. */
+#define HAVE_PTHREAD_SPINLOCK_T 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#define HAVE_PWD_H 1
+
+/* Define if you have Python libraries and header files. */
+/* #undef HAVE_PYTHON */
+
+/* Define to 1 if you have the `random' function. */
+#define HAVE_RANDOM 1
+
+/* Define to 1 if you have the `recvmsg' function. */
+#define HAVE_RECVMSG 1
+
+/* Define to 1 if you have the `sbrk' function. */
+#define HAVE_SBRK 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `setregid' function. */
+/* #undef HAVE_SETREGID */
+
+/* Define to 1 if you have the `setresgid' function. */
+#define HAVE_SETRESGID 1
+
+/* Define to 1 if you have the `setresuid' function. */
+#define HAVE_SETRESUID 1
+
+/* Define to 1 if you have the `setreuid' function. */
+/* #undef HAVE_SETREUID */
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define to 1 if you have the `setsid' function. */
+#define HAVE_SETSID 1
+
+/* Define to 1 if you have the `setusercontext' function. */
+#define HAVE_SETUSERCONTEXT 1
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#define HAVE_SIGPROCMASK 1
+
+/* Define to 1 if you have the `sleep' function. */
+#define HAVE_SLEEP 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Using Solaris threads */
+/* #undef HAVE_SOLARIS_THREADS */
+
+/* Define to 1 if you have the `srandom' function. */
+#define HAVE_SRANDOM 1
+
+/* Define if you have the SSL libraries installed. */
+#define HAVE_SSL /**/
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcpy' function. */
+#define HAVE_STRLCPY 1
+
+/* Define to 1 if you have the `strptime' function. */
+#define HAVE_STRPTIME 1
+
+/* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */
+/* #undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST */
+
+/* Define if you have Swig libraries and header files. */
+/* #undef HAVE_SWIG */
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#define HAVE_SYSLOG_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if you have the `vfork' function. */
+#define HAVE_VFORK 1
+
+/* Define to 1 if you have the <vfork.h> header file. */
+/* #undef HAVE_VFORK_H */
+
+/* Define to 1 if you have the <windows.h> header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Using Windows threads */
+/* #undef HAVE_WINDOWS_THREADS */
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if `fork' works. */
+#define HAVE_WORKING_FORK 1
+
+/* Define to 1 if `vfork' works. */
+#define HAVE_WORKING_VFORK 1
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to 1 if you have the `_beginthreadex' function. */
+/* #undef HAVE__BEGINTHREADEX */
+
+/* if lex has yylex_destroy */
+#define LEX_HAS_YYLEX_DESTROY 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to the maximum message length to pass to syslog. */
+#define MAXSYSLOGMSGLEN 10240
+
+/* Define if memcmp() does not compare unsigned bytes */
+/* #undef MEMCMP_IS_BROKEN */
+
+/* Define if mkdir has one argument. */
+/* #undef MKDIR_HAS_ONE_ARG */
+
+/* Define if the network stack does not fully support nonblocking io (causes
+ lower performance). */
+/* #undef NONBLOCKING_IS_BROKEN */
+
+/* Put -D_ALL_SOURCE define in config.h */
+/* #undef OMITTED__D_ALL_SOURCE */
+
+/* Put -D_BSD_SOURCE define in config.h */
+/* #undef OMITTED__D_BSD_SOURCE */
+
+/* Put -D_GNU_SOURCE define in config.h */
+/* #undef OMITTED__D_GNU_SOURCE */
+
+/* Put -D_LARGEFILE_SOURCE=1 define in config.h */
+/* #undef OMITTED__D_LARGEFILE_SOURCE_1 */
+
+/* Put -D_POSIX_C_SOURCE=200112 define in config.h */
+/* #undef OMITTED__D_POSIX_C_SOURCE_200112 */
+
+/* Put -D_XOPEN_SOURCE=600 define in config.h */
+/* #undef OMITTED__D_XOPEN_SOURCE_600 */
+
+/* Put -D_XOPEN_SOURCE_EXTENDED=1 define in config.h */
+/* #undef OMITTED__D_XOPEN_SOURCE_EXTENDED_1 */
+
+/* Put -D__EXTENSIONS__ define in config.h */
+/* #undef OMITTED__D__EXTENSIONS__ */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "unbound-bugs@nlnetlabs.nl"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "unbound"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "unbound 1.4.20"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "unbound"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.4.20"
+
+/* default pidfile location */
+#define PIDFILE "/var/unbound/unbound.pid"
+
+/* Define to necessary symbol if this constant uses a non-standard name on
+ your system. */
+/* #undef PTHREAD_CREATE_JOINABLE */
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* default rootkey location */
+#define ROOT_ANCHOR_FILE "/var/unbound/root.key"
+
+/* default rootcert location */
+#define ROOT_CERT_FILE "/var/unbound/icannbundle.pem"
+
+/* version number for resource files */
+#define RSRC_PACKAGE_VERSION 1,4,2,0
+
+/* Directory to chdir to */
+#define RUN_DIR "/var/unbound"
+
+/* Shared data */
+#define SHARE_DIR "/var/unbound"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* use default strptime. */
+#define STRPTIME_WORKS 1
+
+/* Use win32 resources and API */
+/* #undef UB_ON_WINDOWS */
+
+/* default username */
+#define UB_USERNAME "unbound"
+
+/* use to enable lightweight alloc assertions, for debug use */
+/* #undef UNBOUND_ALLOC_LITE */
+
+/* use malloc not regions, for debug use */
+/* #undef UNBOUND_ALLOC_NONREGIONAL */
+
+/* use statistics for allocs and frees, for debug use */
+/* #undef UNBOUND_ALLOC_STATS */
+
+/* define this to enable debug checks. */
+/* #undef UNBOUND_DEBUG */
+
+/* Define this to enable ECDSA support. */
+#define USE_ECDSA 1
+
+/* Define this to enable an EVP workaround for older openssl */
+/* #undef USE_ECDSA_EVP_WORKAROUND */
+
+/* Define this to enable GOST support. */
+/* #undef USE_GOST */
+
+/* Define if you want to use internal select based events */
+#define USE_MINI_EVENT 1
+
+/* Define this to enable SHA256 and SHA512 support. */
+#define USE_SHA2 1
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+
+
+/* Whether the windows socket API is used */
+/* #undef USE_WINSOCK */
+
+/* the version of the windows API enabled */
+#define WINVER 0x0502
+
+/* Define if you want Python module. */
+/* #undef WITH_PYTHONMODULE */
+
+/* Define if you want PyUnbound. */
+/* #undef WITH_PYUNBOUND */
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#define YYTEXT_POINTER 1
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+/* #undef _LARGEFILE_SOURCE */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* in_addr_t */
+/* #undef in_addr_t */
+
+/* in_port_t */
+/* #undef in_port_t */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to `short' if <sys/types.h> does not define. */
+/* #undef int16_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef int32_t */
+
+/* Define to `long long' if <sys/types.h> does not define. */
+/* #undef int64_t */
+
+/* Define to `signed char' if <sys/types.h> does not define. */
+/* #undef int8_t */
+
+/* Define if replacement function should be used. */
+/* #undef malloc */
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to 'int' if not defined */
+/* #undef rlim_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define to 'int' if not defined */
+/* #undef socklen_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef ssize_t */
+
+/* Define to 'unsigned char if not defined */
+/* #undef u_char */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* Define to `unsigned short' if <sys/types.h> does not define. */
+/* #undef uint16_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef uint32_t */
+
+/* Define to `unsigned long long' if <sys/types.h> does not define. */
+/* #undef uint64_t */
+
+/* Define to `unsigned char' if <sys/types.h> does not define. */
+/* #undef uint8_t */
+
+/* Define as `fork' if `vfork' does not work. */
+/* #undef vfork */
+
+#if defined(OMITTED__D_GNU_SOURCE) && !defined(_GNU_SOURCE)
+#define _GNU_SOURCE 1
+#endif
+
+#if defined(OMITTED__D_BSD_SOURCE) && !defined(_BSD_SOURCE)
+#define _BSD_SOURCE 1
+#endif
+
+#if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__)
+#define __EXTENSIONS__ 1
+#endif
+
+#if defined(OMITTED__D_POSIX_C_SOURCE_200112) && !defined(_POSIX_C_SOURCE)
+#define _POSIX_C_SOURCE 200112
+#endif
+
+#if defined(OMITTED__D_XOPEN_SOURCE_600) && !defined(_XOPEN_SOURCE)
+#define _XOPEN_SOURCE 600
+#endif
+
+#if defined(OMITTED__D_XOPEN_SOURCE_EXTENDED_1) && !defined(_XOPEN_SOURCE_EXTENDED)
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
+#if defined(OMITTED__D_ALL_SOURCE) && !defined(_ALL_SOURCE)
+#define _ALL_SOURCE 1
+#endif
+
+#if defined(OMITTED__D_LARGEFILE_SOURCE_1) && !defined(_LARGEFILE_SOURCE)
+#define _LARGEFILE_SOURCE 1
+#endif
+
+
+
+
+#ifndef UNBOUND_DEBUG
+# define NDEBUG
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <assert.h>
+
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#include <errno.h>
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#ifdef HAVE_SYS_UIO_H
+#include <sys/uio.h>
+#endif
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+
+#ifdef HAVE_ATTR_FORMAT
+# define ATTR_FORMAT(archetype, string_index, first_to_check) \
+ __attribute__ ((format (archetype, string_index, first_to_check)))
+#else /* !HAVE_ATTR_FORMAT */
+# define ATTR_FORMAT(archetype, string_index, first_to_check) /* empty */
+#endif /* !HAVE_ATTR_FORMAT */
+
+
+#if defined(DOXYGEN)
+# define ATTR_UNUSED(x) x
+#elif defined(__cplusplus)
+# define ATTR_UNUSED(x)
+#elif defined(HAVE_ATTR_UNUSED)
+# define ATTR_UNUSED(x) x __attribute__((unused))
+#else /* !HAVE_ATTR_UNUSED */
+# define ATTR_UNUSED(x) x
+#endif /* !HAVE_ATTR_UNUSED */
+
+
+#ifndef HAVE_FSEEKO
+#define fseeko fseek
+#define ftello ftell
+#endif /* HAVE_FSEEKO */
+
+
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 256
+#endif
+
+
+#ifndef HAVE_SNPRINTF
+#define snprintf snprintf_unbound
+#define vsnprintf vsnprintf_unbound
+#include <stdarg.h>
+int snprintf (char *str, size_t count, const char *fmt, ...);
+int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
+#endif /* HAVE_SNPRINTF */
+
+
+#ifndef HAVE_INET_PTON
+#define inet_pton inet_pton_unbound
+int inet_pton(int af, const char* src, void* dst);
+#endif /* HAVE_INET_PTON */
+
+
+#ifndef HAVE_INET_NTOP
+#define inet_ntop inet_ntop_unbound
+const char *inet_ntop(int af, const void *src, char *dst, size_t size);
+#endif
+
+
+#ifndef HAVE_INET_ATON
+#define inet_aton inet_aton_unbound
+int inet_aton(const char *cp, struct in_addr *addr);
+#endif
+
+
+#ifndef HAVE_MEMMOVE
+#define memmove memmove_unbound
+void *memmove(void *dest, const void *src, size_t n);
+#endif
+
+
+#ifndef HAVE_STRLCPY
+#define strlcpy strlcpy_unbound
+size_t strlcpy(char *dst, const char *src, size_t siz);
+#endif
+
+
+#ifndef HAVE_GMTIME_R
+#define gmtime_r gmtime_r_unbound
+struct tm *gmtime_r(const time_t *timep, struct tm *result);
+#endif
+
+
+#ifndef HAVE_SLEEP
+#define sleep(x) Sleep((x)*1000) /* on win32 */
+#endif /* HAVE_SLEEP */
+
+
+#ifndef HAVE_USLEEP
+#define usleep(x) Sleep((x)/1000 + 1) /* on win32 */
+#endif /* HAVE_USLEEP */
+
+
+#ifndef HAVE_RANDOM
+#define random rand /* on win32, for tests only (bad random) */
+#endif /* HAVE_RANDOM */
+
+
+#ifndef HAVE_SRANDOM
+#define srandom(x) srand(x) /* on win32, for tests only (bad random) */
+#endif /* HAVE_SRANDOM */
+
+
+/* detect if we need to cast to unsigned int for FD_SET to avoid warnings */
+#ifdef HAVE_WINSOCK2_H
+#define FD_SET_T (u_int)
+#else
+#define FD_SET_T
+#endif
+
+
+#ifndef IPV6_MIN_MTU
+#define IPV6_MIN_MTU 1280
+#endif /* IPV6_MIN_MTU */
+
+
+#ifdef MEMCMP_IS_BROKEN
+#include "compat/memcmp.h"
+#define memcmp memcmp_unbound
+int memcmp(const void *x, const void *y, size_t n);
+#endif
+
+
+
+#ifndef HAVE_CTIME_R
+#define ctime_r unbound_ctime_r
+char *ctime_r(const time_t *timep, char *buf);
+#endif
+
+#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS)
+#define strptime unbound_strptime
+struct tm;
+char *strptime(const char *s, const char *format, struct tm *tm);
+#endif
+
+#if defined(HAVE_EVENT_H) && !defined(HAVE_EVENT_BASE_ONCE) && !(defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && (defined(HAVE_PTHREAD) || defined(HAVE_SOLARIS_THREADS))
+ /* using version of libevent that is not threadsafe. */
+# define LIBEVENT_SIGNAL_PROBLEM 1
+#endif
+
+#ifndef CHECKED_INET6
+# define CHECKED_INET6
+# ifdef AF_INET6
+# define INET6
+# else
+# define AF_INET6 28
+# endif
+#endif /* CHECKED_INET6 */
+
+/* maximum nesting of included files */
+#define MAXINCLUDES 10
+#ifndef HAVE_GETADDRINFO
+struct sockaddr_storage;
+#include "compat/fake-rfc2553.h"
+#endif
+
+#ifdef UNBOUND_ALLOC_STATS
+# define malloc(s) unbound_stat_malloc_log(s, __FILE__, __LINE__, __func__)
+# define calloc(n,s) unbound_stat_calloc_log(n, s, __FILE__, __LINE__, __func__)
+# define free(p) unbound_stat_free_log(p, __FILE__, __LINE__, __func__)
+# define realloc(p,s) unbound_stat_realloc_log(p, s, __FILE__, __LINE__, __func__)
+void *unbound_stat_malloc(size_t size);
+void *unbound_stat_calloc(size_t nmemb, size_t size);
+void unbound_stat_free(void *ptr);
+void *unbound_stat_realloc(void *ptr, size_t size);
+void *unbound_stat_malloc_log(size_t size, const char* file, int line,
+ const char* func);
+void *unbound_stat_calloc_log(size_t nmemb, size_t size, const char* file,
+ int line, const char* func);
+void unbound_stat_free_log(void *ptr, const char* file, int line,
+ const char* func);
+void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file,
+ int line, const char* func);
+#elif defined(UNBOUND_ALLOC_LITE)
+# include "util/alloc.h"
+#endif /* UNBOUND_ALLOC_LITE and UNBOUND_ALLOC_STATS */
+
+/** default port for DNS traffic. */
+#define UNBOUND_DNS_PORT 53
+/** default port for unbound control traffic, registered port with IANA,
+ ub-dns-control 8953/tcp unbound dns nameserver control */
+#define UNBOUND_CONTROL_PORT 8953
+/** the version of unbound-control that this software implements */
+#define UNBOUND_CONTROL_VERSION 1
+
+
diff --git a/contrib/unbound/config.h.in b/contrib/unbound/config.h.in
index 7e1a5a3..930b638 100644
--- a/contrib/unbound/config.h.in
+++ b/contrib/unbound/config.h.in
@@ -6,15 +6,6 @@
/* Pathname to the Unbound configuration file */
#undef CONFIGFILE
-/* configure flags */
-#undef CONFIGURE_BUILD_WITH
-
-/* configure date */
-#undef CONFIGURE_DATE
-
-/* configure target system */
-#undef CONFIGURE_TARGET
-
/* Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work
*/
#undef DARWIN_BROKEN_SETREUID
diff --git a/contrib/unbound/configure b/contrib/unbound/configure
index 90deeca..8d3a181 100755
--- a/contrib/unbound/configure
+++ b/contrib/unbound/configure
@@ -700,6 +700,14 @@ FGREP
SED
LIBTOOL
AR
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
libtool
STRIP
doxygen
@@ -728,18 +736,6 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
LIBUNBOUND_AGE
LIBUNBOUND_REVISION
LIBUNBOUND_CURRENT
@@ -1435,7 +1431,6 @@ _ACEOF
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
_ACEOF
fi
@@ -2545,169 +2540,6 @@ LIBUNBOUND_AGE=1
-pretty_cmdline() {
- cmdline=""
- while test -n "$1"; do
- cmdline="$cmdline '"`echo $1 | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/g' `"'"
- shift
- done
-}
-pretty_cmdline $@
-
-cat >>confdefs.h <<_ACEOF
-#define CONFIGURE_BUILD_WITH "$cmdline"
-_ACEOF
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$target_alias" = x; then
- ac_cv_target=$ac_cv_host
-else
- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-cat >>confdefs.h <<_ACEOF
-#define CONFIGURE_TARGET "$target"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define CONFIGURE_DATE "`date`"
-_ACEOF
-
-
CFLAGS="$CFLAGS"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -6262,6 +6094,106 @@ else
STRIP="$ac_cv_prog_STRIP"
fi
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
# skip these tests, we do not need them.
@@ -18180,7 +18112,7 @@ _ACEOF
-ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8"
+ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 smallapp/unbound-control-setup.sh"
ac_config_headers="$ac_config_headers config.h"
@@ -19169,6 +19101,7 @@ do
"doc/unbound-checkconf.8") CONFIG_FILES="$CONFIG_FILES doc/unbound-checkconf.8" ;;
"doc/unbound.conf.5") CONFIG_FILES="$CONFIG_FILES doc/unbound.conf.5" ;;
"doc/unbound-control.8") CONFIG_FILES="$CONFIG_FILES doc/unbound-control.8" ;;
+ "smallapp/unbound-control-setup.sh") CONFIG_FILES="$CONFIG_FILES smallapp/unbound-control-setup.sh" ;;
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
diff --git a/contrib/unbound/configure.ac b/contrib/unbound/configure.ac
index 1f3ac92..180b9d7 100644
--- a/contrib/unbound/configure.ac
+++ b/contrib/unbound/configure.ac
@@ -69,19 +69,6 @@ AC_SUBST(LIBUNBOUND_CURRENT)
AC_SUBST(LIBUNBOUND_REVISION)
AC_SUBST(LIBUNBOUND_AGE)
-pretty_cmdline() {
- cmdline=""
- while test -n "$1"; do
- cmdline="$cmdline '"`echo $1 | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/g' `"'"
- shift
- done
-}
-pretty_cmdline $@
-AC_DEFINE_UNQUOTED(CONFIGURE_BUILD_WITH, ["$cmdline"], [configure flags])
-AC_CANONICAL_TARGET
-AC_DEFINE_UNQUOTED(CONFIGURE_TARGET, ["$target"], [configure target system])
-AC_DEFINE_UNQUOTED(CONFIGURE_DATE, ["`date`"], [configure date])
-
CFLAGS="$CFLAGS"
AC_AIX
@@ -1244,6 +1231,6 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file,
])
-AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8])
+AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 smallapp/unbound-control-setup.sh])
AC_CONFIG_HEADER([config.h])
AC_OUTPUT
diff --git a/contrib/unbound/daemon/cachedump.c b/contrib/unbound/daemon/cachedump.c
index 46c625f..9d941d7 100644
--- a/contrib/unbound/daemon/cachedump.c
+++ b/contrib/unbound/daemon/cachedump.c
@@ -299,7 +299,7 @@ copy_msg(struct regional* region, struct lruhash_entry* e,
sizeof(struct ub_packed_rrset_key*) * rep->rrset_count);
if(!*d)
return 0;
- (*d)->rrsets = (struct ub_packed_rrset_key**)(
+ (*d)->rrsets = (struct ub_packed_rrset_key**)(void *)(
(uint8_t*)(&((*d)->ref[0])) +
sizeof(struct rrset_ref) * rep->rrset_count);
*k = (struct query_info*)regional_alloc_init(region,
diff --git a/contrib/unbound/daemon/remote.c b/contrib/unbound/daemon/remote.c
index 5dc05c5..ba02d7d 100644
--- a/contrib/unbound/daemon/remote.c
+++ b/contrib/unbound/daemon/remote.c
@@ -648,7 +648,7 @@ print_thread_stats(SSL* ssl, int i, struct stats_info* s)
/** print long number */
static int
-print_longnum(SSL* ssl, char* desc, size_t x)
+print_longnum(SSL* ssl, const char* desc, size_t x)
{
if(x > 1024*1024*1024) {
/* more than a Gb */
@@ -1380,7 +1380,7 @@ do_flush_name(SSL* ssl, struct worker* w, char* arg)
/** printout a delegation point info */
static int
-ssl_print_name_dp(SSL* ssl, char* str, uint8_t* nm, uint16_t dclass,
+ssl_print_name_dp(SSL* ssl, const char* str, uint8_t* nm, uint16_t dclass,
struct delegpt* dp)
{
char buf[257];
diff --git a/contrib/unbound/daemon/remote.h b/contrib/unbound/daemon/remote.h
index 8d5b412..7d922bd 100644
--- a/contrib/unbound/daemon/remote.h
+++ b/contrib/unbound/daemon/remote.h
@@ -157,12 +157,6 @@ void daemon_remote_start_accept(struct daemon_remote* rc);
*/
void daemon_remote_exec(struct worker* worker);
-/** handle remote control accept callbacks */
-int remote_accept_callback(struct comm_point*, void*, int, struct comm_reply*);
-
-/** handle remote control data callbacks */
-int remote_control_callback(struct comm_point*, void*, int, struct comm_reply*);
-
#ifdef HAVE_SSL
/**
* Print fixed line of text over ssl connection in blocking mode
@@ -192,7 +186,4 @@ int ssl_printf(SSL* ssl, const char* format, ...)
int ssl_read_line(SSL* ssl, char* buf, size_t max);
#endif /* HAVE_SSL */
-/** routine to printout option values over SSL */
-void remote_get_opt_ssl(char* line, void* arg);
-
#endif /* DAEMON_REMOTE_H */
diff --git a/contrib/unbound/daemon/unbound.c b/contrib/unbound/daemon/unbound.c
index cd08c9c..6539b9e 100644
--- a/contrib/unbound/daemon/unbound.c
+++ b/contrib/unbound/daemon/unbound.c
@@ -53,6 +53,7 @@
#include "services/listen_dnsport.h"
#include "services/cache/rrset.h"
#include "services/cache/infra.h"
+#include "util/fptr_wlist.h"
#include "util/data/msgreply.h"
#include "util/module.h"
#include "util/net_help.h"
@@ -92,8 +93,10 @@
# include "nss.h"
#endif
+#ifdef HAVE_SBRK
/** global debug value to keep track of heap memory allocation */
void* unbound_start_brk = 0;
+#endif
#if !defined(HAVE_EVENT_BASE_GET_METHOD) && (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP))
static const char* ev_backend2str(int b)
@@ -174,8 +177,6 @@ static void usage()
for(m = module_list_avail(); *m; m++)
printf(" %s", *m);
printf("\n");
- printf("configured for %s on %s with options:%s\n",
- CONFIGURE_TARGET, CONFIGURE_DATE, CONFIGURE_BUILD_WITH);
printf("BSD licensed, see LICENSE in source package for details.\n");
printf("Report bugs to %s\n", PACKAGE_BUGREPORT);
}
diff --git a/contrib/unbound/daemon/worker.c b/contrib/unbound/daemon/worker.c
index eeb323c..0e5b14d 100644
--- a/contrib/unbound/daemon/worker.c
+++ b/contrib/unbound/daemon/worker.c
@@ -70,6 +70,8 @@
#include "iterator/iter_hints.h"
#include "validator/autotrust.h"
#include "validator/val_anchor.h"
+#include "libunbound/context.h"
+#include "libunbound/libworker.h"
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
@@ -819,7 +821,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
verbose(VERB_ALGO, "query with bad edns version.");
log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
error_encode(c->buffer, EDNS_RCODE_BADVERS&0xf, &qinfo,
- *(uint16_t*)ldns_buffer_begin(c->buffer),
+ *(uint16_t*)(void *)ldns_buffer_begin(c->buffer),
ldns_buffer_read_u16_at(c->buffer, 2), NULL);
attach_edns_record(c->buffer, &edns);
return 1;
@@ -883,7 +885,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
/* answer from cache - we have acquired a readlock on it */
if(answer_from_cache(worker, &qinfo,
(struct reply_info*)e->data,
- *(uint16_t*)ldns_buffer_begin(c->buffer),
+ *(uint16_t*)(void *)ldns_buffer_begin(c->buffer),
ldns_buffer_read_u16_at(c->buffer, 2), repinfo,
&edns)) {
/* prefetch it if the prefetch TTL expired */
@@ -905,7 +907,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
}
if(!LDNS_RD_WIRE(ldns_buffer_begin(c->buffer))) {
if(answer_norec_from_cache(worker, &qinfo,
- *(uint16_t*)ldns_buffer_begin(c->buffer),
+ *(uint16_t*)(void *)ldns_buffer_begin(c->buffer),
ldns_buffer_read_u16_at(c->buffer, 2), repinfo,
&edns)) {
return 1;
@@ -926,8 +928,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
/* grab a work request structure for this new request */
mesh_new_client(worker->env.mesh, &qinfo,
- ldns_buffer_read_u16_at(c->buffer, 2),
- &edns, repinfo, *(uint16_t*)ldns_buffer_begin(c->buffer));
+ ldns_buffer_read_u16_at(c->buffer, 2), &edns, repinfo,
+ *(uint16_t*)(void *)ldns_buffer_begin(c->buffer));
worker_mem_report(worker, NULL);
return 0;
}
@@ -1303,7 +1305,8 @@ struct outbound_entry* libworker_send_query(uint8_t* ATTR_UNUSED(qname),
uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags),
int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),
struct sockaddr_storage* ATTR_UNUSED(addr),
- socklen_t ATTR_UNUSED(addrlen), struct module_qstate* ATTR_UNUSED(q))
+ socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),
+ size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q))
{
log_assert(0);
return 0;
diff --git a/contrib/unbound/daemon/worker.h b/contrib/unbound/daemon/worker.h
index c510ebf..f0e8cf0 100644
--- a/contrib/unbound/daemon/worker.h
+++ b/contrib/unbound/daemon/worker.h
@@ -43,6 +43,7 @@
#ifndef DAEMON_WORKER_H
#define DAEMON_WORKER_H
+#include "libunbound/worker.h"
#include "util/netevent.h"
#include "util/locks.h"
#include "util/alloc.h"
@@ -158,77 +159,9 @@ void worker_delete(struct worker* worker);
void worker_send_cmd(struct worker* worker, enum worker_commands cmd);
/**
- * Worker signal handler function. User argument is the worker itself.
- * @param sig: signal number.
- * @param arg: the worker (main worker) that handles signals.
- */
-void worker_sighandler(int sig, void* arg);
-
-/**
- * Worker service routine to send serviced queries to authoritative servers.
- * @param qname: query name. (host order)
- * @param qnamelen: length in bytes of qname, including trailing 0.
- * @param qtype: query type. (host order)
- * @param qclass: query class. (host order)
- * @param flags: host order flags word, with opcode and CD bit.
- * @param dnssec: if set, EDNS record will have DO bit set.
- * @param want_dnssec: signatures needed.
- * @param addr: where to.
- * @param addrlen: length of addr.
- * @param zone: wireformat dname of the zone.
- * @param zonelen: length of zone name.
- * @param q: wich query state to reactivate upon return.
- * @return: false on failure (memory or socket related). no query was
- * sent.
- */
-struct outbound_entry* worker_send_query(uint8_t* qname, size_t qnamelen,
- uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec,
- int want_dnssec, struct sockaddr_storage* addr, socklen_t addrlen,
- uint8_t* zone, size_t zonelen, struct module_qstate* q);
-
-/**
- * process control messages from the main thread. Frees the control
- * command message.
- * @param tube: tube control message came on.
- * @param msg: message contents. Is freed.
- * @param len: length of message.
- * @param error: if error (NETEVENT_*) happened.
- * @param arg: user argument
- */
-void worker_handle_control_cmd(struct tube* tube, uint8_t* msg, size_t len,
- int error, void* arg);
-
-/** handles callbacks from listening event interface */
-int worker_handle_request(struct comm_point* c, void* arg, int error,
- struct comm_reply* repinfo);
-
-/** process incoming replies from the network */
-int worker_handle_reply(struct comm_point* c, void* arg, int error,
- struct comm_reply* reply_info);
-
-/** process incoming serviced query replies from the network */
-int worker_handle_service_reply(struct comm_point* c, void* arg, int error,
- struct comm_reply* reply_info);
-
-/** cleanup the cache to remove all rrset IDs from it, arg is worker */
-void worker_alloc_cleanup(void* arg);
-
-/**
* Init worker stats - includes server_stats_init, outside network and mesh.
* @param worker: the worker to init
*/
void worker_stats_clear(struct worker* worker);
-/** statistics timer callback handler */
-void worker_stat_timer_cb(void* arg);
-
-/** probe timer callback handler */
-void worker_probe_timer_cb(void* arg);
-
-/** start accept callback handler */
-void worker_start_accept(void* arg);
-
-/** stop accept callback handler */
-void worker_stop_accept(void* arg);
-
#endif /* DAEMON_WORKER_H */
diff --git a/contrib/unbound/doc/libunbound.3 b/contrib/unbound/doc/libunbound.3
new file mode 100644
index 0000000..0f6f0c6
--- /dev/null
+++ b/contrib/unbound/doc/libunbound.3
@@ -0,0 +1,386 @@
+.TH "libunbound" "3" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" libunbound.3 -- unbound library functions manual
+.\"
+.\" Copyright (c) 2007, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+.B libunbound,
+.B unbound.h,
+.B ub_ctx,
+.B ub_result,
+.B ub_callback_t,
+.B ub_ctx_create,
+.B ub_ctx_delete,
+.B ub_ctx_set_option,
+.B ub_ctx_get_option,
+.B ub_ctx_config,
+.B ub_ctx_set_fwd,
+.B ub_ctx_resolvconf,
+.B ub_ctx_hosts,
+.B ub_ctx_add_ta,
+.B ub_ctx_add_ta_file,
+.B ub_ctx_trustedkeys,
+.B ub_ctx_debugout,
+.B ub_ctx_debuglevel,
+.B ub_ctx_async,
+.B ub_poll,
+.B ub_wait,
+.B ub_fd,
+.B ub_process,
+.B ub_resolve,
+.B ub_resolve_async,
+.B ub_cancel,
+.B ub_resolve_free,
+.B ub_strerror,
+.B ub_ctx_print_local_zones,
+.B ub_ctx_zone_add,
+.B ub_ctx_zone_remove,
+.B ub_ctx_data_add,
+.B ub_ctx_data_remove
+\- Unbound DNS validating resolver 1.4.20 functions.
+.SH "SYNOPSIS"
+.LP
+.B #include <unbound.h>
+.LP
+\fIstruct ub_ctx *\fR
+\fBub_ctx_create\fR(\fIvoid\fR);
+.LP
+\fIvoid\fR
+\fBub_ctx_delete\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_ctx_set_option\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR opt, \fIchar*\fR val);
+.LP
+\fIint\fR
+\fBub_ctx_get_option\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR opt, \fIchar**\fR val);
+.LP
+\fIint\fR
+\fBub_ctx_config\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname);
+.LP
+\fIint\fR
+\fBub_ctx_set_fwd\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR addr);
+.LP
+\fIint\fR
+\fBub_ctx_resolvconf\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname);
+.LP
+\fIint\fR
+\fBub_ctx_hosts\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname);
+.LP
+\fIint\fR
+\fBub_ctx_add_ta\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR ta);
+.LP
+\fIint\fR
+\fBub_ctx_add_ta_file\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname);
+.LP
+\fIint\fR
+\fBub_ctx_trustedkeys\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname);
+.LP
+\fIint\fR
+\fBub_ctx_debugout\fR(\fIstruct ub_ctx*\fR ctx, \fIFILE*\fR out);
+.LP
+\fIint\fR
+\fBub_ctx_debuglevel\fR(\fIstruct ub_ctx*\fR ctx, \fIint\fR d);
+.LP
+\fIint\fR
+\fBub_ctx_async\fR(\fIstruct ub_ctx*\fR ctx, \fIint\fR dothread);
+.LP
+\fIint\fR
+\fBub_poll\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_wait\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_fd\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_process\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_resolve\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR name,
+.br
+ \fIint\fR rrtype, \fIint\fR rrclass, \fIstruct ub_result**\fR result);
+.LP
+\fIint\fR
+\fBub_resolve_async\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR name,
+.br
+ \fIint\fR rrtype, \fIint\fR rrclass, \fIvoid*\fR mydata,
+.br
+ \fIub_callback_t\fR callback, \fIint*\fR async_id);
+.LP
+\fIint\fR
+\fBub_cancel\fR(\fIstruct ub_ctx*\fR ctx, \fIint\fR async_id);
+.LP
+\fIvoid\fR
+\fBub_resolve_free\fR(\fIstruct ub_result*\fR result);
+.LP
+\fIconst char *\fR
+\fBub_strerror\fR(\fIint\fR err);
+.LP
+\fIint\fR
+\fBub_ctx_print_local_zones\fR(\fIstruct ub_ctx*\fR ctx);
+.LP
+\fIint\fR
+\fBub_ctx_zone_add\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR zone_name, \fIchar*\fR zone_type);
+.LP
+\fIint\fR
+\fBub_ctx_zone_remove\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR zone_name);
+.LP
+\fIint\fR
+\fBub_ctx_data_add\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR data);
+.LP
+\fIint\fR
+\fBub_ctx_data_remove\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR data);
+.SH "DESCRIPTION"
+.LP
+.B Unbound
+is an implementation of a DNS resolver, that does caching and
+DNSSEC validation. This is the library API, for using the \-lunbound library.
+The server daemon is described in \fIunbound\fR(8).
+The library can be used to convert hostnames to ip addresses, and back,
+and obtain other information from the DNS. The library performs public\-key
+validation of results with DNSSEC.
+.P
+The library uses a variable of type \fIstruct ub_ctx\fR to keep context
+between calls. The user must maintain it, creating it with
+.B ub_ctx_create
+and deleting it with
+.B ub_ctx_delete\fR.
+It can be created and deleted at any time. Creating it anew removes any
+previous configuration (such as trusted keys) and clears any cached results.
+.P
+The functions are thread\-safe, and a context an be used in a threaded (as
+well as in a non\-threaded) environment. Also resolution (and validation)
+can be performed blocking and non\-blocking (also called asynchronous).
+The async method returns from the call immediately, so that processing
+can go on, while the results become available later.
+.P
+The functions are discussed in turn below.
+.SH "FUNCTIONS"
+.TP
+.B ub_ctx_create
+Create a new context, initialised with defaults.
+The information from /etc/resolv.conf and /etc/hosts is not utilised
+by default. Use
+.B ub_ctx_resolvconf
+and
+.B ub_ctx_hosts
+to read them.
+.TP
+.B ub_ctx_delete
+Delete validation context and free associated resources.
+Outstanding async queries are killed and callbacks are not called for them.
+.TP
+.B ub_ctx_set_option
+A power\-user interface that lets you specify one of the options from the
+config file format, see \fIunbound.conf\fR(5). Not all options are
+relevant. For some specific options, such as adding trust anchors, special
+routines exist. Pass the option name with the trailing ':'.
+.TP
+.B ub_ctx_get_option
+A power\-user interface that gets an option value. Some options cannot be
+gotten, and others return a newline separated list. Pass the option name
+without trailing ':'. The returned value must be free(2)d by the caller.
+.TP
+.B ub_ctx_config
+A power\-user interface that lets you specify an unbound config file, see
+\fIunbound.conf\fR(5), which is read for configuration. Not all options are
+relevant. For some specific options, such as adding trust anchors, special
+routines exist.
+.TP
+.B ub_ctx_set_fwd
+Set machine to forward DNS queries to, the caching resolver to use.
+IP4 or IP6 address. Forwards all DNS requests to that machine, which
+is expected to run a recursive resolver. If the proxy is not
+DNSSEC capable, validation may fail. Can be called several times, in
+that case the addresses are used as backup servers.
+At this time it is only possible to set configuration before the
+first resolve is done.
+.TP
+.B ub_ctx_resolvconf
+By default the root servers are queried and full resolver mode is used, but
+you can use this call to read the list of nameservers to use from the
+filename given.
+Usually "/etc/resolv.conf". Uses those nameservers as caching proxies.
+If they do not support DNSSEC, validation may fail.
+Only nameservers are picked up, the searchdomain, ndots and other
+settings from \fIresolv.conf\fR(5) are ignored.
+If fname NULL is passed, "/etc/resolv.conf" is used (if on Windows,
+the system\-wide configured nameserver is picked instead).
+At this time it is only possible to set configuration before the
+first resolve is done.
+.TP
+.B ub_ctx_hosts
+Read list of hosts from the filename given.
+Usually "/etc/hosts". When queried for, these addresses are not marked
+DNSSEC secure. If fname NULL is passed, "/etc/hosts" is used
+(if on Windows, etc/hosts from WINDIR is picked instead).
+At this time it is only possible to set configuration before the
+first resolve is done.
+.TP
+.B
+ub_ctx_add_ta
+Add a trust anchor to the given context.
+At this time it is only possible to add trusted keys before the
+first resolve is done.
+The format is a string, similar to the zone\-file format,
+[domainname] [type] [rdata contents]. Both DS and DNSKEY records are accepted.
+.TP
+.B ub_ctx_add_ta_file
+Add trust anchors to the given context.
+Pass name of a file with DS and DNSKEY records in zone file format.
+At this time it is only possible to add trusted keys before the
+first resolve is done.
+.TP
+.B ub_ctx_trustedkeys
+Add trust anchors to the given context.
+Pass the name of a bind\-style config file with trusted\-keys{}.
+At this time it is only possible to add trusted keys before the
+first resolve is done.
+.TP
+.B ub_ctx_debugout
+Set debug and error log output to the given stream. Pass NULL to disable
+output. Default is stderr. File\-names or using syslog can be enabled
+using config options, this routine is for using your own stream.
+.TP
+.B ub_ctx_debuglevel
+Set debug verbosity for the context. Output is directed to stderr.
+Higher debug level gives more output.
+.TP
+.B ub_ctx_async
+Set a context behaviour for asynchronous action.
+if set to true, enables threading and a call to
+.B ub_resolve_async
+creates a thread to handle work in the background.
+If false, a process is forked to handle work in the background.
+Changes to this setting after
+.B ub_resolve_async
+calls have been made have no effect (delete and re\-create the context
+to change).
+.TP
+.B ub_poll
+Poll a context to see if it has any new results.
+Do not poll in a loop, instead extract the fd below to poll for readiness,
+and then check, or wait using the wait routine.
+Returns 0 if nothing to read, or nonzero if a result is available.
+If nonzero, call
+.B ub_process
+to do callbacks.
+.TP
+.B ub_wait
+Wait for a context to finish with results. Calls
+.B ub_process
+after the wait for you. After the wait, there are no more outstanding
+asynchronous queries.
+.TP
+.B ub_fd
+Get file descriptor. Wait for it to become readable, at this point
+answers are returned from the asynchronous validating resolver.
+Then call the \fBub_process\fR to continue processing.
+.TP
+.B ub_process
+Call this routine to continue processing results from the validating
+resolver (when the fd becomes readable).
+Will perform necessary callbacks.
+.TP
+.B ub_resolve
+Perform resolution and validation of the target name.
+The name is a domain name in a zero terminated text string.
+The rrtype and rrclass are DNS type and class codes.
+The result structure is newly allocated with the resulting data.
+.TP
+.B ub_resolve_async
+Perform asynchronous resolution and validation of the target name.
+Arguments mean the same as for \fBub_resolve\fR except no
+data is returned immediately, instead a callback is called later.
+The callback receives a copy of the mydata pointer, that you can use to pass
+information to the callback. The callback type is a function pointer to
+a function declared as
+.IP
+void my_callback_function(void* my_arg, int err,
+.br
+ struct ub_result* result);
+.IP
+The async_id is returned so you can (at your option) decide to track it
+and cancel the request if needed. If you pass a NULL pointer the async_id
+is not returned.
+.TP
+.B ub_cancel
+Cancel an async query in progress. This may return an error if the query
+does not exist, or the query is already being delivered, in that case you
+may still get a callback for the query.
+.TP
+.B ub_resolve_free
+Free struct ub_result contents after use.
+.TP
+.B ub_strerror
+Convert error value from one of the unbound library functions
+to a human readable string.
+.TP
+.B ub_ctx_print_local_zones
+Debug printout the local authority information to debug output.
+.TP
+.B ub_ctx_zone_add
+Add new zone to local authority info, like local\-zone \fIunbound.conf\fR(5)
+statement.
+.TP
+.B ub_ctx_zone_remove
+Delete zone from local authority info.
+.TP
+.B ub_ctx_data_add
+Add resource record data to local authority info, like local\-data
+\fIunbound.conf\fR(5) statement.
+.TP
+.B ub_ctx_data_remove
+Delete local authority data from the name given.
+.SH "RESULT DATA STRUCTURE"
+.LP
+The result of the DNS resolution and validation is returned as
+\fIstruct ub_result\fR. The result structure contains the following entries.
+.P
+.nf
+ struct ub_result {
+ char* qname; /* text string, original question */
+ int qtype; /* type code asked for */
+ int qclass; /* class code asked for */
+ char** data; /* array of rdata items, NULL terminated*/
+ int* len; /* array with lengths of rdata items */
+ char* canonname; /* canonical name of result */
+ int rcode; /* additional error code in case of no data */
+ void* answer_packet; /* full network format answer packet */
+ int answer_len; /* length of packet in octets */
+ int havedata; /* true if there is data */
+ int nxdomain; /* true if nodata because name does not exist */
+ int secure; /* true if result is secure */
+ int bogus; /* true if a security failure happened */
+ char* why_bogus; /* string with error if bogus */
+ int ttl; /* number of seconds the result is valid */
+ };
+.fi
+.P
+If both secure and bogus are false, security was not enabled for the
+domain of the query.
+.SH "RETURN VALUES"
+Many routines return an error code. The value 0 (zero) denotes no error
+happened. Other values can be passed to
+.B ub_strerror
+to obtain a readable error string.
+.B ub_strerror
+returns a zero terminated string.
+.B ub_ctx_create
+returns NULL on an error (a malloc failure).
+.B ub_poll
+returns true if some information may be available, false otherwise.
+.B ub_fd
+returns a file descriptor or \-1 on error.
+.SH "SEE ALSO"
+\fIunbound.conf\fR(5),
+\fIunbound\fR(8).
+.SH "AUTHORS"
+.B Unbound
+developers are mentioned in the CREDITS file in the distribution.
diff --git a/contrib/unbound/doc/unbound-anchor.8 b/contrib/unbound/doc/unbound-anchor.8
new file mode 100644
index 0000000..4c9c6a7
--- /dev/null
+++ b/contrib/unbound/doc/unbound-anchor.8
@@ -0,0 +1,176 @@
+.TH "unbound-anchor" "8" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" unbound-anchor.8 -- unbound anchor maintenance utility manual
+.\"
+.\" Copyright (c) 2008, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+.B unbound\-anchor
+\- Unbound anchor utility.
+.SH "SYNOPSIS"
+.B unbound\-anchor
+.RB [ opts ]
+.SH "DESCRIPTION"
+.B Unbound\-anchor
+performs setup or update of the root trust anchor for DNSSEC validation.
+It can be run (as root) from the commandline, or run as part of startup
+scripts. Before you start the \fIunbound\fR(8) DNS server.
+.P
+Suggested usage:
+.P
+.nf
+ # in the init scripts.
+ # provide or update the root anchor (if necessary)
+ unbound-anchor -a "/var/unbound/root.key"
+ # Please note usage of this root anchor is at your own risk
+ # and under the terms of our LICENSE (see source).
+ #
+ # start validating resolver
+ # the unbound.conf contains:
+ # auto-trust-anchor-file: "/var/unbound/root.key"
+ unbound -c unbound.conf
+.fi
+.P
+This tool provides builtin default contents for the root anchor and root
+update certificate files.
+.P
+It tests if the root anchor file works, and if not, and an update is possible,
+attempts to update the root anchor using the root update certificate.
+It performs a https fetch of root-anchors.xml and checks the results, if
+all checks are successful, it updates the root anchor file. Otherwise
+the root anchor file is unchanged. It performs RFC5011 tracking if the
+DNSSEC information available via the DNS makes that possible.
+.P
+It does not perform an update if the certificate is expired, if the network
+is down or other errors occur.
+.P
+The available options are:
+.TP
+.B \-a \fIfile
+The root anchor key file, that is read in and written out.
+Default is /var/unbound/root.key.
+If the file does not exist, or is empty, a builtin root key is written to it.
+.TP
+.B \-c \fIfile
+The root update certificate file, that is read in.
+Default is /var/unbound/icannbundle.pem.
+If the file does not exist, or is empty, a builtin certificate is used.
+.TP
+.B \-l
+List the builtin root key and builtin root update certificate on stdout.
+.TP
+.B \-u \fIname
+The server name, it connects to https://name. Specify without https:// prefix.
+The default is "data.iana.org". It connects to the port specified with \-P.
+You can pass an IPv4 addres or IPv6 address (no brackets) if you want.
+.TP
+.B \-x \fIpath
+The pathname to the root\-anchors.xml file on the server. (forms URL with \-u).
+The default is /root\-anchors/root\-anchors.xml.
+.TP
+.B \-s \fIpath
+The pathname to the root\-anchors.p7s file on the server. (forms URL with \-u).
+The default is /root\-anchors/root\-anchors.p7s. This file has to be a PKCS7
+signature over the xml file, using the pem file (\-c) as trust anchor.
+.TP
+.B \-n \fIname
+The emailAddress for the Subject of the signer's certificate from the p7s
+signature file. Only signatures from this name are allowed. default is
+dnssec@iana.org. If you pass "" then the emailAddress is not checked.
+.TP
+.B \-4
+Use IPv4 for domain resolution and contacting the server on https. Default is
+to use IPv4 and IPv6 where appropriate.
+.TP
+.B \-6
+Use IPv6 for domain resolution and contacting the server on https. Default is
+to use IPv4 and IPv6 where appropriate.
+.TP
+.B \-f \fIresolv.conf
+Use the given resolv.conf file. Not enabled by default, but you could try to
+pass /etc/resolv.conf on some systems. It contains the IP addresses of the
+recursive nameservers to use. However, since this tool could be used to
+bootstrap that very recursive nameserver, it would not be useful (since
+that server is not up yet, since we are bootstrapping it). It could be
+useful in a situation where you know an upstream cache is deployed (and
+running) and in captive portal situations.
+.TP
+.B \-r \fIroot.hints
+Use the given root.hints file (same syntax as the BIND and Unbound root hints
+file) to bootstrap domain resolution. By default a list of builtin root
+hints is used. Unbound\-anchor goes to the network itself for these roots,
+to resolve the server (\-u option) and to check the root DNSKEY records.
+It does so, because the tool when used for bootstrapping the recursive
+resolver, cannot use that recursive resolver itself because it is bootstrapping
+that server.
+.TP
+.B \-v
+More verbose. Once prints informational messages, multiple times may enable
+large debug amounts (such as full certificates or byte\-dumps of downloaded
+files). By default it prints almost nothing. It also prints nothing on
+errors by default; in that case the original root anchor file is simply
+left undisturbed, so that a recursive server can start right after it.
+.TP
+.B \-C \fIunbound.conf
+Debug option to read unbound.conf into the resolver process used.
+.TP
+.B \-P \fIport
+Set the port number to use for the https connection. The default is 443.
+.TP
+.B \-F
+Debug option to force update of the root anchor through downloading the xml
+file and verifying it with the certificate. By default it first tries to
+update by contacting the DNS, which uses much less bandwidth, is much
+faster (200 msec not 2 sec), and is nicer to the deployed infrastructure.
+With this option, it still attempts to do so (and may verbosely tell you),
+but then ignores the result and goes on to use the xml fallback method.
+.TP
+.B \-h
+Show the version and commandline option help.
+.SH "EXIT CODE"
+This tool exits with value 1 if the root anchor was updated using the
+certificate or if the builtin root-anchor was used. It exits with code
+0 if no update was necessary, if the update was possible with RFC5011
+tracking, or if an error occurred.
+.P
+You can check the exit value in this manner:
+.nf
+ unbound-anchor -a "root.key" || logger "Please check root.key"
+.fi
+Or something more suitable for your operational environment.
+.SH "TRUST"
+The root keys and update certificate included in this tool
+are provided for convenience and under the terms of our
+license (see the LICENSE file in the source distribution or
+http://unbound.nlnetlabs.nl/svn/trunk/LICENSE) and might be stale or
+not suitable to your purpose.
+.P
+By running "unbound\-anchor \-l" the keys and certificate that are
+configured in the code are printed for your convenience.
+.P
+The build\-in configuration can be overridden by providing a root\-cert
+file and a rootkey file.
+.SH "FILES"
+.TP
+.I /var/unbound/root.key
+The root anchor file, updated with 5011 tracking, and read and written to.
+The file is created if it does not exist.
+.TP
+.I /var/unbound/icannbundle.pem
+The trusted self\-signed certificate that is used to verify the downloaded
+DNSSEC root trust anchor. You can update it by fetching it from
+https://data.iana.org/root\-anchors/icannbundle.pem (and validate it).
+If the file does not exist or is empty, a builtin version is used.
+.TP
+.I https://data.iana.org/root\-anchors/root\-anchors.xml
+Source for the root key information.
+.TP
+.I https://data.iana.org/root\-anchors/root\-anchors.p7s
+Signature on the root key information.
+.SH "SEE ALSO"
+\fIunbound.conf\fR(5),
+\fIunbound\fR(8).
diff --git a/contrib/unbound/doc/unbound-checkconf.8 b/contrib/unbound/doc/unbound-checkconf.8
new file mode 100644
index 0000000..768bda5
--- /dev/null
+++ b/contrib/unbound/doc/unbound-checkconf.8
@@ -0,0 +1,49 @@
+.TH "unbound-checkconf" "8" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" unbound-checkconf.8 -- unbound configuration checker manual
+.\"
+.\" Copyright (c) 2007, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+unbound\-checkconf
+\- Check unbound configuration file for errors.
+.SH "SYNOPSIS"
+.B unbound\-checkconf
+.RB [ \-h ]
+.RB [ \-o
+.IR option ]
+.RI [ cfgfile ]
+.SH "DESCRIPTION"
+.B Unbound\-checkconf
+checks the configuration file for the
+\fIunbound\fR(8)
+DNS resolver for syntax and other errors.
+The config file syntax is described in
+\fIunbound.conf\fR(5).
+.P
+The available options are:
+.TP
+.B \-h
+Show the version and commandline option help.
+.TP
+.B \-o\fI option
+If given, after checking the config file the value of this option is
+printed to stdout. For "" (disabled) options an empty line is printed.
+.TP
+.I cfgfile
+The config file to read with settings for unbound. It is checked.
+If omitted, the config file at the default location is checked.
+.SH "EXIT CODE"
+The unbound\-checkconf program exits with status code 1 on error,
+0 for a correct config file.
+.SH "FILES"
+.TP
+.I /var/unbound/unbound.conf
+unbound configuration file.
+.SH "SEE ALSO"
+\fIunbound.conf\fR(5),
+\fIunbound\fR(8).
diff --git a/contrib/unbound/doc/unbound-control.8 b/contrib/unbound/doc/unbound-control.8
new file mode 100644
index 0000000..5b3559d
--- /dev/null
+++ b/contrib/unbound/doc/unbound-control.8
@@ -0,0 +1,456 @@
+.TH "unbound-control" "8" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" unbound-control.8 -- unbound remote control manual
+.\"
+.\" Copyright (c) 2008, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+.B unbound\-control,
+.B unbound\-control\-setup
+\- Unbound remote server control utility.
+.SH "SYNOPSIS"
+.B unbound\-control
+.RB [ \-hq ]
+.RB [ \-c
+.IR cfgfile ]
+.RB [ \-s
+.IR server ]
+.IR command
+.SH "DESCRIPTION"
+.B Unbound\-control
+performs remote administration on the \fIunbound\fR(8) DNS server.
+It reads the configuration file, contacts the unbound server over SSL
+sends the command and displays the result.
+.P
+The available options are:
+.TP
+.B \-h
+Show the version and commandline option help.
+.TP
+.B \-c \fIcfgfile
+The config file to read with settings. If not given the default
+config file /var/unbound/unbound.conf is used.
+.TP
+.B \-s \fIserver[@port]
+IPv4 or IPv6 address of the server to contact. If not given, the
+address is read from the config file.
+.TP
+.B \-q
+quiet, if the option is given it does not print anything if it works ok.
+.SH "COMMANDS"
+There are several commands that the server understands.
+.TP
+.B start
+Start the server. Simply execs \fIunbound\fR(8). The unbound executable
+is searched for in the \fBPATH\fR set in the environment. It is started
+with the config file specified using \fI\-c\fR or the default config file.
+.TP
+.B stop
+Stop the server. The server daemon exits.
+.TP
+.B reload
+Reload the server. This flushes the cache and reads the config file fresh.
+.TP
+.B verbosity \fInumber
+Change verbosity value for logging. Same values as \fBverbosity\fR keyword in
+\fIunbound.conf\fR(5). This new setting lasts until the server is issued
+a reload (taken from config file again), or the next verbosity control command.
+.TP
+.B log_reopen
+Reopen the logfile, close and open it. Useful for logrotation to make the
+daemon release the file it is logging to. If you are using syslog it will
+attempt to close and open the syslog (which may not work if chrooted).
+.TP
+.B stats
+Print statistics. Resets the internal counters to zero, this can be
+controlled using the \fBstatistics\-cumulative\fR config statement.
+Statistics are printed with one [name]: [value] per line.
+.TP
+.B stats_noreset
+Peek at statistics. Prints them like the \fBstats\fR command does, but does not
+reset the internal counters to zero.
+.TP
+.B status
+Display server status. Exit code 3 if not running (the connection to the
+port is refused), 1 on error, 0 if running.
+.TP
+.B local_zone \fIname\fR \fItype
+Add new local zone with name and type. Like \fBlocal\-zone\fR config statement.
+If the zone already exists, the type is changed to the given argument.
+.TP
+.B local_zone_remove \fIname
+Remove the local zone with the given name. Removes all local data inside
+it. If the zone does not exist, the command succeeds.
+.TP
+.B local_data \fIRR data...
+Add new local data, the given resource record. Like \fBlocal\-data\fR
+config statement, except for when no covering zone exists. In that case
+this remote control command creates a transparent zone with the same
+name as this record. This command is not good at returning detailed syntax
+errors.
+.TP
+.B local_data_remove \fIname
+Remove all RR data from local name. If the name already has no items,
+nothing happens. Often results in NXDOMAIN for the name (in a static zone),
+but if the name has become an empty nonterminal (there is still data in
+domain names below the removed name), NOERROR nodata answers are the
+result for that name.
+.TP
+.B dump_cache
+The contents of the cache is printed in a text format to stdout. You can
+redirect it to a file to store the cache in a file.
+.TP
+.B load_cache
+The contents of the cache is loaded from stdin. Uses the same format as
+dump_cache uses. Loading the cache with old, or wrong data can result
+in old or wrong data returned to clients. Loading data into the cache
+in this way is supported in order to aid with debugging.
+.TP
+.B lookup \fIname
+Print to stdout the name servers that would be used to look up the
+name specified.
+.TP
+.B flush \fIname
+Remove the name from the cache. Removes the types
+A, AAAA, NS, SOA, CNAME, DNAME, MX, PTR, SRV and NAPTR.
+Because that is fast to do. Other record types can be removed using
+.B flush_type
+or
+.B flush_zone\fR.
+.TP
+.B flush_type \fIname\fR \fItype
+Remove the name, type information from the cache.
+.TP
+.B flush_zone \fIname
+Remove all information at or below the name from the cache.
+The rrsets and key entries are removed so that new lookups will be performed.
+This needs to walk and inspect the entire cache, and is a slow operation.
+.TP
+.B flush_bogus
+Remove all bogus data from the cache.
+.TP
+.B flush_stats
+Reset statistics to zero.
+.TP
+.B flush_requestlist
+Drop the queries that are worked on. Stops working on the queries that the
+server is working on now. The cache is unaffected. No reply is sent for
+those queries, probably making those users request again later.
+Useful to make the server restart working on queries with new settings,
+such as a higher verbosity level.
+.TP
+.B dump_requestlist
+Show what is worked on. Prints all queries that the server is currently
+working on. Prints the time that users have been waiting. For internal
+requests, no time is printed. And then prints out the module status.
+.TP
+.B flush_infra \fIall|IP
+If all then entire infra cache is emptied. If a specific IP address, the
+entry for that address is removed from the cache. It contains EDNS, ping
+and lameness data.
+.TP
+.B dump_infra
+Show the contents of the infra cache.
+.TP
+.B set_option \fIopt: val
+Set the option to the given value without a reload. The cache is
+therefore not flushed. The option must end with a ':' and whitespace
+must be between the option and the value. Some values may not have an
+effect if set this way, the new values are not written to the config file,
+not all options are supported. This is different from the set_option call
+in libunbound, where all values work because unbound has not been inited.
+.IP
+The values that work are: statistics\-interval, statistics\-cumulative,
+do\-not\-query\-localhost, harden\-short\-bufsize, harden\-large\-queries,
+harden\-glue, harden\-dnssec\-stripped, harden\-below\-nxdomain,
+harden\-referral\-path, prefetch, prefetch\-key, log\-queries,
+hide\-identity, hide\-version, identity, version, val\-log\-level,
+val\-log\-squelch, ignore\-cd\-flag, add\-holddown, del\-holddown,
+keep\-missing, tcp\-upstream, ssl\-upstream.
+.TP
+.B get_option \fIopt
+Get the value of the option. Give the option name without a trailing ':'.
+The value is printed. If the value is "", nothing is printed
+and the connection closes. On error 'error ...' is printed (it gives
+a syntax error on unknown option). For some options a list of values,
+one on each line, is printed. The options are shown from the config file
+as modified with set_option. For some options an override may have been
+taken that does not show up with this command, not results from e.g. the
+verbosity and forward control commands. Not all options work, see list_stubs,
+list_forwards, list_local_zones and list_local_data for those.
+.TP
+.B list_stubs
+List the stub zones in use. These are printed one by one to the output.
+This includes the root hints in use.
+.TP
+.B list_forwards
+List the forward zones in use. These are printed zone by zone to the output.
+.TP
+.B list_local_zones
+List the local zones in use. These are printed one per line with zone type.
+.TP
+.B list_local_data
+List the local data RRs in use. The resource records are printed.
+.TP
+.B forward_add \fR[\fI+i\fR] \fIzone addr ...
+Add a new forward zone to running unbound. With +i option also adds a
+\fIdomain\-insecure\fR for the zone (so it can resolve insecurely if you have
+a DNSSEC root trust anchor configured for other names).
+The addr can be IP4, IP6 or nameserver names, like \fIforward-zone\fR config
+in unbound.conf.
+.TP
+.B forward_remove \fR[\fI+i\fR] \fIzone
+Remove a forward zone from running unbound. The +i also removes a
+\fIdomain\-insecure\fR for the zone.
+.TP
+.B stub_add \fR[\fI+ip\fR] \fIzone addr ...
+Add a new stub zone to running unbound. With +i option also adds a
+\fIdomain\-insecure\fR for the zone. With +p the stub zone is set to prime,
+without it it is set to notprime. The addr can be IP4, IP6 or nameserver
+names, like the \fIstub-zone\fR config in unbound.conf.
+.TP
+.B stub_remove \fR[\fI+i\fR] \fIzone
+Remove a stub zone from running unbound. The +i also removes a
+\fIdomain\-insecure\fR for the zone.
+.TP
+.B forward \fR[\fIoff\fR | \fIaddr ...\fR ]
+Setup forwarding mode. Configures if the server should ask other upstream
+nameservers, should go to the internet root nameservers itself, or show
+the current config. You could pass the nameservers after a DHCP update.
+.IP
+Without arguments the current list of addresses used to forward all queries
+to is printed. On startup this is from the forward\-zone "." configuration.
+Afterwards it shows the status. It prints off when no forwarding is used.
+.IP
+If \fIoff\fR is passed, forwarding is disabled and the root nameservers
+are used. This can be used to avoid to avoid buggy or non\-DNSSEC supporting
+nameservers returned from DHCP. But may not work in hotels or hotspots.
+.IP
+If one or more IPv4 or IPv6 addresses are given, those are then used to forward
+queries to. The addresses must be separated with spaces. With '@port' the
+port number can be set explicitly (default port is 53 (DNS)).
+.IP
+By default the forwarder information from the config file for the root "." is
+used. The config file is not changed, so after a reload these changes are
+gone. Other forward zones from the config file are not affected by this command.
+.SH "EXIT CODE"
+The unbound\-control program exits with status code 1 on error, 0 on success.
+.SH "SET UP"
+The setup requires a self\-signed certificate and private keys for both
+the server and client. The script \fIunbound\-control\-setup\fR generates
+these in the default run directory, or with \-d in another directory.
+If you change the access control permissions on the key files you can decide
+who can use unbound\-control, by default owner and group but not all users.
+Run the script under the same username as you have configured in unbound.conf
+or as root, so that the daemon is permitted to read the files, for example with:
+.nf
+ sudo \-u unbound unbound\-control\-setup
+.fi
+If you have not configured
+a username in unbound.conf, the keys need read permission for the user
+credentials under which the daemon is started.
+The script preserves private keys present in the directory.
+After running the script as root, turn on \fBcontrol\-enable\fR in
+\fIunbound.conf\fR.
+.SH "STATISTIC COUNTERS"
+The \fIstats\fR command shows a number of statistic counters.
+.TP
+.I threadX.num.queries
+number of queries received by thread
+.TP
+.I threadX.num.cachehits
+number of queries that were successfully answered using a cache lookup
+.TP
+.I threadX.num.cachemiss
+number of queries that needed recursive processing
+.TP
+.I threadX.num.prefetch
+number of cache prefetches performed. This number is included in
+cachehits, as the original query had the unprefetched answer from cache,
+and resulted in recursive processing, taking a slot in the requestlist.
+Not part of the recursivereplies (or the histogram thereof) or cachemiss,
+as a cache response was sent.
+.TP
+.I threadX.num.recursivereplies
+The number of replies sent to queries that needed recursive processing. Could be smaller than threadX.num.cachemiss if due to timeouts no replies were sent for some queries.
+.TP
+.I threadX.requestlist.avg
+The average number of requests in the internal recursive processing request list on insert of a new incoming recursive processing query.
+.TP
+.I threadX.requestlist.max
+Maximum size attained by the internal recursive processing request list.
+.TP
+.I threadX.requestlist.overwritten
+Number of requests in the request list that were overwritten by newer entries. This happens if there is a flood of queries that recursive processing and the server has a hard time.
+.TP
+.I threadX.requestlist.exceeded
+Queries that were dropped because the request list was full. This happens if a flood of queries need recursive processing, and the server can not keep up.
+.TP
+.I threadX.requestlist.current.all
+Current size of the request list, includes internally generated queries (such
+as priming queries and glue lookups).
+.TP
+.I threadX.requestlist.current.user
+Current size of the request list, only the requests from client queries.
+.TP
+.I threadX.recursion.time.avg
+Average time it took to answer queries that needed recursive processing. Note that queries that were answered from the cache are not in this average.
+.TP
+.I threadX.recursion.time.median
+The median of the time it took to answer queries that needed recursive
+processing. The median means that 50% of the user queries were answered in
+less than this time. Because of big outliers (usually queries to non
+responsive servers), the average can be bigger than the median. This median
+has been calculated by interpolation from a histogram.
+.TP
+.I total.num.queries
+summed over threads.
+.TP
+.I total.num.cachehits
+summed over threads.
+.TP
+.I total.num.cachemiss
+summed over threads.
+.TP
+.I total.num.prefetch
+summed over threads.
+.TP
+.I total.num.recursivereplies
+summed over threads.
+.TP
+.I total.requestlist.avg
+averaged over threads.
+.TP
+.I total.requestlist.max
+the maximum of the thread requestlist.max values.
+.TP
+.I total.requestlist.overwritten
+summed over threads.
+.TP
+.I total.requestlist.exceeded
+summed over threads.
+.TP
+.I total.requestlist.current.all
+summed over threads.
+.TP
+.I total.recursion.time.median
+averaged over threads.
+.TP
+.I time.now
+current time in seconds since 1970.
+.TP
+.I time.up
+uptime since server boot in seconds.
+.TP
+.I time.elapsed
+time since last statistics printout, in seconds.
+.SH EXTENDED STATISTICS
+.TP
+.I mem.total.sbrk
+If sbrk(2) is available, an estimate of the heap size of the program in number of bytes. Close to the total memory used by the program, as reported by top and ps. Could be wrong if the OS allocates memory non\-contiguously.
+.TP
+.I mem.cache.rrset
+Memory in bytes in use by the RRset cache.
+.TP
+.I mem.cache.message
+Memory in bytes in use by the message cache.
+.TP
+.I mem.mod.iterator
+Memory in bytes in use by the iterator module.
+.TP
+.I mem.mod.validator
+Memory in bytes in use by the validator module. Includes the key cache and
+negative cache.
+.TP
+.I histogram.<sec>.<usec>.to.<sec>.<usec>
+Shows a histogram, summed over all threads. Every element counts the
+recursive queries whose reply time fit between the lower and upper bound.
+Times larger or equal to the lowerbound, and smaller than the upper bound.
+There are 40 buckets, with bucket sizes doubling.
+.TP
+.I num.query.type.A
+The total number of queries over all threads with query type A.
+Printed for the other query types as well, but only for the types for which
+queries were received, thus =0 entries are omitted for brevity.
+.TP
+.I num.query.type.other
+Number of queries with query types 256\-65535.
+.TP
+.I num.query.class.IN
+The total number of queries over all threads with query class IN (internet).
+Also printed for other classes (such as CH (CHAOS) sometimes used for
+debugging), or NONE, ANY, used by dynamic update.
+num.query.class.other is printed for classes 256\-65535.
+.TP
+.I num.query.opcode.QUERY
+The total number of queries over all threads with query opcode QUERY.
+Also printed for other opcodes, UPDATE, ...
+.TP
+.I num.query.tcp
+Number of queries that were made using TCP towards the unbound server.
+.TP
+.I num.query.ipv6
+Number of queries that were made using IPv6 towards the unbound server.
+.TP
+.I num.query.flags.RD
+The number of queries that had the RD flag set in the header.
+Also printed for flags QR, AA, TC, RA, Z, AD, CD.
+Note that queries with flags QR, AA or TC may have been rejected
+because of that.
+.TP
+.I num.query.edns.present
+number of queries that had an EDNS OPT record present.
+.TP
+.I num.query.edns.DO
+number of queries that had an EDNS OPT record with the DO (DNSSEC OK) bit set.
+These queries are also included in the num.query.edns.present number.
+.TP
+.I num.answer.rcode.NXDOMAIN
+The number of answers to queries, from cache or from recursion, that had the
+return code NXDOMAIN. Also printed for the other return codes.
+.TP
+.I num.answer.rcode.nodata
+The number of answers to queries that had the pseudo return code nodata.
+This means the actual return code was NOERROR, but additionally, no data was
+carried in the answer (making what is called a NOERROR/NODATA answer).
+These queries are also included in the num.answer.rcode.NOERROR number.
+Common for AAAA lookups when an A record exists, and no AAAA.
+.TP
+.I num.answer.secure
+Number of answers that were secure. The answer validated correctly.
+The AD bit might have been set in some of these answers, where the client
+signalled (with DO or AD bit in the query) that they were ready to accept
+the AD bit in the answer.
+.TP
+.I num.answer.bogus
+Number of answers that were bogus. These answers resulted in SERVFAIL
+to the client because the answer failed validation.
+.TP
+.I num.rrset.bogus
+The number of rrsets marked bogus by the validator. Increased for every
+RRset inspection that fails.
+.TP
+.I unwanted.queries
+Number of queries that were refused or dropped because they failed the
+access control settings.
+.TP
+.I unwanted.replies
+Replies that were unwanted or unsolicited. Could have been random traffic,
+delayed duplicates, very late answers, or could be spoofing attempts.
+Some low level of late answers and delayed duplicates are to be expected
+with the UDP protocol. Very high values could indicate a threat (spoofing).
+.SH "FILES"
+.TP
+.I /var/unbound/unbound.conf
+unbound configuration file.
+.TP
+.I /var/unbound
+directory with private keys (unbound_server.key and unbound_control.key) and
+self\-signed certificates (unbound_server.pem and unbound_control.pem).
+.SH "SEE ALSO"
+\fIunbound.conf\fR(5),
+\fIunbound\fR(8).
diff --git a/contrib/unbound/doc/unbound.8 b/contrib/unbound/doc/unbound.8
new file mode 100644
index 0000000..09fcc6a
--- /dev/null
+++ b/contrib/unbound/doc/unbound.8
@@ -0,0 +1,51 @@
+.TH "unbound" "8" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" unbound.8 -- unbound manual
+.\"
+.\" Copyright (c) 2007, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+.B unbound
+\- Unbound DNS validating resolver 1.4.20.
+.SH "SYNOPSIS"
+.LP
+.B unbound
+.RB [ \-h ]
+.RB [ \-d ]
+.RB [ \-v ]
+.RB [ \-c
+.IR cfgfile ]
+.SH "DESCRIPTION"
+.LP
+.B Unbound
+is an implementation of a DNS resolver, that does caching and
+DNSSEC validation.
+.P
+The available options are:
+.TP
+.B \-h
+Show the version and commandline option help.
+.TP
+.B \-c\fI cfgfile
+Set the config file with settings for unbound to read instead of reading the
+file at the default location, /var/unbound/unbound.conf. The syntax is
+described in \fIunbound.conf\fR(5).
+.TP
+.B \-d
+Debug flag, do not fork into the background, but stay attached to the
+console. This flag will also delay writing to the logfile until the
+thread\-spawn time. So that most config and setup errors appear on stderr.
+.TP
+.B \-v
+Increase verbosity. If given multiple times, more information is logged.
+This is in addition to the verbosity (if any) from the config file.
+.SH "SEE ALSO"
+\fIunbound.conf\fR(5),
+\fIunbound\-checkconf\fR(8).
+.SH "AUTHORS"
+.B Unbound
+developers are mentioned in the CREDITS file in the distribution.
diff --git a/contrib/unbound/doc/unbound.conf.5 b/contrib/unbound/doc/unbound.conf.5
new file mode 100644
index 0000000..1b399a4
--- /dev/null
+++ b/contrib/unbound/doc/unbound.conf.5
@@ -0,0 +1,1098 @@
+.TH "unbound.conf" "5" "Mar 21, 2013" "NLnet Labs" "unbound 1.4.20"
+.\"
+.\" unbound.conf.5 -- unbound.conf manual
+.\"
+.\" Copyright (c) 2007, NLnet Labs. All rights reserved.
+.\"
+.\" See LICENSE for the license.
+.\"
+.\"
+.SH "NAME"
+.LP
+.B unbound.conf
+\- Unbound configuration file.
+.SH "SYNOPSIS"
+.LP
+.B unbound.conf
+.SH "DESCRIPTION"
+.LP
+.B unbound.conf
+is used to configure
+\fIunbound\fR(8).
+The file format has attributes and values. Some attributes have attributes inside them.
+The notation is: attribute: value.
+.P
+Comments start with # and last to the end of line. Empty lines are
+ignored as is whitespace at the beginning of a line.
+.P
+The utility
+\fIunbound\-checkconf\fR(8)
+can be used to check unbound.conf prior to usage.
+.SH "EXAMPLE"
+An example config file is shown below. Copy this to /etc/unbound/unbound.conf
+and start the server with:
+.P
+.nf
+ $ unbound \-c /etc/unbound/unbound.conf
+.fi
+.P
+Most settings are the defaults. Stop the server with:
+.P
+.nf
+ $ kill `cat /etc/unbound/unbound.pid`
+.fi
+.P
+Below is a minimal config file. The source distribution contains an extensive
+example.conf file with all the options.
+.P
+.nf
+# unbound.conf(5) config file for unbound(8).
+server:
+ directory: "/etc/unbound"
+ username: unbound
+ # make sure unbound can access entropy from inside the chroot.
+ # e.g. on linux the use these commands (on BSD, devfs(8) is used):
+ # mount \-\-bind \-n /dev/random /etc/unbound/dev/random
+ # and mount \-\-bind \-n /dev/log /etc/unbound/dev/log
+ chroot: "/etc/unbound"
+ # logfile: "/etc/unbound/unbound.log" #uncomment to use logfile.
+ pidfile: "/etc/unbound/unbound.pid"
+ # verbosity: 1 # uncomment and increase to get more logging.
+ # listen on all interfaces, answer queries from the local subnet.
+ interface: 0.0.0.0
+ interface: ::0
+ access\-control: 10.0.0.0/8 allow
+ access\-control: 2001:DB8::/64 allow
+.fi
+.SH "FILE FORMAT"
+.LP
+There must be whitespace between keywords. Attribute keywords end with a colon ':'. An attribute
+is followed by its containing attributes, or a value.
+.P
+Files can be included using the
+.B include:
+directive. It can appear anywhere, it accepts a single file name as argument.
+Processing continues as if the text from the included file was copied into
+the config file at that point. If also using chroot, using full path names
+for the included files works, relative pathnames for the included names work
+if the directory where the daemon is started equals its chroot/working
+directory. Wildcards can be used to include multiple files, see \fIglob\fR(7).
+.SS "Server Options"
+These options are part of the
+.B server:
+clause.
+.TP
+.B verbosity: \fI<number>
+The verbosity number, level 0 means no verbosity, only errors. Level 1
+gives operational information. Level 2 gives detailed operational
+information. Level 3 gives query level information, output per query.
+Level 4 gives algorithm level information. Level 5 logs client
+identification for cache misses. Default is level 1.
+The verbosity can also be increased from the commandline, see \fIunbound\fR(8).
+.TP
+.B statistics\-interval: \fI<seconds>
+The number of seconds between printing statistics to the log for every thread.
+Disable with value 0 or "". Default is disabled. The histogram statistics
+are only printed if replies were sent during the statistics interval,
+requestlist statistics are printed for every interval (but can be 0).
+This is because the median calculation requires data to be present.
+.TP
+.B statistics\-cumulative: \fI<yes or no>
+If enabled, statistics are cumulative since starting unbound, without clearing
+the statistics counters after logging the statistics. Default is no.
+.TP
+.B extended\-statistics: \fI<yes or no>
+If enabled, extended statistics are printed from \fIunbound\-control\fR(8).
+Default is off, because keeping track of more statistics takes time. The
+counters are listed in \fIunbound\-control\fR(8).
+.TP
+.B num\-threads: \fI<number>
+The number of threads to create to serve clients. Use 1 for no threading.
+.TP
+.B port: \fI<port number>
+The port number, default 53, on which the server responds to queries.
+.TP
+.B interface: \fI<ip address[@port]>
+Interface to use to connect to the network. This interface is listened to
+for queries from clients, and answers to clients are given from it.
+Can be given multiple times to work on several interfaces. If none are
+given the default is to listen to localhost.
+The interfaces are not changed on a reload (kill \-HUP) but only on restart.
+A port number can be specified with @port (without spaces between
+interface and port number), if not specified the default port (from
+\fBport\fR) is used.
+.TP
+.B interface\-automatic: \fI<yes or no>
+Detect source interface on UDP queries and copy them to replies. This
+feature is experimental, and needs support in your OS for particular socket
+options. Default value is no.
+.TP
+.B outgoing\-interface: \fI<ip address>
+Interface to use to connect to the network. This interface is used to send
+queries to authoritative servers and receive their replies. Can be given
+multiple times to work on several interfaces. If none are given the
+default (all) is used. You can specify the same interfaces in
+.B interface:
+and
+.B outgoing\-interface:
+lines, the interfaces are then used for both purposes. Outgoing queries are
+sent via a random outgoing interface to counter spoofing.
+.TP
+.B outgoing\-range: \fI<number>
+Number of ports to open. This number of file descriptors can be opened per
+thread. Must be at least 1. Default depends on compile options. Larger
+numbers need extra resources from the operating system. For performance a
+a very large value is best, use libevent to make this possible.
+.TP
+.B outgoing\-port\-permit: \fI<port number or range>
+Permit unbound to open this port or range of ports for use to send queries.
+A larger number of permitted outgoing ports increases resilience against
+spoofing attempts. Make sure these ports are not needed by other daemons.
+By default only ports above 1024 that have not been assigned by IANA are used.
+Give a port number or a range of the form "low\-high", without spaces.
+.IP
+The \fBoutgoing\-port\-permit\fR and \fBoutgoing\-port\-avoid\fR statements
+are processed in the line order of the config file, adding the permitted ports
+and subtracting the avoided ports from the set of allowed ports. The
+processing starts with the non IANA allocated ports above 1024 in the set
+of allowed ports.
+.TP
+.B outgoing\-port\-avoid: \fI<port number or range>
+Do not permit unbound to open this port or range of ports for use to send
+queries. Use this to make sure unbound does not grab a port that another
+daemon needs. The port is avoided on all outgoing interfaces, both IP4 and IP6.
+By default only ports above 1024 that have not been assigned by IANA are used.
+Give a port number or a range of the form "low\-high", without spaces.
+.TP
+.B outgoing\-num\-tcp: \fI<number>
+Number of outgoing TCP buffers to allocate per thread. Default is 10. If set
+to 0, or if do_tcp is "no", no TCP queries to authoritative servers are done.
+.TP
+.B incoming\-num\-tcp: \fI<number>
+Number of incoming TCP buffers to allocate per thread. Default is 10. If set
+to 0, or if do_tcp is "no", no TCP queries from clients are accepted.
+.TP
+.B edns\-buffer\-size: \fI<number>
+Number of bytes size to advertise as the EDNS reassembly buffer size.
+This is the value put into datagrams over UDP towards peers. The actual
+buffer size is determined by msg\-buffer\-size (both for TCP and UDP). Do
+not set higher than that value. Default is 4096 which is RFC recommended.
+If you have fragmentation reassembly problems, usually seen as timeouts,
+then a value of 1480 can fix it. Setting to 512 bypasses even the most
+stringent path MTU problems, but is seen as extreme, since the amount
+of TCP fallback generated is excessive (probably also for this resolver,
+consider tuning the outgoing tcp number).
+.TP
+.B msg\-buffer\-size: \fI<number>
+Number of bytes size of the message buffers. Default is 65552 bytes, enough
+for 64 Kb packets, the maximum DNS message size. No message larger than this
+can be sent or received. Can be reduced to use less memory, but some requests
+for DNS data, such as for huge resource records, will result in a SERVFAIL
+reply to the client.
+.TP
+.B msg\-cache\-size: \fI<number>
+Number of bytes size of the message cache. Default is 4 megabytes.
+A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
+or gigabytes (1024*1024 bytes in a megabyte).
+.TP
+.B msg\-cache\-slabs: \fI<number>
+Number of slabs in the message cache. Slabs reduce lock contention by threads.
+Must be set to a power of 2. Setting (close) to the number of cpus is a
+reasonable guess.
+.TP
+.B num\-queries\-per\-thread: \fI<number>
+The number of queries that every thread will service simultaneously.
+If more queries arrive that need servicing, and no queries can be jostled out
+(see \fIjostle\-timeout\fR), then the queries are dropped. This forces
+the client to resend after a timeout; allowing the server time to work on
+the existing queries. Default depends on compile options, 512 or 1024.
+.TP
+.B jostle\-timeout: \fI<msec>
+Timeout used when the server is very busy. Set to a value that usually
+results in one roundtrip to the authority servers. If too many queries
+arrive, then 50% of the queries are allowed to run to completion, and
+the other 50% are replaced with the new incoming query if they have already
+spent more than their allowed time. This protects against denial of
+service by slow queries or high query rates. Default 200 milliseconds.
+The effect is that the qps for long-lasting queries is about
+(numqueriesperthread / 2) / (average time for such long queries) qps.
+The qps for short queries can be about (numqueriesperthread / 2)
+/ (jostletimeout in whole seconds) qps per thread, about (1024/2)*5 = 2560
+qps by default.
+.TP
+.B so\-rcvbuf: \fI<number>
+If not 0, then set the SO_RCVBUF socket option to get more buffer
+space on UDP port 53 incoming queries. So that short spikes on busy
+servers do not drop packets (see counter in netstat \-su). Default is
+0 (use system value). Otherwise, the number of bytes to ask for, try
+"4m" on a busy server. The OS caps it at a maximum, on linux unbound
+needs root permission to bypass the limit, or the admin can use sysctl
+net.core.rmem_max. On BSD change kern.ipc.maxsockbuf in /etc/sysctl.conf.
+On OpenBSD change header and recompile kernel. On Solaris ndd \-set
+/dev/udp udp_max_buf 8388608.
+.TP
+.B so\-sndbuf: \fI<number>
+If not 0, then set the SO_SNDBUF socket option to get more buffer space on
+UDP port 53 outgoing queries. This for very busy servers handles spikes
+in answer traffic, otherwise 'send: resource temporarily unavailable'
+can get logged, the buffer overrun is also visible by netstat \-su.
+Default is 0 (use system value). Specify the number of bytes to ask
+for, try "4m" on a very busy server. The OS caps it at a maximum, on
+linux unbound needs root permission to bypass the limit, or the admin
+can use sysctl net.core.wmem_max. On BSD, Solaris changes are similar
+to so\-rcvbuf.
+.TP
+.B rrset\-cache\-size: \fI<number>
+Number of bytes size of the RRset cache. Default is 4 megabytes.
+A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
+or gigabytes (1024*1024 bytes in a megabyte).
+.TP
+.B rrset\-cache\-slabs: \fI<number>
+Number of slabs in the RRset cache. Slabs reduce lock contention by threads.
+Must be set to a power of 2.
+.TP
+.B cache\-max\-ttl: \fI<seconds>
+Time to live maximum for RRsets and messages in the cache. Default is
+86400 seconds (1 day). If the maximum kicks in, responses to clients
+still get decrementing TTLs based on the original (larger) values.
+When the internal TTL expires, the cache item has expired.
+Can be set lower to force the resolver to query for data often, and not
+trust (very large) TTL values.
+.TP
+.B cache\-min\-ttl: \fI<seconds>
+Time to live minimum for RRsets and messages in the cache. Default is 0.
+If the the minimum kicks in, the data is cached for longer than the domain
+owner intended, and thus less queries are made to look up the data.
+Zero makes sure the data in the cache is as the domain owner intended,
+higher values, especially more than an hour or so, can lead to trouble as
+the data in the cache does not match up with the actual data any more.
+.TP
+.B infra\-host\-ttl: \fI<seconds>
+Time to live for entries in the host cache. The host cache contains
+roundtrip timing, lameness and EDNS support information. Default is 900.
+.TP
+.B infra\-cache\-slabs: \fI<number>
+Number of slabs in the infrastructure cache. Slabs reduce lock contention
+by threads. Must be set to a power of 2.
+.TP
+.B infra\-cache\-numhosts: \fI<number>
+Number of hosts for which information is cached. Default is 10000.
+.TP
+.B do\-ip4: \fI<yes or no>
+Enable or disable whether ip4 queries are answered or issued. Default is yes.
+.TP
+.B do\-ip6: \fI<yes or no>
+Enable or disable whether ip6 queries are answered or issued. Default is yes.
+If disabled, queries are not answered on IPv6, and queries are not sent on
+IPv6 to the internet nameservers.
+.TP
+.B do\-udp: \fI<yes or no>
+Enable or disable whether UDP queries are answered or issued. Default is yes.
+.TP
+.B do\-tcp: \fI<yes or no>
+Enable or disable whether TCP queries are answered or issued. Default is yes.
+.TP
+.B tcp\-upstream: \fI<yes or no>
+Enable or disable whether the upstream queries use TCP only for transport.
+Default is no. Useful in tunneling scenarios.
+.TP
+.B ssl\-upstream: \fI<yes or no>
+Enabled or disable whether the upstream queries use SSL only for transport.
+Default is no. Useful in tunneling scenarios. The SSL contains plain DNS in
+TCP wireformat. The other server must support this (see \fBssl\-service\-key\fR).
+.TP
+.B ssl\-service-key: \fI<file>
+If enabled, the server provider SSL service on its TCP sockets. The clients
+have to use ssl\-upstream: yes. The file is the private key for the TLS
+session. The public certificate is in the ssl\-service\-pem file. Default
+is "", turned off. Requires a restart (a reload is not enough) if changed,
+because the private key is read while root permissions are held and before
+chroot (if any). Normal DNS TCP service is not provided and gives errors,
+this service is best run with a different \fBport:\fR config or \fI@port\fR
+suffixes in the \fBinterface\fR config.
+.TP
+.B ssl\-service\-pem: \fI<file>
+The public key certificate pem file for the ssl service. Default is "",
+turned off.
+.TP
+.B ssl\-port: \fI<number>
+The port number on which to provide TCP SSL service, default 443, only
+interfaces configured with that port number as @number get the SSL service.
+.TP
+.B do\-daemonize: \fI<yes or no>
+Enable or disable whether the unbound server forks into the background as
+a daemon. Default is yes.
+.TP
+.B access\-control: \fI<IP netblock> <action>
+The netblock is given as an IP4 or IP6 address with /size appended for a
+classless network block. The action can be \fIdeny\fR, \fIrefuse\fR,
+\fIallow\fR or \fIallow_snoop\fR.
+.IP
+The action \fIdeny\fR stops queries from hosts from that netblock.
+.IP
+The action \fIrefuse\fR stops queries too, but sends a DNS rcode REFUSED
+error message back.
+.IP
+The action \fIallow\fR gives access to clients from that netblock.
+It gives only access for recursion clients (which is
+what almost all clients need). Nonrecursive queries are refused.
+.IP
+The \fIallow\fR action does allow nonrecursive queries to access the
+local\-data that is configured. The reason is that this does not involve
+the unbound server recursive lookup algorithm, and static data is served
+in the reply. This supports normal operations where nonrecursive queries
+are made for the authoritative data. For nonrecursive queries any replies
+from the dynamic cache are refused.
+.IP
+The action \fIallow_snoop\fR gives nonrecursive access too. This give
+both recursive and non recursive access. The name \fIallow_snoop\fR refers
+to cache snooping, a technique to use nonrecursive queries to examine
+the cache contents (for malicious acts). However, nonrecursive queries can
+also be a valuable debugging tool (when you want to examine the cache
+contents). In that case use \fIallow_snoop\fR for your administration host.
+.IP
+By default only localhost is \fIallow\fRed, the rest is \fIrefuse\fRd.
+The default is \fIrefuse\fRd, because that is protocol\-friendly. The DNS
+protocol is not designed to handle dropped packets due to policy, and
+dropping may result in (possibly excessive) retried queries.
+.TP
+.B chroot: \fI<directory>
+If chroot is enabled, you should pass the configfile (from the
+commandline) as a full path from the original root. After the
+chroot has been performed the now defunct portion of the config
+file path is removed to be able to reread the config after a reload.
+.IP
+All other file paths (working dir, logfile, roothints, and
+key files) can be specified in several ways:
+as an absolute path relative to the new root,
+as a relative path to the working directory, or
+as an absolute path relative to the original root.
+In the last case the path is adjusted to remove the unused portion.
+.IP
+The pidfile can be either a relative path to the working directory, or
+an absolute path relative to the original root. It is written just prior
+to chroot and dropping permissions. This allows the pidfile to be
+/var/run/unbound.pid and the chroot to be /var/unbound, for example.
+.IP
+Additionally, unbound may need to access /dev/random (for entropy)
+from inside the chroot.
+.IP
+If given a chroot is done to the given directory. The default is
+"/var/unbound". If you give "" no chroot is performed.
+.TP
+.B username: \fI<name>
+If given, after binding the port the user privileges are dropped. Default is
+"unbound". If you give username: "" no user change is performed.
+.IP
+If this user is not capable of binding the
+port, reloads (by signal HUP) will still retain the opened ports.
+If you change the port number in the config file, and that new port number
+requires privileges, then a reload will fail; a restart is needed.
+.TP
+.B directory: \fI<directory>
+Sets the working directory for the program. Default is "/var/unbound".
+.TP
+.B logfile: \fI<filename>
+If "" is given, logging goes to stderr, or nowhere once daemonized.
+The logfile is appended to, in the following format:
+.nf
+[seconds since 1970] unbound[pid:tid]: type: message.
+.fi
+If this option is given, the use\-syslog is option is set to "no".
+The logfile is reopened (for append) when the config file is reread, on
+SIGHUP.
+.TP
+.B use\-syslog: \fI<yes or no>
+Sets unbound to send log messages to the syslogd, using
+\fIsyslog\fR(3).
+The log facility LOG_DAEMON is used, with identity "unbound".
+The logfile setting is overridden when use\-syslog is turned on.
+The default is to log to syslog.
+.TP
+.B log\-time\-ascii: \fI<yes or no>
+Sets logfile lines to use a timestamp in UTC ascii. Default is no, which
+prints the seconds since 1970 in brackets. No effect if using syslog, in
+that case syslog formats the timestamp printed into the log files.
+.TP
+.B log\-queries: \fI<yes or no>
+Prints one line per query to the log, with the log timestamp and IP address,
+name, type and class. Default is no. Note that it takes time to print these
+lines which makes the server (significantly) slower. Odd (nonprintable)
+characters in names are printed as '?'.
+.TP
+.B pidfile: \fI<filename>
+The process id is written to the file. Default is "/var/unbound/unbound.pid".
+So,
+.nf
+kill \-HUP `cat /var/unbound/unbound.pid`
+.fi
+triggers a reload,
+.nf
+kill \-QUIT `cat /var/unbound/unbound.pid`
+.fi
+gracefully terminates.
+.TP
+.B root\-hints: \fI<filename>
+Read the root hints from this file. Default is nothing, using builtin hints
+for the IN class. The file has the format of zone files, with root
+nameserver names and addresses only. The default may become outdated,
+when servers change, therefore it is good practice to use a root\-hints file.
+.TP
+.B hide\-identity: \fI<yes or no>
+If enabled id.server and hostname.bind queries are refused.
+.TP
+.B identity: \fI<string>
+Set the identity to report. If set to "", the default, then the hostname
+of the server is returned.
+.TP
+.B hide\-version: \fI<yes or no>
+If enabled version.server and version.bind queries are refused.
+.TP
+.B version: \fI<string>
+Set the version to report. If set to "", the default, then the package
+version is returned.
+.TP
+.B target\-fetch\-policy: \fI<"list of numbers">
+Set the target fetch policy used by unbound to determine if it should fetch
+nameserver target addresses opportunistically. The policy is described per
+dependency depth.
+.IP
+The number of values determines the maximum dependency depth
+that unbound will pursue in answering a query.
+A value of \-1 means to fetch all targets opportunistically for that dependency
+depth. A value of 0 means to fetch on demand only. A positive value fetches
+that many targets opportunistically.
+.IP
+Enclose the list between quotes ("") and put spaces between numbers.
+The default is "3 2 1 0 0". Setting all zeroes, "0 0 0 0 0" gives behaviour
+closer to that of BIND 9, while setting "\-1 \-1 \-1 \-1 \-1" gives behaviour
+rumoured to be closer to that of BIND 8.
+.TP
+.B harden\-short\-bufsize: \fI<yes or no>
+Very small EDNS buffer sizes from queries are ignored. Default is off, since
+it is legal protocol wise to send these, and unbound tries to give very
+small answers to these queries, where possible.
+.TP
+.B harden\-large\-queries: \fI<yes or no>
+Very large queries are ignored. Default is off, since it is legal protocol
+wise to send these, and could be necessary for operation if TSIG or EDNS
+payload is very large.
+.TP
+.B harden\-glue: \fI<yes or no>
+Will trust glue only if it is within the servers authority. Default is on.
+.TP
+.B harden\-dnssec\-stripped: \fI<yes or no>
+Require DNSSEC data for trust\-anchored zones, if such data is absent,
+the zone becomes bogus. If turned off, and no DNSSEC data is received
+(or the DNSKEY data fails to validate), then the zone is made insecure,
+this behaves like there is no trust anchor. You could turn this off if
+you are sometimes behind an intrusive firewall (of some sort) that
+removes DNSSEC data from packets, or a zone changes from signed to
+unsigned to badly signed often. If turned off you run the risk of a
+downgrade attack that disables security for a zone. Default is on.
+.TP
+.B harden\-below\-nxdomain: \fI<yes or no>
+From draft-vixie-dnsext-resimprove, returns nxdomain to queries for a name
+below another name that is already known to be nxdomain. DNSSEC mandates
+noerror for empty nonterminals, hence this is possible. Very old software
+might return nxdomain for empty nonterminals (that usually happen for reverse
+IP address lookups), and thus may be incompatible with this. To try to avoid
+this only DNSSEC-secure nxdomains are used, because the old software does not
+have DNSSEC. Default is off.
+.TP
+.B harden\-referral\-path: \fI<yes or no>
+Harden the referral path by performing additional queries for
+infrastructure data. Validates the replies if trust anchors are configured
+and the zones are signed. This enforces DNSSEC validation on nameserver
+NS sets and the nameserver addresses that are encountered on the referral
+path to the answer.
+Default off, because it burdens the authority servers, and it is
+not RFC standard, and could lead to performance problems because of the
+extra query load that is generated. Experimental option.
+If you enable it consider adding more numbers after the target\-fetch\-policy
+to increase the max depth that is checked to.
+.TP
+.B use\-caps\-for\-id: \fI<yes or no>
+Use 0x20\-encoded random bits in the query to foil spoof attempts.
+This perturbs the lowercase and uppercase of query names sent to
+authority servers and checks if the reply still has the correct casing.
+Disabled by default.
+This feature is an experimental implementation of draft dns\-0x20.
+.TP
+.B private\-address: \fI<IP address or subnet>
+Give IPv4 of IPv6 addresses or classless subnets. These are addresses
+on your private network, and are not allowed to be returned for public
+internet names. Any occurence of such addresses are removed from
+DNS answers. Additionally, the DNSSEC validator may mark the answers
+bogus. This protects against so\-called DNS Rebinding, where a user browser
+is turned into a network proxy, allowing remote access through the browser
+to other parts of your private network. Some names can be allowed to
+contain your private addresses, by default all the \fBlocal\-data\fR
+that you configured is allowed to, and you can specify additional
+names using \fBprivate\-domain\fR. No private addresses are enabled
+by default. We consider to enable this for the RFC1918 private IP
+address space by default in later releases. That would enable private
+addresses for 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16
+fd00::/8 and fe80::/10, since the RFC standards say these addresses
+should not be visible on the public internet. Turning on 127.0.0.0/8
+would hinder many spamblocklists as they use that.
+.TP
+.B private\-domain: \fI<domain name>
+Allow this domain, and all its subdomains to contain private addresses.
+Give multiple times to allow multiple domain names to contain private
+addresses. Default is none.
+.TP
+.B unwanted\-reply\-threshold: \fI<number>
+If set, a total number of unwanted replies is kept track of in every thread.
+When it reaches the threshold, a defensive action is taken and a warning
+is printed to the log. The defensive action is to clear the rrset and
+message caches, hopefully flushing away any poison. A value of 10 million
+is suggested. Default is 0 (turned off).
+.TP
+.B do\-not\-query\-address: \fI<IP address>
+Do not query the given IP address. Can be IP4 or IP6. Append /num to
+indicate a classless delegation netblock, for example like
+10.2.3.4/24 or 2001::11/64.
+.TP
+.B do\-not\-query\-localhost: \fI<yes or no>
+If yes, localhost is added to the do\-not\-query\-address entries, both
+IP6 ::1 and IP4 127.0.0.1/8. If no, then localhost can be used to send
+queries to. Default is yes.
+.TP
+.B prefetch: \fI<yes or no>
+If yes, message cache elements are prefetched before they expire to
+keep the cache up to date. Default is no. Turning it on gives about
+10 percent more traffic and load on the machine, but popular items do
+not expire from the cache.
+.TP
+.B prefetch-key: \fI<yes or no>
+If yes, fetch the DNSKEYs earlier in the validation process, when a DS
+record is encountered. This lowers the latency of requests. It does use
+a little more CPU. Also if the cache is set to 0, it is no use. Default is no.
+.TP
+.B rrset-roundrobin: \fI<yes or no>
+If yes, Unbound rotates RRSet order in response (the random number is taken
+from the query ID, for speed and thread safety). Default is no.
+.TP
+.B minimal-responses: \fI<yes or no>
+If yes, Unbound doesn't insert authority/additional sections into response
+messages when those sections are not required. This reduces response
+size significantly, and may avoid TCP fallback for some responses.
+This may cause a slight speedup. The default is no, because the DNS
+protocol RFCs mandate these sections, and the additional content could
+be of use and save roundtrips for clients.
+.TP
+.B module\-config: \fI<"module names">
+Module configuration, a list of module names separated by spaces, surround
+the string with quotes (""). The modules can be validator, iterator.
+Setting this to "iterator" will result in a non\-validating server.
+Setting this to "validator iterator" will turn on DNSSEC validation.
+The ordering of the modules is important.
+You must also set trust\-anchors for validation to be useful.
+.TP
+.B trust\-anchor\-file: \fI<filename>
+File with trusted keys for validation. Both DS and DNSKEY entries can appear
+in the file. The format of the file is the standard DNS Zone file format.
+Default is "", or no trust anchor file.
+.TP
+.B auto\-trust\-anchor\-file: \fI<filename>
+File with trust anchor for one zone, which is tracked with RFC5011 probes.
+The probes are several times per month, thus the machine must be online
+frequently. The initial file can be one with contents as described in
+\fBtrust\-anchor\-file\fR. The file is written to when the anchor is updated,
+so the unbound user must have write permission.
+.TP
+.B trust\-anchor: \fI<"Resource Record">
+A DS or DNSKEY RR for a key to use for validation. Multiple entries can be
+given to specify multiple trusted keys, in addition to the trust\-anchor\-files.
+The resource record is entered in the same format as 'dig' or 'drill' prints
+them, the same format as in the zone file. Has to be on a single line, with
+"" around it. A TTL can be specified for ease of cut and paste, but is ignored.
+A class can be specified, but class IN is default.
+.TP
+.B trusted\-keys\-file: \fI<filename>
+File with trusted keys for validation. Specify more than one file
+with several entries, one file per entry. Like \fBtrust\-anchor\-file\fR
+but has a different file format. Format is BIND\-9 style format,
+the trusted\-keys { name flag proto algo "key"; }; clauses are read.
+It is possible to use wildcards with this statement, the wildcard is
+expanded on start and on reload.
+.TP
+.B dlv\-anchor\-file: \fI<filename>
+File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and
+DNSKEY entries can be used in the file, in the same format as for
+\fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more
+would be slow. The DLV configured is used as a root trusted DLV, this
+means that it is a lookaside for the root. Default is "", or no dlv anchor file.
+.TP
+.B dlv\-anchor: \fI<"Resource Record">
+Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline.
+.TP
+.B domain\-insecure: \fI<domain name>
+Sets domain name to be insecure, DNSSEC chain of trust is ignored towards
+the domain name. So a trust anchor above the domain name can not make the
+domain secure with a DS record, such a DS record is then ignored.
+Also keys from DLV are ignored for the domain. Can be given multiple times
+to specify multiple domains that are treated as if unsigned. If you set
+trust anchors for the domain they override this setting (and the domain
+is secured).
+.IP
+This can be useful if you want to make sure a trust anchor for external
+lookups does not affect an (unsigned) internal domain. A DS record
+externally can create validation failures for that internal domain.
+.TP
+.B val\-override\-date: \fI<rrsig\-style date spec>
+Default is "" or "0", which disables this debugging feature. If enabled by
+giving a RRSIG style date, that date is used for verifying RRSIG inception
+and expiration dates, instead of the current date. Do not set this unless
+you are debugging signature inception and expiration. The value \-1 ignores
+the date altogether, useful for some special applications.
+.TP
+.B val\-sig\-skew\-min: \fI<seconds>
+Minimum number of seconds of clock skew to apply to validated signatures.
+A value of 10% of the signature lifetime (expiration \- inception) is
+used, capped by this setting. Default is 3600 (1 hour) which allows for
+daylight savings differences. Lower this value for more strict checking
+of short lived signatures.
+.TP
+.B val\-sig\-skew\-max: \fI<seconds>
+Maximum number of seconds of clock skew to apply to validated signatures.
+A value of 10% of the signature lifetime (expiration \- inception)
+is used, capped by this setting. Default is 86400 (24 hours) which
+allows for timezone setting problems in stable domains. Setting both
+min and max very low disables the clock skew allowances. Setting both
+min and max very high makes the validator check the signature timestamps
+less strictly.
+.TP
+.B val\-bogus\-ttl: \fI<number>
+The time to live for bogus data. This is data that has failed validation;
+due to invalid signatures or other checks. The TTL from that data cannot be
+trusted, and this value is used instead. The value is in seconds, default 60.
+The time interval prevents repeated revalidation of bogus data.
+.TP
+.B val\-clean\-additional: \fI<yes or no>
+Instruct the validator to remove data from the additional section of secure
+messages that are not signed properly. Messages that are insecure, bogus,
+indeterminate or unchecked are not affected. Default is yes. Use this setting
+to protect the users that rely on this validator for authentication from
+protentially bad data in the additional section.
+.TP
+.B val\-log\-level: \fI<number>
+Have the validator print validation failures to the log. Regardless of
+the verbosity setting. Default is 0, off. At 1, for every user query
+that fails a line is printed to the logs. This way you can monitor what
+happens with validation. Use a diagnosis tool, such as dig or drill,
+to find out why validation is failing for these queries. At 2, not only
+the query that failed is printed but also the reason why unbound thought
+it was wrong and which server sent the faulty data.
+.TP
+.B val\-permissive\-mode: \fI<yes or no>
+Instruct the validator to mark bogus messages as indeterminate. The security
+checks are performed, but if the result is bogus (failed security), the
+reply is not withheld from the client with SERVFAIL as usual. The client
+receives the bogus data. For messages that are found to be secure the AD bit
+is set in replies. Also logging is performed as for full validation.
+The default value is "no".
+.TP
+.B ignore\-cd\-flag: \fI<yes or no>
+Instruct unbound to ignore the CD flag from clients and refuse to
+return bogus answers to them. Thus, the CD (Checking Disabled) flag
+does not disable checking any more. This is useful if legacy (w2008)
+servers that set the CD flag but cannot validate DNSSEC themselves are
+the clients, and then unbound provides them with DNSSEC protection.
+The default value is "no".
+.TP
+.B val\-nsec3\-keysize\-iterations: \fI<"list of values">
+List of keysize and iteration count values, separated by spaces, surrounded
+by quotes. Default is "1024 150 2048 500 4096 2500". This determines the
+maximum allowed NSEC3 iteration count before a message is simply marked
+insecure instead of performing the many hashing iterations. The list must
+be in ascending order and have at least one entry. If you set it to
+"1024 65535" there is no restriction to NSEC3 iteration values.
+This table must be kept short; a very long list could cause slower operation.
+.TP
+.B add\-holddown: \fI<seconds>
+Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011
+autotrust updates to add new trust anchors only after they have been
+visible for this time. Default is 30 days as per the RFC.
+.TP
+.B del\-holddown: \fI<seconds>
+Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011
+autotrust updates to remove revoked trust anchors after they have been
+kept in the revoked list for this long. Default is 30 days as per
+the RFC.
+.TP
+.B keep\-missing: \fI<seconds>
+Instruct the \fBauto\-trust\-anchor\-file\fR probe mechanism for RFC5011
+autotrust updates to remove missing trust anchors after they have been
+unseen for this long. This cleans up the state file if the target zone
+does not perform trust anchor revocation, so this makes the auto probe
+mechanism work with zones that perform regular (non\-5011) rollovers.
+The default is 366 days. The value 0 does not remove missing anchors,
+as per the RFC.
+.TP
+.B key\-cache\-size: \fI<number>
+Number of bytes size of the key cache. Default is 4 megabytes.
+A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
+or gigabytes (1024*1024 bytes in a megabyte).
+.TP
+.B key\-cache\-slabs: \fI<number>
+Number of slabs in the key cache. Slabs reduce lock contention by threads.
+Must be set to a power of 2. Setting (close) to the number of cpus is a
+reasonable guess.
+.TP
+.B neg\-cache\-size: \fI<number>
+Number of bytes size of the aggressive negative cache. Default is 1 megabyte.
+A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
+or gigabytes (1024*1024 bytes in a megabyte).
+.TP
+.B local\-zone: \fI<zone> <type>
+Configure a local zone. The type determines the answer to give if
+there is no match from local\-data. The types are deny, refuse, static,
+transparent, redirect, nodefault, typetransparent, and are explained
+below. After that the default settings are listed. Use local\-data: to
+enter data into the local zone. Answers for local zones are authoritative
+DNS answers. By default the zones are class IN.
+.IP
+If you need more complicated authoritative data, with referrals, wildcards,
+CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for
+it as detailed in the stub zone section below.
+.TP 10
+\h'5'\fIdeny\fR
+Do not send an answer, drop the query.
+If there is a match from local data, the query is answered.
+.TP 10
+\h'5'\fIrefuse\fR
+Send an error message reply, with rcode REFUSED.
+If there is a match from local data, the query is answered.
+.TP 10
+\h'5'\fIstatic\fR
+If there is a match from local data, the query is answered.
+Otherwise, the query is answered with nodata or nxdomain.
+For a negative answer a SOA is included in the answer if present
+as local\-data for the zone apex domain.
+.TP 10
+\h'5'\fItransparent\fR
+If there is a match from local data, the query is answered.
+Otherwise if the query has a different name, the query is resolved normally.
+If the query is for a name given in localdata but no such type of data is
+given in localdata, then a noerror nodata answer is returned.
+If no local\-zone is given local\-data causes a transparent zone
+to be created by default.
+.TP 10
+\h'5'\fItypetransparent\fR
+If there is a match from local data, the query is answered. If the query
+is for a different name, or for the same name but for a different type,
+the query is resolved normally. So, similar to transparent but types
+that are not listed in local data are resolved normally, so if an A record
+is in the local data that does not cause a nodata reply for AAAA queries.
+.TP 10
+\h'5'\fIredirect\fR
+The query is answered from the local data for the zone name.
+There may be no local data beneath the zone name.
+This answers queries for the zone, and all subdomains of the zone
+with the local data for the zone.
+It can be used to redirect a domain to return a different address record
+to the end user, with
+local\-zone: "example.com." redirect and
+local\-data: "example.com. A 127.0.0.1"
+queries for www.example.com and www.foo.example.com are redirected, so
+that users with web browsers cannot access sites with suffix example.com.
+.TP 10
+\h'5'\fInodefault\fR
+Used to turn off default contents for AS112 zones. The other types
+also turn off default contents for the zone. The 'nodefault' option
+has no other effect than turning off default contents for the
+given zone.
+.P
+The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112
+zones. The AS112 zones are reverse DNS zones for private use and reserved
+IP addresses for which the servers on the internet cannot provide correct
+answers. They are configured by default to give nxdomain (no reverse
+information) answers. The defaults can be turned off by specifying your
+own local\-zone of that name, or using the 'nodefault' type. Below is a
+list of the default zone contents.
+.TP 10
+\h'5'\fIlocalhost\fR
+The IP4 and IP6 localhost information is given. NS and SOA records are provided
+for completeness and to satisfy some DNS update tools. Default content:
+.nf
+local\-zone: "localhost." static
+local\-data: "localhost. 10800 IN NS localhost."
+local\-data: "localhost. 10800 IN
+ SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
+local\-data: "localhost. 10800 IN A 127.0.0.1"
+local\-data: "localhost. 10800 IN AAAA ::1"
+.fi
+.TP 10
+\h'5'\fIreverse IPv4 loopback\fR
+Default content:
+.nf
+local\-zone: "127.in\-addr.arpa." static
+local\-data: "127.in\-addr.arpa. 10800 IN NS localhost."
+local\-data: "127.in\-addr.arpa. 10800 IN
+ SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
+local\-data: "1.0.0.127.in\-addr.arpa. 10800 IN
+ PTR localhost."
+.fi
+.TP 10
+\h'5'\fIreverse IPv6 loopback\fR
+Default content:
+.nf
+local\-zone: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
+ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." static
+local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
+ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
+ NS localhost."
+local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
+ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
+ SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
+local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
+ 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
+ PTR localhost."
+.fi
+.TP 10
+\h'5'\fIreverse RFC1918 local use zones\fR
+Reverse data for zones 10.in\-addr.arpa, 16.172.in\-addr.arpa to
+31.172.in\-addr.arpa, 168.192.in\-addr.arpa.
+The \fBlocal\-zone:\fR is set static and as \fBlocal\-data:\fR SOA and NS
+records are provided.
+.TP 10
+\h'5'\fIreverse RFC3330 IP4 this, link\-local, testnet and broadcast\fR
+Reverse data for zones 0.in\-addr.arpa, 254.169.in\-addr.arpa,
+2.0.192.in\-addr.arpa (TEST NET 1), 100.51.198.in\-addr.arpa (TEST NET 2),
+113.0.203.in\-addr.arpa (TEST NET 3), 255.255.255.255.in\-addr.arpa.
+.TP 10
+\h'5'\fIreverse RFC4291 IP6 unspecified\fR
+Reverse data for zone
+.nf
+0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
+0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.
+.fi
+.TP 10
+\h'5'\fIreverse RFC4193 IPv6 Locally Assigned Local Addresses\fR
+Reverse data for zone D.F.ip6.arpa.
+.TP 10
+\h'5'\fIreverse RFC4291 IPv6 Link Local Addresses\fR
+Reverse data for zones 8.E.F.ip6.arpa to B.E.F.ip6.arpa.
+.TP 10
+\h'5'\fIreverse IPv6 Example Prefix\fR
+Reverse data for zone 8.B.D.0.1.0.0.2.ip6.arpa. This zone is used for
+tutorials and examples. You can remove the block on this zone with:
+.nf
+ local\-zone: 8.B.D.0.1.0.0.2.ip6.arpa. nodefault
+.fi
+You can also selectively unblock a part of the zone by making that part
+transparent with a local\-zone statement.
+This also works with the other default zones.
+.\" End of local-zone listing.
+.TP 5
+.B local\-data: \fI"<resource record string>"
+Configure local data, which is served in reply to queries for it.
+The query has to match exactly unless you configure the local\-zone as
+redirect. If not matched exactly, the local\-zone type determines
+further processing. If local\-data is configured that is not a subdomain of
+a local\-zone, a transparent local\-zone is configured.
+For record types such as TXT, use single quotes, as in
+local\-data: 'example. TXT "text"'.
+.IP
+If you need more complicated authoritative data, with referrals, wildcards,
+CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for
+it as detailed in the stub zone section below.
+.TP 5
+.B local\-data\-ptr: \fI"IPaddr name"
+Configure local data shorthand for a PTR record with the reversed IPv4 or
+IPv6 address and the host name. For example "192.0.2.4 www.example.com".
+TTL can be inserted like this: "2001:DB8::4 7200 www.example.com"
+.SS "Remote Control Options"
+In the
+.B remote\-control:
+clause are the declarations for the remote control facility. If this is
+enabled, the \fIunbound\-control\fR(8) utility can be used to send
+commands to the running unbound server. The server uses these clauses
+to setup SSLv3 / TLSv1 security for the connection. The
+\fIunbound\-control\fR(8) utility also reads the \fBremote\-control\fR
+section for options. To setup the correct self\-signed certificates use the
+\fIunbound\-control\-setup\fR(8) utility.
+.TP 5
+.B control\-enable: \fI<yes or no>
+The option is used to enable remote control, default is "no".
+If turned off, the server does not listen for control commands.
+.TP 5
+.B control\-interface: <ip address>
+Give IPv4 or IPv6 addresses to listen on for control commands.
+By default localhost (127.0.0.1 and ::1) is listened to.
+Use 0.0.0.0 and ::0 to listen to all interfaces.
+.TP 5
+.B control\-port: <port number>
+The port number to listen on for control commands, default is 8953.
+If you change this port number, and permissions have been dropped,
+a reload is not sufficient to open the port again, you must then restart.
+.TP 5
+.B server\-key\-file: "<private key file>"
+Path to the server private key, by default unbound_server.key.
+This file is generated by the \fIunbound\-control\-setup\fR utility.
+This file is used by the unbound server, but not by \fIunbound\-control\fR.
+.TP 5
+.B server\-cert\-file: "<certificate file.pem>"
+Path to the server self signed certificate, by default unbound_server.pem.
+This file is generated by the \fIunbound\-control\-setup\fR utility.
+This file is used by the unbound server, and also by \fIunbound\-control\fR.
+.TP 5
+.B control\-key\-file: "<private key file>"
+Path to the control client private key, by default unbound_control.key.
+This file is generated by the \fIunbound\-control\-setup\fR utility.
+This file is used by \fIunbound\-control\fR.
+.TP 5
+.B control\-cert\-file: "<certificate file.pem>"
+Path to the control client certificate, by default unbound_control.pem.
+This certificate has to be signed with the server certificate.
+This file is generated by the \fIunbound\-control\-setup\fR utility.
+This file is used by \fIunbound\-control\fR.
+.SS "Stub Zone Options"
+.LP
+There may be multiple
+.B stub\-zone:
+clauses. Each with a name: and zero or more hostnames or IP addresses.
+For the stub zone this list of nameservers is used. Class IN is assumed.
+The servers should be authority servers, not recursors; unbound performs
+the recursive processing itself for stub zones.
+.P
+The stub zone can be used to configure authoritative data to be used
+by the resolver that cannot be accessed using the public internet servers.
+This is useful for company\-local data or private zones. Setup an
+authoritative server on a different host (or different port). Enter a config
+entry for unbound with
+.B stub\-addr:
+<ip address of host[@port]>.
+The unbound resolver can then access the data, without referring to the
+public internet for it.
+.P
+This setup allows DNSSEC signed zones to be served by that
+authoritative server, in which case a trusted key entry with the public key
+can be put in config, so that unbound can validate the data and set the AD
+bit on replies for the private zone (authoritative servers do not set the
+AD bit). This setup makes unbound capable of answering queries for the
+private zone, and can even set the AD bit ('authentic'), but the AA
+('authoritative') bit is not set on these replies.
+.TP
+.B name: \fI<domain name>
+Name of the stub zone.
+.TP
+.B stub\-host: \fI<domain name>
+Name of stub zone nameserver. Is itself resolved before it is used.
+.TP
+.B stub\-addr: \fI<IP address>
+IP address of stub zone nameserver. Can be IP 4 or IP 6.
+To use a nondefault port for DNS communication append '@' with the port number.
+.TP
+.B stub\-prime: \fI<yes or no>
+This option is by default off. If enabled it performs NS set priming,
+which is similar to root hints, where it starts using the list of nameservers
+currently published by the zone. Thus, if the hint list is slightly outdated,
+the resolver picks up a correct list online.
+.TP
+.B stub\-first: \fI<yes or no>
+If enabled, a query is attempted without the stub clause if it fails.
+The data could not be retrieved and would have caused SERVFAIL because
+the servers are unreachable, instead it is tried without this clause.
+The default is no.
+.SS "Forward Zone Options"
+.LP
+There may be multiple
+.B forward\-zone:
+clauses. Each with a \fBname:\fR and zero or more hostnames or IP
+addresses. For the forward zone this list of nameservers is used to
+forward the queries to. The servers listed as \fBforward\-host:\fR and
+\fBforward\-addr:\fR have to handle further recursion for the query. Thus,
+those servers are not authority servers, but are (just like unbound is)
+recursive servers too; unbound does not perform recursion itself for the
+forward zone, it lets the remote server do it. Class IN is assumed.
+A forward\-zone entry with name "." and a forward\-addr target will
+forward all queries to that other server (unless it can answer from
+the cache).
+.TP
+.B name: \fI<domain name>
+Name of the forward zone.
+.TP
+.B forward\-host: \fI<domain name>
+Name of server to forward to. Is itself resolved before it is used.
+.TP
+.B forward\-addr: \fI<IP address>
+IP address of server to forward to. Can be IP 4 or IP 6.
+To use a nondefault port for DNS communication append '@' with the port number.
+.TP
+.B forward\-first: \fI<yes or no>
+If enabled, a query is attempted without the forward clause if it fails.
+The data could not be retrieved and would have caused SERVFAIL because
+the servers are unreachable, instead it is tried without this clause.
+The default is no.
+.SS "Python Module Options"
+.LP
+The
+.B python:
+clause gives the settings for the \fIpython\fR(1) script module. This module
+acts like the iterator and validator modules do, on queries and answers.
+To enable the script module it has to be compiled into the daemon,
+and the word "python" has to be put in the \fBmodule\-config:\fR option
+(usually first, or between the validator and iterator).
+.TP
+.B python\-script: \fI<python file>\fR
+The script file to load.
+.SH "MEMORY CONTROL EXAMPLE"
+In the example config settings below memory usage is reduced. Some service
+levels are lower, notable very large data and a high TCP load are no longer
+supported. Very large data and high TCP loads are exceptional for the DNS.
+DNSSEC validation is enabled, just add trust anchors.
+If you do not have to worry about programs using more than 3 Mb of memory,
+the below example is not for you. Use the defaults to receive full service,
+which on BSD\-32bit tops out at 30\-40 Mb after heavy usage.
+.P
+.nf
+# example settings that reduce memory usage
+server:
+ num\-threads: 1
+ outgoing\-num\-tcp: 1 # this limits TCP service, uses less buffers.
+ incoming\-num\-tcp: 1
+ outgoing\-range: 60 # uses less memory, but less performance.
+ msg\-buffer\-size: 8192 # note this limits service, 'no huge stuff'.
+ msg\-cache\-size: 100k
+ msg\-cache\-slabs: 1
+ rrset\-cache\-size: 100k
+ rrset\-cache\-slabs: 1
+ infra\-cache\-numhosts: 200
+ infra\-cache\-slabs: 1
+ key\-cache\-size: 100k
+ key\-cache\-slabs: 1
+ neg\-cache\-size: 10k
+ num\-queries\-per\-thread: 30
+ target\-fetch\-policy: "2 1 0 0 0 0"
+ harden\-large\-queries: "yes"
+ harden\-short\-bufsize: "yes"
+.fi
+.SH "FILES"
+.TP
+.I /var/unbound
+default unbound working directory.
+.TP
+.I /var/unbound
+default
+\fIchroot\fR(2)
+location.
+.TP
+.I /var/unbound/unbound.conf
+unbound configuration file.
+.TP
+.I /var/unbound/unbound.pid
+default unbound pidfile with process ID of the running daemon.
+.TP
+.I unbound.log
+unbound log file. default is to log to
+\fIsyslog\fR(3).
+.SH "SEE ALSO"
+\fIunbound\fR(8),
+\fIunbound\-checkconf\fR(8).
+.SH "AUTHORS"
+.B Unbound
+was written by NLnet Labs. Please see CREDITS file
+in the distribution for further details.
diff --git a/contrib/unbound/freebsd-configure.sh b/contrib/unbound/freebsd-configure.sh
new file mode 100755
index 0000000..46dc53a
--- /dev/null
+++ b/contrib/unbound/freebsd-configure.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+set -e
+
+error() {
+ echo "$@" >&2
+ exit 1
+}
+
+unbound=$(dirname $(realpath $0))
+cd $unbound
+
+ldnssrc=$(realpath $unbound/../ldns)
+[ -f $ldnssrc/ldns/ldns.h ] || error "can't find LDNS sources"
+export CFLAGS="-I$ldnssrc"
+
+ldnsbld=$(realpath $unbound/../../lib/libldns)
+[ -f $ldnsbld/Makefile ] || error "can't find LDNS build directory"
+
+ldnsobj=$(realpath $(make -C$ldnsbld -V.OBJDIR))
+[ -f $ldnsobj/libldns.a ] || error "can't find LDNS object directory"
+export LDFLAGS="-L$ldnsobj"
+
+autoconf
+autoheader
+./configure \
+ --prefix= --exec-prefix=/usr \
+ --with-conf-file=/var/unbound/unbound.conf \
+ --with-run-dir=/var/unbound \
+ --with-username=unbound
+
+# Regenerate the configuration parser
+{
+cat <<EOF
+#include "config.h"
+#include "util/configyyrename.h"
+EOF
+/usr/bin/flex -L -t util/configlexer.lex
+} >util/configlexer.c
+
+/usr/bin/yacc -d -o util/configparser.c util/configparser.y
diff --git a/contrib/unbound/freebsd-sources.pl b/contrib/unbound/freebsd-sources.pl
new file mode 100755
index 0000000..a83d36f
--- /dev/null
+++ b/contrib/unbound/freebsd-sources.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl -w
+#-
+# Copyright (c) 2013 Dag-Erling Smørgrav
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+use strict;
+use warnings;
+use Text::Wrap;
+
+our @targets = qw(LIBUNBOUND DAEMON UBANCHOR CHECKCONF CONTROL);
+
+our %target_names = (
+ LIBUNBOUND => "libunbound",
+ DAEMON => "unbound",
+ UBANCHOR => "unbound-anchor",
+ CHECKCONF => "unbound-checkconf",
+ CONTROL => "unbound-control",
+);
+
+sub get_sources($) {
+ my ($target) = @_;
+ local $/;
+
+ open(MAKE, "-|", "make", "-V${target}_OBJ_LINK")
+ or die("failed to exec make: $!\n");
+ my $objs = <MAKE>;
+ close(MAKE);
+ chomp($objs);
+ $objs =~ s/\.l?o\b/.c/g;
+ return (split(/\s+/, $objs));
+}
+
+MAIN:{
+ my %sources;
+ foreach my $target (@targets) {
+ $sources{$target} = {
+ map({ $_ => 1 }
+ grep({ !exists($sources{LIBUNBOUND}->{$_}) }
+ get_sources($target)))
+ };
+ print("# $target_names{$target}\n");
+ my $SRCS = fill("SRCS=\t", "\t", sort keys %{$sources{$target}});
+ $SRCS =~ s/\n/ \\\n/gm;
+ print("$SRCS\n");
+ }
+}
+
+1;
+
diff --git a/contrib/unbound/libunbound/context.c b/contrib/unbound/libunbound/context.c
index f283079..e3e6496 100644
--- a/contrib/unbound/libunbound/context.c
+++ b/contrib/unbound/libunbound/context.c
@@ -124,7 +124,7 @@ find_id(struct ub_ctx* ctx, int* id)
}
struct ctx_query*
-context_new(struct ub_ctx* ctx, char* name, int rrtype, int rrclass,
+context_new(struct ub_ctx* ctx, const char* name, int rrtype, int rrclass,
ub_callback_t cb, void* cbarg)
{
struct ctx_query* q = (struct ctx_query*)calloc(1, sizeof(*q));
diff --git a/contrib/unbound/libunbound/context.h b/contrib/unbound/libunbound/context.h
index 8898f3e..743178b 100644
--- a/contrib/unbound/libunbound/context.h
+++ b/contrib/unbound/libunbound/context.h
@@ -234,8 +234,8 @@ void context_query_delete(struct ctx_query* q);
* @param cbarg: user arg for async queries.
* @return new ctx_query or NULL for malloc failure.
*/
-struct ctx_query* context_new(struct ub_ctx* ctx, char* name, int rrtype,
- int rrclass, ub_callback_t cb, void* cbarg);
+struct ctx_query* context_new(struct ub_ctx* ctx, const char* name,
+ int rrtype, int rrclass, ub_callback_t cb, void* cbarg);
/**
* Get a new alloc. Creates a new one or uses a cached one.
diff --git a/contrib/unbound/libunbound/libunbound.c b/contrib/unbound/libunbound/libunbound.c
index 10d00dd..7efd4cb 100644
--- a/contrib/unbound/libunbound/libunbound.c
+++ b/contrib/unbound/libunbound/libunbound.c
@@ -229,7 +229,7 @@ ub_ctx_delete(struct ub_ctx* ctx)
}
int
-ub_ctx_set_option(struct ub_ctx* ctx, char* opt, char* val)
+ub_ctx_set_option(struct ub_ctx* ctx, const char* opt, const char* val)
{
lock_basic_lock(&ctx->cfglock);
if(ctx->finalized) {
@@ -245,7 +245,7 @@ ub_ctx_set_option(struct ub_ctx* ctx, char* opt, char* val)
}
int
-ub_ctx_get_option(struct ub_ctx* ctx, char* opt, char** str)
+ub_ctx_get_option(struct ub_ctx* ctx, const char* opt, char** str)
{
int r;
lock_basic_lock(&ctx->cfglock);
@@ -258,7 +258,7 @@ ub_ctx_get_option(struct ub_ctx* ctx, char* opt, char** str)
}
int
-ub_ctx_config(struct ub_ctx* ctx, char* fname)
+ub_ctx_config(struct ub_ctx* ctx, const char* fname)
{
lock_basic_lock(&ctx->cfglock);
if(ctx->finalized) {
@@ -274,7 +274,7 @@ ub_ctx_config(struct ub_ctx* ctx, char* fname)
}
int
-ub_ctx_add_ta(struct ub_ctx* ctx, char* ta)
+ub_ctx_add_ta(struct ub_ctx* ctx, const char* ta)
{
char* dup = strdup(ta);
if(!dup) return UB_NOMEM;
@@ -294,7 +294,7 @@ ub_ctx_add_ta(struct ub_ctx* ctx, char* ta)
}
int
-ub_ctx_add_ta_file(struct ub_ctx* ctx, char* fname)
+ub_ctx_add_ta_file(struct ub_ctx* ctx, const char* fname)
{
char* dup = strdup(fname);
if(!dup) return UB_NOMEM;
@@ -314,7 +314,7 @@ ub_ctx_add_ta_file(struct ub_ctx* ctx, char* fname)
}
int
-ub_ctx_trustedkeys(struct ub_ctx* ctx, char* fname)
+ub_ctx_trustedkeys(struct ub_ctx* ctx, const char* fname)
{
char* dup = strdup(fname);
if(!dup) return UB_NOMEM;
@@ -547,7 +547,7 @@ ub_wait(struct ub_ctx* ctx)
}
int
-ub_resolve(struct ub_ctx* ctx, char* name, int rrtype,
+ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype,
int rrclass, struct ub_result** result)
{
struct ctx_query* q;
@@ -591,7 +591,7 @@ ub_resolve(struct ub_ctx* ctx, char* name, int rrtype,
}
int
-ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype,
+ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype,
int rrclass, void* mydata, ub_callback_t callback, int* async_id)
{
struct ctx_query* q;
@@ -732,7 +732,7 @@ ub_strerror(int err)
}
int
-ub_ctx_set_fwd(struct ub_ctx* ctx, char* addr)
+ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr)
{
struct sockaddr_storage storage;
socklen_t stlen;
@@ -804,7 +804,7 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, char* addr)
}
int
-ub_ctx_resolvconf(struct ub_ctx* ctx, char* fname)
+ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname)
{
FILE* in;
int numserv = 0;
@@ -890,7 +890,7 @@ ub_ctx_resolvconf(struct ub_ctx* ctx, char* fname)
}
int
-ub_ctx_hosts(struct ub_ctx* ctx, char* fname)
+ub_ctx_hosts(struct ub_ctx* ctx, const char* fname)
{
FILE* in;
char buf[1024], ldata[1024];
diff --git a/contrib/unbound/libunbound/libworker.c b/contrib/unbound/libunbound/libworker.c
index bd61cea..ffc4716 100644
--- a/contrib/unbound/libunbound/libworker.c
+++ b/contrib/unbound/libunbound/libworker.c
@@ -50,11 +50,13 @@
#include "libunbound/libworker.h"
#include "libunbound/context.h"
#include "libunbound/unbound.h"
+#include "libunbound/worker.h"
#include "services/outside_network.h"
#include "services/mesh.h"
#include "services/localzone.h"
#include "services/cache/rrset.h"
#include "services/outbound_list.h"
+#include "util/fptr_wlist.h"
#include "util/module.h"
#include "util/regional.h"
#include "util/random.h"
@@ -862,7 +864,8 @@ struct outbound_entry* worker_send_query(uint8_t* ATTR_UNUSED(qname),
uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags),
int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),
struct sockaddr_storage* ATTR_UNUSED(addr),
- socklen_t ATTR_UNUSED(addrlen), struct module_qstate* ATTR_UNUSED(q))
+ socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),
+ size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q))
{
log_assert(0);
return 0;
diff --git a/contrib/unbound/libunbound/libworker.h b/contrib/unbound/libunbound/libworker.h
index c3896fc..86b187a 100644
--- a/contrib/unbound/libunbound/libworker.h
+++ b/contrib/unbound/libunbound/libworker.h
@@ -41,8 +41,8 @@
* and if in the background continues until exit, if in the foreground
* returns from the procedure when done.
*/
-#ifndef LIBUNBOUND_WORKER_H
-#define LIBUNBOUND_WORKER_H
+#ifndef LIBUNBOUND_LIBWORKER_H
+#define LIBUNBOUND_LIBWORKER_H
#include "util/data/packed_rrset.h"
struct ub_ctx;
struct ub_result;
@@ -109,52 +109,6 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q);
/** cleanup the cache to remove all rrset IDs from it, arg is libworker */
void libworker_alloc_cleanup(void* arg);
-/**
- * Worker service routine to send serviced queries to authoritative servers.
- * @param qname: query name. (host order)
- * @param qnamelen: length in bytes of qname, including trailing 0.
- * @param qtype: query type. (host order)
- * @param qclass: query class. (host order)
- * @param flags: host order flags word, with opcode and CD bit.
- * @param dnssec: if set, EDNS record will have DO bit set.
- * @param want_dnssec: signatures needed.
- * @param addr: where to.
- * @param addrlen: length of addr.
- * @param zone: delegation point name.
- * @param zonelen: length of zone name wireformat dname.
- * @param q: wich query state to reactivate upon return.
- * @return: false on failure (memory or socket related). no query was
- * sent.
- */
-struct outbound_entry* libworker_send_query(uint8_t* qname, size_t qnamelen,
- uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec,
- int want_dnssec, struct sockaddr_storage* addr, socklen_t addrlen,
- uint8_t* zone, size_t zonelen, struct module_qstate* q);
-
-/** process incoming replies from the network */
-int libworker_handle_reply(struct comm_point* c, void* arg, int error,
- struct comm_reply* reply_info);
-
-/** process incoming serviced query replies from the network */
-int libworker_handle_service_reply(struct comm_point* c, void* arg, int error,
- struct comm_reply* reply_info);
-
-/** handle control command coming into server */
-void libworker_handle_control_cmd(struct tube* tube, uint8_t* msg, size_t len,
- int err, void* arg);
-
-/** handle opportunity to write result back */
-void libworker_handle_result_write(struct tube* tube, uint8_t* msg, size_t len,
- int err, void* arg);
-
-/** mesh callback with fg results */
-void libworker_fg_done_cb(void* arg, int rcode, ldns_buffer* buf,
- enum sec_status s, char* why_bogus);
-
-/** mesh callback with bg results */
-void libworker_bg_done_cb(void* arg, int rcode, ldns_buffer* buf,
- enum sec_status s, char* why_bogus);
-
/**
* fill result from parsed message, on error fills servfail
* @param res: is clear at start, filled in at end.
@@ -167,4 +121,4 @@ void libworker_bg_done_cb(void* arg, int rcode, ldns_buffer* buf,
void libworker_enter_result(struct ub_result* res, ldns_buffer* buf,
struct regional* temp, enum sec_status msg_security);
-#endif /* LIBUNBOUND_WORKER_H */
+#endif /* LIBUNBOUND_LIBWORKER_H */
diff --git a/contrib/unbound/libunbound/unbound.h b/contrib/unbound/libunbound/unbound.h
index d435bf2..1de9566 100644
--- a/contrib/unbound/libunbound/unbound.h
+++ b/contrib/unbound/libunbound/unbound.h
@@ -245,7 +245,7 @@ void ub_ctx_delete(struct ub_ctx* ctx);
* @param val: value of the option.
* @return: 0 if OK, else error.
*/
-int ub_ctx_set_option(struct ub_ctx* ctx, char* opt, char* val);
+int ub_ctx_set_option(struct ub_ctx* ctx, const char* opt, const char* val);
/**
* Get an option from the context.
@@ -261,7 +261,7 @@ int ub_ctx_set_option(struct ub_ctx* ctx, char* opt, char* val);
* returned in the string.
* @return 0 if OK else an error code (malloc failure, syntax error).
*/
-int ub_ctx_get_option(struct ub_ctx* ctx, char* opt, char** str);
+int ub_ctx_get_option(struct ub_ctx* ctx, const char* opt, char** str);
/**
* setup configuration for the given context.
@@ -273,7 +273,7 @@ int ub_ctx_get_option(struct ub_ctx* ctx, char* opt, char** str);
* routines exist.
* @return: 0 if OK, else error.
*/
-int ub_ctx_config(struct ub_ctx* ctx, char* fname);
+int ub_ctx_config(struct ub_ctx* ctx, const char* fname);
/**
* Set machine to forward DNS queries to, the caching resolver to use.
@@ -292,7 +292,7 @@ int ub_ctx_config(struct ub_ctx* ctx, char* fname);
* If the addr is NULL, forwarding is disabled.
* @return 0 if OK, else error.
*/
-int ub_ctx_set_fwd(struct ub_ctx* ctx, char* addr);
+int ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr);
/**
* Read list of nameservers to use from the filename given.
@@ -308,7 +308,7 @@ int ub_ctx_set_fwd(struct ub_ctx* ctx, char* addr);
* @param fname: file name string. If NULL "/etc/resolv.conf" is used.
* @return 0 if OK, else error.
*/
-int ub_ctx_resolvconf(struct ub_ctx* ctx, char* fname);
+int ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname);
/**
* Read list of hosts from the filename given.
@@ -321,7 +321,7 @@ int ub_ctx_resolvconf(struct ub_ctx* ctx, char* fname);
* @param fname: file name string. If NULL "/etc/hosts" is used.
* @return 0 if OK, else error.
*/
-int ub_ctx_hosts(struct ub_ctx* ctx, char* fname);
+int ub_ctx_hosts(struct ub_ctx* ctx, const char* fname);
/**
* Add a trust anchor to the given context.
@@ -334,7 +334,7 @@ int ub_ctx_hosts(struct ub_ctx* ctx, char* fname);
* [domainname] [TTL optional] [type] [class optional] [rdata contents]
* @return 0 if OK, else error.
*/
-int ub_ctx_add_ta(struct ub_ctx* ctx, char* ta);
+int ub_ctx_add_ta(struct ub_ctx* ctx, const char* ta);
/**
* Add trust anchors to the given context.
@@ -345,7 +345,7 @@ int ub_ctx_add_ta(struct ub_ctx* ctx, char* ta);
* @param fname: filename of file with keyfile with trust anchors.
* @return 0 if OK, else error.
*/
-int ub_ctx_add_ta_file(struct ub_ctx* ctx, char* fname);
+int ub_ctx_add_ta_file(struct ub_ctx* ctx, const char* fname);
/**
* Add trust anchors to the given context.
@@ -357,7 +357,7 @@ int ub_ctx_add_ta_file(struct ub_ctx* ctx, char* fname);
* anchors.
* @return 0 if OK, else error.
*/
-int ub_ctx_trustedkeys(struct ub_ctx* ctx, char* fname);
+int ub_ctx_trustedkeys(struct ub_ctx* ctx, const char* fname);
/**
* Set debug output (and error output) to the specified stream.
@@ -442,7 +442,7 @@ int ub_process(struct ub_ctx* ctx);
* in that case (out of memory).
* @return 0 if OK, else error.
*/
-int ub_resolve(struct ub_ctx* ctx, char* name, int rrtype,
+int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype,
int rrclass, struct ub_result** result);
/**
@@ -473,7 +473,7 @@ int ub_resolve(struct ub_ctx* ctx, char* name, int rrtype,
* cancel the query.
* @return 0 if OK, else error.
*/
-int ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype,
+int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype,
int rrclass, void* mydata, ub_callback_t callback, int* async_id);
/**
diff --git a/contrib/unbound/libunbound/worker.h b/contrib/unbound/libunbound/worker.h
new file mode 100644
index 0000000..bdcb033
--- /dev/null
+++ b/contrib/unbound/libunbound/worker.h
@@ -0,0 +1,170 @@
+/*
+ * libunbound/worker.h - prototypes for worker methods.
+ *
+ * Copyright (c) 2007, NLnet Labs. All rights reserved.
+ *
+ * This software is open source.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of the NLNET LABS nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * \file
+ *
+ * This file declares the methods any worker has to implement.
+ */
+
+#ifndef LIBUNBOUND_WORKER_H
+#define LIBUNBOUND_WORKER_H
+
+#include "util/data/packed_rrset.h" /* for enum sec_status */
+struct comm_reply;
+struct comm_point;
+struct module_qstate;
+struct tube;
+
+/**
+ * Worker service routine to send serviced queries to authoritative servers.
+ * @param qname: query name. (host order)
+ * @param qnamelen: length in bytes of qname, including trailing 0.
+ * @param qtype: query type. (host order)
+ * @param qclass: query class. (host order)
+ * @param flags: host order flags word, with opcode and CD bit.
+ * @param dnssec: if set, EDNS record will have DO bit set.
+ * @param want_dnssec: signatures needed.
+ * @param addr: where to.
+ * @param addrlen: length of addr.
+ * @param zone: delegation point name.
+ * @param zonelen: length of zone name wireformat dname.
+ * @param q: wich query state to reactivate upon return.
+ * @return: false on failure (memory or socket related). no query was
+ * sent.
+ */
+struct outbound_entry* libworker_send_query(uint8_t* qname, size_t qnamelen,
+ uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec,
+ int want_dnssec, struct sockaddr_storage* addr, socklen_t addrlen,
+ uint8_t* zone, size_t zonelen, struct module_qstate* q);
+
+/** process incoming replies from the network */
+int libworker_handle_reply(struct comm_point* c, void* arg, int error,
+ struct comm_reply* reply_info);
+
+/** process incoming serviced query replies from the network */
+int libworker_handle_service_reply(struct comm_point* c, void* arg, int error,
+ struct comm_reply* reply_info);
+
+/** handle control command coming into server */
+void libworker_handle_control_cmd(struct tube* tube, uint8_t* msg, size_t len,
+ int err, void* arg);
+
+/** mesh callback with fg results */
+void libworker_fg_done_cb(void* arg, int rcode, ldns_buffer* buf,
+ enum sec_status s, char* why_bogus);
+
+/** mesh callback with bg results */
+void libworker_bg_done_cb(void* arg, int rcode, ldns_buffer* buf,
+ enum sec_status s, char* why_bogus);
+
+/**
+ * Worker signal handler function. User argument is the worker itself.
+ * @param sig: signal number.
+ * @param arg: the worker (main worker) that handles signals.
+ */
+void worker_sighandler(int sig, void* arg);
+
+/**
+ * Worker service routine to send serviced queries to authoritative servers.
+ * @param qname: query name. (host order)
+ * @param qnamelen: length in bytes of qname, including trailing 0.
+ * @param qtype: query type. (host order)
+ * @param qclass: query class. (host order)
+ * @param flags: host order flags word, with opcode and CD bit.
+ * @param dnssec: if set, EDNS record will have DO bit set.
+ * @param want_dnssec: signatures needed.
+ * @param addr: where to.
+ * @param addrlen: length of addr.
+ * @param zone: wireformat dname of the zone.
+ * @param zonelen: length of zone name.
+ * @param q: wich query state to reactivate upon return.
+ * @return: false on failure (memory or socket related). no query was
+ * sent.
+ */
+struct outbound_entry* worker_send_query(uint8_t* qname, size_t qnamelen,
+ uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec,
+ int want_dnssec, struct sockaddr_storage* addr, socklen_t addrlen,
+ uint8_t* zone, size_t zonelen, struct module_qstate* q);
+
+/**
+ * process control messages from the main thread. Frees the control
+ * command message.
+ * @param tube: tube control message came on.
+ * @param msg: message contents. Is freed.
+ * @param len: length of message.
+ * @param error: if error (NETEVENT_*) happened.
+ * @param arg: user argument
+ */
+void worker_handle_control_cmd(struct tube* tube, uint8_t* msg, size_t len,
+ int error, void* arg);
+
+/** handles callbacks from listening event interface */
+int worker_handle_request(struct comm_point* c, void* arg, int error,
+ struct comm_reply* repinfo);
+
+/** process incoming replies from the network */
+int worker_handle_reply(struct comm_point* c, void* arg, int error,
+ struct comm_reply* reply_info);
+
+/** process incoming serviced query replies from the network */
+int worker_handle_service_reply(struct comm_point* c, void* arg, int error,
+ struct comm_reply* reply_info);
+
+/** cleanup the cache to remove all rrset IDs from it, arg is worker */
+void worker_alloc_cleanup(void* arg);
+
+/** statistics timer callback handler */
+void worker_stat_timer_cb(void* arg);
+
+/** probe timer callback handler */
+void worker_probe_timer_cb(void* arg);
+
+/** start accept callback handler */
+void worker_start_accept(void* arg);
+
+/** stop accept callback handler */
+void worker_stop_accept(void* arg);
+
+/** handle remote control accept callbacks */
+int remote_accept_callback(struct comm_point*, void*, int, struct comm_reply*);
+
+/** handle remote control data callbacks */
+int remote_control_callback(struct comm_point*, void*, int, struct comm_reply*);
+
+/** routine to printout option values over SSL */
+void remote_get_opt_ssl(char* line, void* arg);
+
+#endif /* LIBUNBOUND_WORKER_H */
diff --git a/contrib/unbound/smallapp/unbound-anchor.c b/contrib/unbound/smallapp/unbound-anchor.c
index ef0031c..eeb7682 100644
--- a/contrib/unbound/smallapp/unbound-anchor.c
+++ b/contrib/unbound/smallapp/unbound-anchor.c
@@ -244,7 +244,7 @@ get_builtin_ds(void)
/** print hex data */
static void
-print_data(char* msg, char* data, int len)
+print_data(const char* msg, const char* data, int len)
{
int i;
printf("%s: ", msg);
@@ -268,8 +268,8 @@ ub_ctx_error_exit(struct ub_ctx* ctx, const char* str, const char* str2)
* Create a new unbound context with the commandline settings applied
*/
static struct ub_ctx*
-create_unbound_context(char* res_conf, char* root_hints, char* debugconf,
- int ip4only, int ip6only)
+create_unbound_context(const char* res_conf, const char* root_hints,
+ const char* debugconf, int ip4only, int ip6only)
{
int r;
struct ub_ctx* ctx = ub_ctx_create();
@@ -306,7 +306,7 @@ create_unbound_context(char* res_conf, char* root_hints, char* debugconf,
/** printout certificate in detail */
static void
-verb_cert(char* msg, X509* x)
+verb_cert(const char* msg, X509* x)
{
if(verb == 0 || verb == 1) return;
if(verb == 2) {
@@ -322,7 +322,7 @@ verb_cert(char* msg, X509* x)
/** printout certificates in detail */
static void
-verb_certs(char* msg, STACK_OF(X509)* sk)
+verb_certs(const char* msg, STACK_OF(X509)* sk)
{
int i, num = sk_X509_num(sk);
if(verb == 0 || verb == 1) return;
@@ -360,7 +360,7 @@ read_cert_bio(BIO* bio)
/* read the certificate file */
static STACK_OF(X509)*
-read_cert_file(char* file)
+read_cert_file(const char* file)
{
STACK_OF(X509)* sk;
FILE* in;
@@ -435,7 +435,7 @@ read_builtin_cert(void)
/** read update cert file or use builtin */
static STACK_OF(X509)*
-read_cert_or_builtin(char* file)
+read_cert_or_builtin(const char* file)
{
STACK_OF(X509) *sk = read_cert_file(file);
if(!sk) {
@@ -459,7 +459,7 @@ do_list_builtin(void)
/** printout IP address with message */
static void
-verb_addr(char* msg, struct ip_list* ip)
+verb_addr(const char* msg, struct ip_list* ip)
{
if(verb) {
char out[100];
@@ -526,7 +526,7 @@ RR_to_ip(int tp, char* data, int len, int port)
/** Resolve name, type, class and add addresses to iplist */
static void
-resolve_host_ip(struct ub_ctx* ctx, char* host, int port, int tp, int cl,
+resolve_host_ip(struct ub_ctx* ctx, const char* host, int port, int tp, int cl,
struct ip_list** head)
{
struct ub_result* res = NULL;
@@ -561,29 +561,27 @@ resolve_host_ip(struct ub_ctx* ctx, char* host, int port, int tp, int cl,
/** parse a text IP address into a sockaddr */
static struct ip_list*
-parse_ip_addr(char* str, int port)
+parse_ip_addr(const char* str, int port)
{
socklen_t len = 0;
- struct sockaddr_storage* addr = NULL;
- struct sockaddr_in6 a6;
- struct sockaddr_in a;
+ union {
+ struct sockaddr_in6 a6;
+ struct sockaddr_in a;
+ } addr;
struct ip_list* ip;
uint16_t p = (uint16_t)port;
- memset(&a6, 0, sizeof(a6));
- memset(&a, 0, sizeof(a));
+ memset(&addr, 0, sizeof(addr));
- if(inet_pton(AF_INET6, str, &a6.sin6_addr) > 0) {
+ if(inet_pton(AF_INET6, str, &addr.a6.sin6_addr) > 0) {
/* it is an IPv6 */
- a6.sin6_family = AF_INET6;
- a6.sin6_port = (in_port_t)htons(p);
- addr = (struct sockaddr_storage*)&a6;
- len = (socklen_t)sizeof(struct sockaddr_in6);
+ addr.a6.sin6_family = AF_INET6;
+ addr.a6.sin6_port = (in_port_t)htons(p);
+ len = (socklen_t)sizeof(addr.a6);
}
- if(inet_pton(AF_INET, str, &a.sin_addr) > 0) {
+ if(inet_pton(AF_INET, str, &addr.a.sin_addr) > 0) {
/* it is an IPv4 */
- a.sin_family = AF_INET;
- a.sin_port = (in_port_t)htons(p);
- addr = (struct sockaddr_storage*)&a;
+ addr.a.sin_family = AF_INET;
+ addr.a.sin_port = (in_port_t)htons(p);
len = (socklen_t)sizeof(struct sockaddr_in);
}
if(!len) return NULL;
@@ -593,7 +591,7 @@ parse_ip_addr(char* str, int port)
exit(0);
}
ip->len = len;
- memmove(&ip->addr, addr, len);
+ memmove(&ip->addr, &addr, len);
if(verb) printf("server address is %s\n", str);
return ip;
}
@@ -613,8 +611,8 @@ parse_ip_addr(char* str, int port)
* @return list of IP addresses.
*/
static struct ip_list*
-resolve_name(char* host, int port, char* res_conf, char* root_hints,
- char* debugconf, int ip4only, int ip6only)
+resolve_name(const char* host, int port, const char* res_conf,
+ const char* root_hints, const char* debugconf, int ip4only, int ip6only)
{
struct ub_ctx* ctx;
struct ip_list* list = NULL;
@@ -801,7 +799,7 @@ TLS_shutdown(int fd, SSL* ssl, SSL_CTX* sslctx)
/** write a line over SSL */
static int
-write_ssl_line(SSL* ssl, char* str, char* sec)
+write_ssl_line(SSL* ssl, const char* str, const char* sec)
{
char buf[1024];
size_t l;
@@ -1020,7 +1018,7 @@ do_chunked_read(SSL* ssl)
/** start HTTP1.1 transaction on SSL */
static int
-write_http_get(SSL* ssl, char* pathname, char* urlname)
+write_http_get(SSL* ssl, const char* pathname, const char* urlname)
{
if(write_ssl_line(ssl, "GET /%s HTTP/1.1", pathname) &&
write_ssl_line(ssl, "Host: %s", urlname) &&
@@ -1091,7 +1089,7 @@ read_http_result(SSL* ssl)
/** https to an IP addr, return BIO with pathname or NULL */
static BIO*
-https_to_ip(struct ip_list* ip, char* pathname, char* urlname)
+https_to_ip(struct ip_list* ip, const char* pathname, const char* urlname)
{
int fd;
SSL* ssl;
@@ -1131,7 +1129,7 @@ https_to_ip(struct ip_list* ip, char* pathname, char* urlname)
* @return a memory BIO with the file in it.
*/
static BIO*
-https(struct ip_list* ip_list, char* pathname, char* urlname)
+https(struct ip_list* ip_list, const char* pathname, const char* urlname)
{
struct ip_list* ip;
BIO* bio = NULL;
@@ -1213,7 +1211,7 @@ xml_selectbio(struct xml_data* data, const char* tag)
* NOT zero terminated.
* @param len: length of this part of the data.
*/
-void
+static void
xml_charhandle(void *userData, const XML_Char *s, int len)
{
struct xml_data* data = (struct xml_data*)userData;
@@ -1256,7 +1254,7 @@ xml_charhandle(void *userData, const XML_Char *s, int len)
* @return the value or NULL. (ptr into atts).
*/
static const XML_Char*
-find_att(const XML_Char **atts, XML_Char* name)
+find_att(const XML_Char **atts, const XML_Char* name)
{
int i;
for(i=0; atts[i]; i+=2) {
@@ -1370,7 +1368,7 @@ handle_keydigest(struct xml_data* data, const XML_Char **atts)
/** See if XML element equals the zone name */
static int
-xml_is_zone_name(BIO* zone, char* name)
+xml_is_zone_name(BIO* zone, const char* name)
{
char buf[1024];
char* z = NULL;
@@ -1602,8 +1600,6 @@ xml_parse(BIO* xml, time_t now)
XML_ParserFree(parser);
if(verb >= 4) {
- char* pp = NULL;
- int len;
(void)BIO_seek(data.ds, 0);
len = BIO_get_mem_data(data.ds, &pp);
printf("got DS bio %d: '", len);
@@ -1646,7 +1642,7 @@ get_usage_of_ex(X509* cert)
/** get valid signers from the list of signers in the signature */
static STACK_OF(X509)*
-get_valid_signers(PKCS7* p7, char* p7signer)
+get_valid_signers(PKCS7* p7, const char* p7signer)
{
int i;
STACK_OF(X509)* validsigners = sk_X509_new_null();
@@ -1729,7 +1725,7 @@ get_valid_signers(PKCS7* p7, char* p7signer)
/** verify a PKCS7 signature, false on failure */
static int
-verify_p7sig(BIO* data, BIO* p7s, STACK_OF(X509)* trust, char* p7signer)
+verify_p7sig(BIO* data, BIO* p7s, STACK_OF(X509)* trust, const char* p7signer)
{
PKCS7* p7;
X509_STORE *store = X509_STORE_new();
@@ -1807,7 +1803,7 @@ verify_p7sig(BIO* data, BIO* p7s, STACK_OF(X509)* trust, char* p7signer)
/** write unsigned root anchor file, a 5011 revoked tp */
static void
-write_unsigned_root(char* root_anchor_file)
+write_unsigned_root(const char* root_anchor_file)
{
FILE* out;
time_t now = time(NULL);
@@ -1833,7 +1829,7 @@ write_unsigned_root(char* root_anchor_file)
/** write root anchor file */
static void
-write_root_anchor(char* root_anchor_file, BIO* ds)
+write_root_anchor(const char* root_anchor_file, BIO* ds)
{
char* pp = NULL;
int len;
@@ -1859,8 +1855,8 @@ write_root_anchor(char* root_anchor_file, BIO* ds)
/** Perform the verification and update of the trustanchor file */
static void
-verify_and_update_anchor(char* root_anchor_file, BIO* xml, BIO* p7s,
- STACK_OF(X509)* cert, char* p7signer)
+verify_and_update_anchor(const char* root_anchor_file, BIO* xml, BIO* p7s,
+ STACK_OF(X509)* cert, const char* p7signer)
{
BIO* ds;
@@ -1888,10 +1884,11 @@ static void do_wsa_cleanup(void) { WSACleanup(); }
/** perform actual certupdate work */
static int
-do_certupdate(char* root_anchor_file, char* root_cert_file,
- char* urlname, char* xmlname, char* p7sname, char* p7signer,
- char* res_conf, char* root_hints, char* debugconf,
- int ip4only, int ip6only, int port, struct ub_result* dnskey)
+do_certupdate(const char* root_anchor_file, const char* root_cert_file,
+ const char* urlname, const char* xmlname, const char* p7sname,
+ const char* p7signer, const char* res_conf, const char* root_hints,
+ const char* debugconf, int ip4only, int ip6only, int port,
+ struct ub_result* dnskey)
{
STACK_OF(X509)* cert;
BIO *xml, *p7s;
@@ -1945,7 +1942,7 @@ do_certupdate(char* root_anchor_file, char* root_cert_file,
* 2 if it is OK.
*/
static int
-try_read_anchor(char* file)
+try_read_anchor(const char* file)
{
int empty = 1;
char line[10240];
@@ -1989,7 +1986,7 @@ try_read_anchor(char* file)
/** Write the builtin root anchor to a file */
static void
-write_builtin_anchor(char* file)
+write_builtin_anchor(const char* file)
{
const char* builtin_root_anchor = get_builtin_ds();
FILE* out = fopen(file, "w");
@@ -2015,7 +2012,7 @@ write_builtin_anchor(char* file)
* @return 0 if trustpoint is insecure, 1 on success. Exit on failure.
*/
static int
-provide_builtin(char* root_anchor_file, int* used_builtin)
+provide_builtin(const char* root_anchor_file, int* used_builtin)
{
/* try to read it */
switch(try_read_anchor(root_anchor_file))
@@ -2037,7 +2034,7 @@ provide_builtin(char* root_anchor_file, int* used_builtin)
* add an autotrust anchor for the root to the context
*/
static void
-add_5011_probe_root(struct ub_ctx* ctx, char* root_anchor_file)
+add_5011_probe_root(struct ub_ctx* ctx, const char* root_anchor_file)
{
int r;
r = ub_ctx_set_option(ctx, "auto-trust-anchor-file:", root_anchor_file);
@@ -2074,7 +2071,7 @@ prime_root_key(struct ub_ctx* ctx)
/** see if ADDPEND keys exist in autotrust file (if possible) */
static int
-read_if_pending_keys(char* file)
+read_if_pending_keys(const char* file)
{
FILE* in = fopen(file, "r");
char line[8192];
@@ -2096,7 +2093,7 @@ read_if_pending_keys(char* file)
/** read last successful probe time from autotrust file (if possible) */
static int32_t
-read_last_success_time(char* file)
+read_last_success_time(const char* file)
{
FILE* in = fopen(file, "r");
char line[1024];
@@ -2133,7 +2130,7 @@ read_last_success_time(char* file)
* @return true if certupdate is ok.
*/
static int
-probe_date_allows_certupdate(char* root_anchor_file)
+probe_date_allows_certupdate(const char* root_anchor_file)
{
int has_pending_keys = read_if_pending_keys(root_anchor_file);
int32_t last_success = read_last_success_time(root_anchor_file);
@@ -2171,10 +2168,10 @@ probe_date_allows_certupdate(char* root_anchor_file)
/** perform the unbound-anchor work */
static int
-do_root_update_work(char* root_anchor_file, char* root_cert_file,
- char* urlname, char* xmlname, char* p7sname, char* p7signer,
- char* res_conf, char* root_hints, char* debugconf,
- int ip4only, int ip6only, int force, int port)
+do_root_update_work(const char* root_anchor_file, const char* root_cert_file,
+ const char* urlname, const char* xmlname, const char* p7sname,
+ const char* p7signer, const char* res_conf, const char* root_hints,
+ const char* debugconf, int ip4only, int ip6only, int force, int port)
{
struct ub_ctx* ctx;
struct ub_result* dnskey;
@@ -2224,15 +2221,15 @@ extern char* optarg;
int main(int argc, char* argv[])
{
int c;
- char* root_anchor_file = ROOT_ANCHOR_FILE;
- char* root_cert_file = ROOT_CERT_FILE;
- char* urlname = URLNAME;
- char* xmlname = XMLNAME;
- char* p7sname = P7SNAME;
- char* p7signer = P7SIGNER;
- char* res_conf = NULL;
- char* root_hints = NULL;
- char* debugconf = NULL;
+ const char* root_anchor_file = ROOT_ANCHOR_FILE;
+ const char* root_cert_file = ROOT_CERT_FILE;
+ const char* urlname = URLNAME;
+ const char* xmlname = XMLNAME;
+ const char* p7sname = P7SNAME;
+ const char* p7signer = P7SIGNER;
+ const char* res_conf = NULL;
+ const char* root_hints = NULL;
+ const char* debugconf = NULL;
int dolist=0, ip4only=0, ip6only=0, force=0, port = HTTPS_PORT;
/* parse the options */
while( (c=getopt(argc, argv, "46C:FP:a:c:f:hln:r:s:u:vx:")) != -1) {
diff --git a/contrib/unbound/smallapp/unbound-control-setup.sh b/contrib/unbound/smallapp/unbound-control-setup.sh
index aca62ac..7fe1c33 100755
--- a/contrib/unbound/smallapp/unbound-control-setup.sh
+++ b/contrib/unbound/smallapp/unbound-control-setup.sh
@@ -36,7 +36,8 @@
# settings:
# directory for files
-DESTDIR=/usr/local/etc/unbound
+prefix=
+DESTDIR=${prefix}/etc/unbound
# issuer and subject name for certificates
SERVERNAME=unbound
@@ -57,8 +58,8 @@ SVR_BASE=unbound_server
# base name for unbound-control keys
CTL_BASE=unbound_control
-# we want -rw-r--- access (say you run this as root: grp=yes (server), all=no).
-umask 0026
+# we want -rw-r----- access (say you run this as root: grp=yes (server), all=no).
+umask 0027
# end of options
diff --git a/contrib/unbound/smallapp/unbound-control-setup.sh.in b/contrib/unbound/smallapp/unbound-control-setup.sh.in
new file mode 100755
index 0000000..a2caffe
--- /dev/null
+++ b/contrib/unbound/smallapp/unbound-control-setup.sh.in
@@ -0,0 +1,163 @@
+#!/bin/sh
+#
+# unbound-control-setup.sh - set up SSL certificates for unbound-control
+#
+# Copyright (c) 2008, NLnet Labs. All rights reserved.
+#
+# This software is open source.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# Neither the name of the NLNET LABS nor the names of its contributors may
+# be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# settings:
+
+# directory for files
+prefix=@prefix@
+DESTDIR=@sysconfdir@/unbound
+
+# issuer and subject name for certificates
+SERVERNAME=unbound
+CLIENTNAME=unbound-control
+
+# validity period for certificates
+DAYS=7200
+
+# size of keys in bits
+BITS=1536
+
+# hash algorithm
+HASH=sha256
+
+# base name for unbound server keys
+SVR_BASE=unbound_server
+
+# base name for unbound-control keys
+CTL_BASE=unbound_control
+
+# we want -rw-r----- access (say you run this as root: grp=yes (server), all=no).
+umask 0027
+
+# end of options
+
+# functions:
+error ( ) {
+ echo "$0 fatal error: $1"
+ exit 1
+}
+
+# check arguments:
+while test $# -ne 0; do
+ case $1 in
+ -d)
+ if test $# -eq 1; then error "need argument for -d"; fi
+ DESTDIR="$2"
+ shift
+ ;;
+ *)
+ echo "unbound-control-setup.sh - setup SSL keys for unbound-control"
+ echo " -d dir use directory to store keys and certificates."
+ echo " default: $DESTDIR"
+ echo "please run this command using the same user id that the "
+ echo "unbound daemon uses, it needs read privileges."
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+# go!:
+echo "setup in directory $DESTDIR"
+cd "$DESTDIR" || error "could not cd to $DESTDIR"
+
+# create certificate keys; do not recreate if they already exist.
+if test -f $SVR_BASE.key; then
+ echo "$SVR_BASE.key exists"
+else
+ echo "generating $SVR_BASE.key"
+ openssl genrsa -out $SVR_BASE.key $BITS || error "could not genrsa"
+fi
+if test -f $CTL_BASE.key; then
+ echo "$CTL_BASE.key exists"
+else
+ echo "generating $CTL_BASE.key"
+ openssl genrsa -out $CTL_BASE.key $BITS || error "could not genrsa"
+fi
+
+# create self-signed cert for server
+cat >request.cfg <<EOF
+[req]
+default_bits=$BITS
+default_md=$HASH
+prompt=no
+distinguished_name=req_distinguished_name
+
+[req_distinguished_name]
+commonName=$SERVERNAME
+EOF
+test -f request.cfg || error "could not create request.cfg"
+
+echo "create $SVR_BASE.pem (self signed certificate)"
+openssl req -key $SVR_BASE.key -config request.cfg -new -x509 -days $DAYS -out $SVR_BASE.pem || error "could not create $SVR_BASE.pem"
+# create trusted usage pem
+openssl x509 -in $SVR_BASE.pem -addtrust serverAuth -out $SVR_BASE"_trust.pem"
+
+# create client request and sign it, piped
+cat >request.cfg <<EOF
+[req]
+default_bits=$BITS
+default_md=$HASH
+prompt=no
+distinguished_name=req_distinguished_name
+
+[req_distinguished_name]
+commonName=$CLIENTNAME
+EOF
+test -f request.cfg || error "could not create request.cfg"
+
+echo "create $CTL_BASE.pem (signed client certificate)"
+openssl req -key $CTL_BASE.key -config request.cfg -new | openssl x509 -req -days $DAYS -CA $SVR_BASE"_trust.pem" -CAkey $SVR_BASE.key -CAcreateserial -$HASH -out $CTL_BASE.pem
+test -f $CTL_BASE.pem || error "could not create $CTL_BASE.pem"
+# create trusted usage pem
+# openssl x509 -in $CTL_BASE.pem -addtrust clientAuth -out $CTL_BASE"_trust.pem"
+
+# see details with openssl x509 -noout -text < $SVR_BASE.pem
+# echo "create $CTL_BASE""_browser.pfx (web client certificate)"
+# echo "create webbrowser PKCS#12 .PFX certificate file. In Firefox import in:"
+# echo "preferences - advanced - encryption - view certificates - your certs"
+# echo "empty password is used, simply click OK on the password dialog box."
+# openssl pkcs12 -export -in $CTL_BASE"_trust.pem" -inkey $CTL_BASE.key -name "unbound remote control client cert" -out $CTL_BASE"_browser.pfx" -password "pass:" || error "could not create browser certificate"
+
+# remove unused permissions
+chmod o-rw $SVR_BASE.pem $SVR_BASE.key $CTL_BASE.pem $CTL_BASE.key
+
+# remove crap
+rm -f request.cfg
+rm -f $CTL_BASE"_trust.pem" $SVR_BASE"_trust.pem" $SVR_BASE"_trust.srl"
+
+echo "Setup success. Certificates created. Enable in unbound.conf file to use"
+
+exit 0
diff --git a/contrib/unbound/smallapp/worker_cb.c b/contrib/unbound/smallapp/worker_cb.c
index bc37e33..fd8498f 100644
--- a/contrib/unbound/smallapp/worker_cb.c
+++ b/contrib/unbound/smallapp/worker_cb.c
@@ -41,12 +41,11 @@
* linked into the resulting program.
*/
#include "config.h"
+#include "libunbound/context.h"
+#include "libunbound/worker.h"
+#include "util/fptr_wlist.h"
#include "util/log.h"
#include "services/mesh.h"
-struct comm_reply;
-struct comm_point;
-struct module_qstate;
-struct tube;
void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),
uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),
@@ -103,9 +102,10 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg))
struct outbound_entry* worker_send_query(uint8_t* ATTR_UNUSED(qname),
size_t ATTR_UNUSED(qnamelen), uint16_t ATTR_UNUSED(qtype),
uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags),
- int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),
+ int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),
struct sockaddr_storage* ATTR_UNUSED(addr),
- socklen_t ATTR_UNUSED(addrlen), struct module_qstate* ATTR_UNUSED(q))
+ socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),
+ size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q))
{
log_assert(0);
return 0;
@@ -136,7 +136,8 @@ struct outbound_entry* libworker_send_query(uint8_t* ATTR_UNUSED(qname),
uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags),
int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),
struct sockaddr_storage* ATTR_UNUSED(addr),
- socklen_t ATTR_UNUSED(addrlen), struct module_qstate* ATTR_UNUSED(q))
+ socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),
+ size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q))
{
log_assert(0);
return 0;
diff --git a/contrib/unbound/util/config_file.c b/contrib/unbound/util/config_file.c
index b946f0d..ebfb795 100644
--- a/contrib/unbound/util/config_file.c
+++ b/contrib/unbound/util/config_file.c
@@ -59,16 +59,6 @@
/** global config during parsing */
struct config_parser_state* cfg_parser = 0;
-/** lex in file */
-extern FILE* ub_c_in;
-/** lex out file */
-extern FILE* ub_c_out;
-/** the yacc lex generated parse function */
-int ub_c_parse(void);
-/** the lexer function */
-int ub_c_lex(void);
-/** wrap function */
-int ub_c_wrap(void);
/** init ports possible for use */
static void init_outgoing_availports(int* array, int num);
diff --git a/contrib/unbound/util/config_file.h b/contrib/unbound/util/config_file.h
index 69595cb..e790cec 100644
--- a/contrib/unbound/util/config_file.h
+++ b/contrib/unbound/util/config_file.h
@@ -632,6 +632,16 @@ struct config_parser_state {
/** global config parser object used during config parsing */
extern struct config_parser_state* cfg_parser;
+/** lex in file */
+extern FILE* ub_c_in;
+/** lex out file */
+extern FILE* ub_c_out;
+/** the yacc lex generated parse function */
+int ub_c_parse(void);
+/** the lexer function */
+int ub_c_lex(void);
+/** wrap function */
+int ub_c_wrap(void);
/** parsing helpers: print error with file and line numbers */
void ub_c_error(const char* msg);
/** parsing helpers: print error with file and line numbers */
diff --git a/contrib/unbound/util/configlexer.c b/contrib/unbound/util/configlexer.c
index 9ee3566..505c787 100644
--- a/contrib/unbound/util/configlexer.c
+++ b/contrib/unbound/util/configlexer.c
@@ -10,13 +10,23 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 36
+#define YY_FLEX_SUBMINOR_VERSION 37
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
/* First, we deal with platform-specific or compiler-specific issues. */
+#if defined(__FreeBSD__)
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS
+#endif
+#include <sys/cdefs.h>
+#include <stdint.h>
+#else
+#define __dead2
+#endif
+
/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
@@ -32,7 +42,8 @@
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#if defined(__FreeBSD__) || \
+ (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit (max/min) macros for int types.
@@ -265,6 +276,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
? (yy_buffer_stack)[(yy_buffer_stack_top)] \
: NULL)
+#define yy_current_buffer YY_CURRENT_BUFFER
/* Same as previous macro, but useful when we know that the buffer stack is not
* NULL or when we need an lvalue. For internal use only.
@@ -350,7 +362,7 @@ extern char *yytext;
static yy_state_type yy_get_previous_state (void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[] );
+static void yy_fatal_error (yyconst char msg[] ) __dead2;
/* Done after the current pattern has been matched and before the
* corresponding action - sets up yytext.
@@ -375,12 +387,12 @@ struct yy_trans_info
static yyconst flex_int16_t yy_accept[1343] =
{ 0,
1, 1, 124, 124, 128, 128, 132, 132, 136, 136,
- 1, 1, 143, 140, 1, 122, 122, 141, 2, 140,
+ 1, 1, 143, 140, 1, 122, 122, 141, 2, 141,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 141, 124,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 124,
125, 125, 126, 141, 128, 129, 129, 130, 141, 135,
132, 133, 133, 134, 141, 136, 137, 137, 138, 141,
- 139, 123, 2, 127, 139, 141, 140, 0, 1, 2,
+ 139, 123, 2, 127, 141, 139, 140, 0, 1, 2,
2, 2, 2, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
@@ -532,14 +544,14 @@ static yyconst flex_int32_t yy_ec[256] =
1, 2, 1, 5, 6, 1, 1, 1, 7, 1,
1, 1, 1, 1, 8, 1, 1, 1, 1, 1,
9, 10, 1, 11, 1, 1, 1, 12, 1, 1,
- 1, 1, 1, 1, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 1, 39, 1, 1, 1, 1, 40, 41, 42, 43,
-
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 13, 1, 1, 1, 1, 14, 15, 16, 17,
+
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -556,168 +568,165 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst flex_int32_t yy_meta[66] =
+static yyconst flex_int32_t yy_meta[40] =
{ 0,
1, 2, 3, 4, 5, 1, 6, 1, 1, 1,
1, 7, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1
} ;
static yyconst flex_int16_t yy_base[1357] =
{ 0,
- 0, 0, 63, 66, 69, 71, 77, 83, 88, 91,
- 129, 135, 483, 443, 95, 3880, 3880, 3880, 107, 110,
- 142, 140, 108, 50, 159, 147, 121, 148, 158, 174,
- 191, 176, 190, 216, 225, 235, 214, 246, 116, 436,
- 3880, 3880, 3880, 94, 402, 3880, 3880, 3880, 96, 335,
- 329, 3880, 3880, 3880, 214, 282, 3880, 3880, 3880, 102,
- 250, 3880, 289, 3880, 184, 293, 239, 297, 111, 0,
- 301, 0, 0, 219, 223, 248, 273, 280, 285, 290,
- 286, 283, 310, 294, 291, 297, 309, 316, 232, 319,
- 338, 303, 334, 345, 326, 347, 349, 342, 350, 360,
-
- 343, 376, 370, 384, 371, 368, 187, 375, 374, 137,
- 387, 403, 378, 390, 401, 386, 405, 400, 407, 229,
- 154, 186, 199, 163, 448, 176, 115, 277, 90, 452,
- 463, 0, 432, 441, 318, 433, 442, 439, 437, 465,
- 462, 469, 493, 471, 455, 473, 453, 479, 490, 477,
- 494, 496, 498, 510, 492, 517, 530, 526, 549, 522,
- 525, 532, 542, 534, 536, 541, 544, 545, 556, 529,
- 558, 552, 560, 559, 568, 578, 574, 561, 582, 591,
- 603, 583, 599, 610, 607, 612, 608, 594, 611, 616,
- 617, 618, 624, 640, 629, 635, 649, 637, 639, 658,
-
- 664, 643, 669, 657, 672, 677, 676, 663, 660, 665,
- 680, 688, 679, 690, 698, 705, 699, 701, 703, 706,
- 710, 738, 674, 720, 734, 716, 733, 736, 739, 752,
- 747, 737, 756, 750, 767, 773, 761, 766, 777, 763,
- 790, 771, 781, 791, 804, 797, 849, 800, 812, 789,
- 814, 820, 809, 830, 826, 828, 839, 847, 831, 866,
- 884, 857, 853, 859, 873, 883, 893, 881, 889, 896,
- 892, 902, 909, 906, 910, 911, 916, 912, 926, 935,
- 920, 937, 938, 948, 951, 934, 957, 3880, 959, 942,
- 962, 965, 954, 3880, 952, 968, 953, 986, 990, 975,
-
- 978, 981, 1000, 992, 1001, 993, 995, 1041, 1012, 994,
- 1033, 1023, 1025, 1019, 1034, 1036, 1046, 1039, 1029, 1050,
- 1059, 1070, 1061, 1068, 1078, 1028, 1075, 1071, 1077, 1092,
- 1081, 1084, 1085, 1098, 1102, 1103, 1113, 1122, 1121, 1124,
- 1126, 1110, 1127, 1129, 1130, 1134, 1136, 1119, 1140, 1142,
- 1148, 1168, 1151, 1154, 1146, 1161, 1166, 1167, 1173, 1178,
- 1175, 1181, 1179, 1193, 1198, 1199, 1191, 1197, 1210, 1213,
- 1212, 1233, 1194, 1218, 1229, 1234, 1239, 1244, 1230, 1231,
- 1236, 1242, 1260, 1243, 1238, 1254, 1263, 1271, 1258, 1282,
- 1280, 1281, 1276, 1269, 1287, 1290, 1289, 1295, 1296, 1307,
-
- 1308, 1311, 1316, 1279, 1327, 1328, 1329, 1309, 1339, 3880,
- 1341, 1338, 1343, 1336, 1335, 3880, 3880, 1347, 3880, 3880,
- 1363, 1367, 1374, 1353, 1404, 1371, 1365, 1357, 1390, 1385,
- 1380, 1401, 1398, 1414, 1394, 1399, 1417, 1410, 1426, 1424,
- 1429, 1425, 1432, 1438, 1445, 1449, 1450, 1452, 1443, 1457,
- 1464, 1467, 1465, 1468, 1459, 3880, 1466, 1476, 1479, 1482,
- 1499, 3880, 1487, 1491, 1484, 1493, 1496, 1492, 1509, 1503,
- 1506, 1518, 1520, 1526, 1524, 1535, 1472, 1537, 1519, 1543,
- 1545, 1536, 1559, 1562, 1553, 1548, 1554, 1573, 1558, 1574,
- 1579, 1575, 1584, 1572, 1568, 1582, 1621, 1594, 1583, 1589,
-
- 1593, 1601, 1600, 1606, 1617, 1639, 1631, 1615, 1634, 1642,
- 1649, 1644, 1641, 1656, 1650, 1658, 3880, 1664, 1677, 1659,
- 1671, 1682, 1679, 1674, 1685, 1676, 1681, 1691, 1698, 3880,
- 1692, 1701, 1694, 1708, 1719, 1720, 1730, 1734, 3880, 1736,
- 1737, 1739, 1718, 1728, 1746, 1723, 1747, 1754, 1756, 1761,
- 1753, 1763, 1760, 1774, 1764, 1765, 1773, 1783, 1780, 1790,
- 1779, 1799, 1787, 1743, 1807, 1800, 1808, 1794, 1804, 1816,
- 337, 1812, 1810, 1814, 1811, 3880, 76, 1834, 1817, 1827,
- 1853, 1854, 1846, 1838, 1842, 1857, 1843, 1849, 1866, 1850,
- 1863, 1877, 1867, 1883, 1873, 1893, 1878, 1881, 1891, 1889,
-
- 1884, 1900, 1880, 1911, 1907, 1909, 1923, 3880, 1875, 1912,
- 1927, 1920, 1936, 1946, 1918, 1928, 1916, 1950, 1947, 1955,
- 1956, 1961, 1958, 1953, 1965, 1969, 1970, 1977, 1991, 1979,
- 3880, 1985, 1986, 1976, 1996, 1992, 1987, 2006, 1997, 2004,
- 2025, 2026, 3880, 2027, 2034, 2016, 2040, 2021, 2044, 2045,
- 2046, 2031, 2054, 2047, 2058, 2042, 2043, 2057, 3880, 2069,
- 2079, 2075, 2083, 2084, 2070, 2077, 2092, 2074, 2072, 2087,
- 2078, 2097, 2082, 2102, 2106, 2107, 2110, 2085, 3880, 2140,
- 2112, 2123, 2137, 2125, 2127, 2144, 2131, 2153, 2104, 2136,
- 2154, 2152, 2155, 2156, 2159, 2176, 2175, 2160, 2170, 2187,
-
- 2198, 2199, 2195, 3880, 2200, 2193, 2182, 2210, 2208, 2194,
- 2197, 2211, 2209, 2202, 2212, 2214, 2225, 2226, 2232, 2227,
- 2234, 2250, 2242, 2252, 2253, 2254, 2235, 2264, 2260, 2280,
- 2268, 2271, 3880, 3880, 2281, 2269, 2272, 3880, 2285, 3880,
- 2289, 3880, 2291, 2299, 2287, 2276, 2304, 2290, 2306, 2303,
- 2318, 2298, 2311, 2330, 2316, 2332, 3880, 2321, 2326, 2341,
- 2324, 2336, 2338, 2350, 2349, 2314, 2353, 2360, 2364, 3880,
- 2367, 2357, 2375, 2328, 2385, 2371, 2369, 2383, 2387, 2381,
- 2390, 2393, 2401, 2400, 2405, 2409, 2397, 2414, 2394, 2427,
- 2415, 2417, 2419, 2424, 2436, 2438, 2432, 3880, 3880, 2449,
-
- 2452, 2441, 2451, 2442, 2471, 2463, 2462, 2473, 2465, 2468,
- 2475, 2477, 2469, 2479, 2500, 2487, 2495, 3880, 2490, 2498,
- 2509, 2505, 2519, 2510, 2526, 3880, 3880, 2525, 2518, 2521,
- 2515, 2528, 2536, 3880, 2537, 2543, 2546, 2560, 2562, 2532,
- 2549, 2564, 2569, 2561, 2568, 2570, 2581, 2571, 2585, 2584,
- 2586, 2593, 2591, 2601, 2589, 2594, 2595, 2599, 2604, 2605,
- 2623, 2624, 2609, 2626, 3880, 2637, 2616, 2639, 2613, 2644,
- 2646, 2641, 2643, 2640, 2649, 2652, 2627, 2658, 2651, 2679,
- 2661, 3880, 2674, 2671, 2684, 2685, 2666, 2689, 2676, 2693,
- 3880, 2695, 2699, 2703, 2698, 2697, 2710, 2719, 2711, 2718,
-
- 2716, 2724, 2734, 2732, 2736, 2744, 2727, 2742, 2738, 2749,
- 2757, 2768, 2758, 2776, 2761, 2774, 2765, 2755, 2785, 2764,
- 2791, 2781, 3880, 2787, 2789, 2794, 2792, 2797, 2800, 2801,
- 3880, 3880, 2784, 3880, 2814, 2804, 2821, 2823, 3880, 2809,
- 3880, 3880, 2820, 2839, 2827, 2837, 2841, 2840, 3880, 2845,
- 2831, 2854, 2835, 2848, 2857, 2861, 2859, 2865, 3880, 2871,
- 2875, 2862, 2881, 2879, 2891, 2868, 2892, 2903, 2904, 2906,
- 2895, 2896, 2914, 2910, 3880, 2907, 2921, 2925, 2917, 2937,
- 2943, 2930, 2938, 2942, 2953, 3880, 2941, 2940, 2955, 3880,
- 2957, 3880, 2969, 2934, 2970, 2928, 2974, 2951, 2972, 2984,
-
- 2987, 2976, 2993, 2986, 3880, 3880, 2995, 3000, 3006, 2996,
- 3012, 3001, 3009, 3020, 3003, 3018, 3880, 3014, 3021, 3022,
- 3030, 3032, 3880, 3046, 3047, 3041, 3045, 3059, 3055, 3061,
- 3049, 3063, 3066, 3052, 3075, 3078, 3064, 3880, 3079, 3092,
- 3076, 3094, 3081, 3090, 3097, 3112, 3104, 3088, 3109, 3880,
- 3114, 3103, 3115, 3111, 3106, 3127, 3110, 3131, 3125, 3143,
- 3134, 3141, 3142, 2999, 3153, 3880, 3140, 3880, 3154, 3164,
- 3168, 3173, 3880, 3170, 3167, 3880, 3169, 3161, 3183, 3194,
- 3186, 3202, 3199, 3187, 3201, 3188, 3206, 3190, 3197, 3880,
- 3220, 3213, 3214, 3217, 3880, 3880, 3226, 3880, 3880, 3223,
-
- 3880, 3880, 3232, 3239, 3880, 3242, 3880, 3224, 3247, 3240,
- 3230, 3238, 3880, 3255, 3880, 3880, 3253, 3259, 3246, 3257,
- 3268, 3271, 3272, 3264, 3263, 3265, 3266, 3282, 3280, 3296,
- 3288, 3275, 3286, 3298, 3290, 3302, 3292, 3307, 3313, 3320,
- 3880, 3304, 3325, 3880, 3330, 3323, 3321, 3317, 3324, 3338,
- 3337, 3346, 3359, 3343, 3341, 3347, 3880, 3352, 3880, 3880,
- 3355, 3363, 3361, 3357, 3362, 3880, 3376, 3373, 3377, 3378,
- 3880, 3880, 3880, 3390, 3374, 3386, 3401, 3403, 3389, 3880,
- 3394, 3405, 3407, 3399, 3411, 3415, 3424, 3425, 3427, 3880,
- 3426, 3417, 3880, 3437, 3430, 3436, 3438, 3448, 3441, 3880,
-
- 3442, 3452, 3446, 3451, 3455, 3454, 3475, 3880, 3457, 3470,
- 3880, 3459, 3880, 3880, 3465, 3489, 3488, 3494, 3495, 3478,
- 3486, 3503, 3501, 3502, 3880, 3880, 3498, 3880, 3880, 3492,
- 3512, 3505, 3507, 3510, 3509, 3522, 3517, 3531, 3525, 3880,
- 3547, 3880, 3528, 3548, 3552, 3551, 3880, 3553, 3549, 3532,
- 3880, 3880, 3558, 3564, 3559, 3880, 3566, 3572, 3575, 3582,
- 3596, 3591, 3585, 3584, 3598, 3599, 3587, 3588, 3605, 3611,
- 3880, 3610, 3602, 3614, 3617, 3619, 3620, 3623, 3625, 3642,
- 3641, 3648, 3632, 3880, 3640, 3650, 3656, 3657, 3658, 3659,
- 3660, 3880, 3669, 3880, 3661, 3666, 3880, 3880, 3665, 3674,
-
- 3684, 3880, 3685, 3880, 3675, 3676, 3700, 3880, 3880, 3880,
- 3679, 3880, 3701, 3880, 3694, 3692, 3880, 3681, 3709, 3710,
- 3880, 3713, 3880, 3714, 3880, 3703, 3717, 3880, 3880, 3880,
- 3880, 3716, 3719, 3723, 3724, 3880, 3734, 3711, 3729, 3735,
- 3880, 3880, 3788, 3795, 3802, 3809, 3816, 82, 3823, 3830,
- 3837, 3844, 3851, 3858, 3865, 3872
+ 0, 0, 37, 40, 44, 51, 63, 75, 56, 68,
+ 87, 108, 2577, 2563, 50, 2683, 2683, 2683, 129, 94,
+ 70, 104, 122, 90, 92, 115, 126, 95, 84, 132,
+ 135, 138, 50, 142, 148, 156, 169, 164, 179, 2493,
+ 2683, 2683, 2683, 70, 2371, 2683, 2683, 2683, 42, 2326,
+ 1987, 2683, 2683, 2683, 197, 1681, 2683, 2683, 2683, 154,
+ 1191, 2683, 201, 2683, 205, 111, 1082, 211, 120, 0,
+ 222, 0, 0, 103, 158, 165, 149, 155, 168, 206,
+ 207, 198, 217, 209, 204, 208, 215, 177, 136, 227,
+ 228, 219, 232, 236, 235, 240, 245, 229, 246, 247,
+
+ 250, 251, 254, 256, 258, 262, 259, 263, 266, 269,
+ 267, 276, 268, 271, 273, 49, 280, 281, 283, 853,
+ 297, 751, 301, 603, 311, 572, 360, 299, 298, 315,
+ 319, 0, 296, 312, 320, 314, 316, 318, 321, 327,
+ 323, 330, 342, 331, 326, 334, 335, 336, 338, 347,
+ 337, 353, 348, 344, 350, 355, 359, 372, 369, 367,
+ 357, 379, 377, 385, 386, 383, 387, 384, 388, 389,
+ 391, 392, 395, 396, 397, 398, 405, 402, 406, 403,
+ 414, 412, 420, 418, 428, 424, 425, 427, 430, 434,
+ 435, 432, 433, 441, 439, 444, 452, 448, 450, 454,
+
+ 455, 458, 461, 460, 462, 466, 473, 469, 470, 472,
+ 477, 475, 478, 479, 485, 481, 482, 483, 486, 492,
+ 487, 504, 498, 508, 501, 502, 510, 513, 509, 515,
+ 520, 522, 528, 524, 525, 526, 527, 531, 534, 537,
+ 533, 536, 539, 540, 545, 546, 565, 551, 549, 553,
+ 556, 555, 562, 576, 563, 572, 573, 569, 578, 585,
+ 596, 586, 591, 595, 598, 597, 600, 601, 602, 605,
+ 608, 610, 609, 620, 623, 622, 621, 624, 630, 638,
+ 625, 632, 635, 639, 643, 634, 644, 2683, 649, 636,
+ 651, 652, 642, 2683, 653, 656, 658, 660, 662, 668,
+
+ 664, 666, 667, 669, 674, 675, 677, 697, 680, 678,
+ 690, 681, 686, 683, 692, 689, 699, 702, 706, 707,
+ 709, 710, 712, 715, 716, 726, 722, 718, 724, 728,
+ 732, 733, 735, 738, 739, 743, 747, 753, 755, 757,
+ 763, 740, 759, 762, 765, 767, 768, 749, 775, 772,
+ 774, 778, 779, 787, 776, 789, 791, 793, 783, 794,
+ 797, 805, 801, 803, 808, 810, 784, 804, 814, 813,
+ 820, 827, 828, 812, 829, 835, 831, 836, 824, 837,
+ 839, 840, 841, 843, 844, 846, 848, 854, 850, 856,
+ 861, 862, 866, 851, 868, 871, 872, 873, 874, 883,
+
+ 875, 884, 876, 886, 887, 894, 895, 889, 902, 2683,
+ 901, 904, 898, 905, 906, 2683, 2683, 890, 2683, 2683,
+ 909, 914, 915, 917, 922, 923, 925, 927, 930, 932,
+ 935, 936, 938, 944, 946, 939, 947, 948, 950, 954,
+ 955, 957, 961, 963, 964, 965, 968, 970, 972, 974,
+ 975, 981, 977, 988, 984, 2683, 986, 987, 991, 993,
+ 994, 2683, 995, 996, 998, 999, 1000, 1002, 1006, 1004,
+ 1007, 1014, 1013, 1009, 1012, 1019, 1029, 1030, 1025, 1028,
+ 1031, 1035, 1037, 1046, 1039, 1043, 1045, 1052, 1048, 1050,
+ 1054, 1051, 1055, 1057, 1060, 1063, 1085, 1065, 1062, 1064,
+
+ 1067, 1070, 1072, 1074, 1078, 1092, 1097, 1075, 1071, 1103,
+ 1105, 1099, 1095, 1106, 1112, 1113, 2683, 1119, 1120, 1108,
+ 1115, 1116, 1122, 1124, 1129, 1126, 1130, 1132, 1138, 2683,
+ 1135, 1136, 1137, 1140, 1147, 1139, 1149, 1159, 2683, 1161,
+ 1162, 1155, 1157, 1164, 1165, 1167, 1169, 1170, 1171, 1173,
+ 1181, 1176, 1178, 1183, 1182, 1187, 1189, 1190, 1192, 1193,
+ 1194, 1199, 1204, 1210, 1213, 1201, 1218, 1195, 1207, 1211,
+ 1224, 1219, 1222, 1225, 1226, 2683, 174, 1227, 1228, 1229,
+ 1235, 1238, 1234, 1232, 1236, 1240, 1242, 1247, 1253, 1248,
+ 1254, 1255, 1256, 1259, 1258, 1261, 1267, 1268, 1269, 1270,
+
+ 1271, 1272, 1273, 1274, 1279, 1278, 1286, 2683, 1292, 1285,
+ 1281, 1288, 1296, 1305, 1297, 1302, 1312, 1313, 1315, 1316,
+ 1317, 1319, 1309, 1322, 1330, 1331, 1327, 1329, 1328, 1334,
+ 2683, 1335, 1336, 1338, 1341, 1343, 1349, 1347, 1348, 1350,
+ 1353, 1359, 2683, 1303, 1360, 1354, 1364, 1367, 1369, 1371,
+ 1378, 1370, 1374, 1372, 1381, 1382, 1383, 1384, 2683, 1393,
+ 1397, 1394, 1401, 1395, 1398, 1402, 1406, 1403, 1385, 1412,
+ 1409, 1410, 1414, 1415, 1411, 1418, 1419, 1421, 2683, 1425,
+ 1422, 1427, 1428, 1434, 1426, 1435, 1436, 1438, 1441, 1447,
+ 1440, 1451, 1442, 1453, 1450, 1460, 1461, 1464, 1463, 1466,
+
+ 1472, 1478, 1474, 2683, 1477, 1465, 1480, 1486, 1488, 1483,
+ 1489, 1490, 1491, 1498, 1492, 1494, 1495, 1496, 1503, 1500,
+ 1501, 1504, 1507, 1506, 1518, 1519, 1520, 1523, 1524, 1526,
+ 1525, 1532, 2683, 2683, 1533, 1534, 1541, 2683, 1543, 2683,
+ 1547, 2683, 1548, 1549, 1537, 1539, 1553, 1544, 1555, 1556,
+ 1560, 1557, 1562, 1563, 1565, 1566, 2683, 1568, 1569, 1574,
+ 1570, 1572, 1577, 1578, 1582, 1593, 1581, 1585, 1589, 2683,
+ 1591, 1594, 1600, 1607, 1604, 1598, 1606, 1608, 1609, 1610,
+ 1612, 1621, 1613, 1611, 1615, 1622, 1623, 1624, 1626, 1632,
+ 1630, 1631, 1634, 1638, 1640, 1645, 1643, 2683, 2683, 1649,
+
+ 1641, 1646, 1652, 1656, 1658, 1660, 1668, 1665, 1666, 1671,
+ 1672, 1673, 1674, 1676, 1677, 1679, 1680, 2683, 1688, 1682,
+ 1696, 1697, 1706, 1689, 1704, 2683, 2683, 1685, 1692, 1708,
+ 1709, 1711, 1712, 2683, 1714, 1715, 1716, 1717, 1718, 1720,
+ 1710, 1724, 1732, 1735, 1725, 1736, 1743, 1740, 1741, 1744,
+ 1746, 1754, 1742, 1756, 1762, 1747, 1758, 1760, 1764, 1761,
+ 1766, 1770, 1772, 1771, 2683, 1778, 1775, 1784, 1776, 1783,
+ 1785, 1792, 1788, 1789, 1790, 1791, 1794, 1796, 1797, 1798,
+ 1804, 2683, 1803, 1805, 1806, 1808, 1814, 1818, 1816, 1821,
+ 2683, 1822, 1830, 1826, 1828, 1832, 1829, 1836, 1833, 1839,
+
+ 1838, 1841, 1843, 1850, 1844, 1848, 1851, 1852, 1863, 1862,
+ 1869, 1870, 1867, 1876, 1873, 1874, 1875, 1877, 1886, 1882,
+ 1888, 1880, 2683, 1890, 1895, 1897, 1899, 1884, 1900, 1898,
+ 2683, 2683, 1891, 2683, 1908, 1901, 1912, 1913, 2683, 1911,
+ 2683, 2683, 1914, 1923, 1915, 1916, 1924, 1930, 2683, 1927,
+ 1925, 1935, 1931, 1937, 1938, 1939, 1933, 1940, 2683, 1941,
+ 1942, 1943, 1947, 1953, 1955, 1957, 1958, 1962, 1965, 1966,
+ 1959, 1968, 1974, 1973, 2683, 1972, 1975, 1980, 1981, 1985,
+ 1982, 1986, 1987, 1996, 1998, 2683, 1992, 1990, 2000, 2683,
+ 2002, 2683, 2006, 2004, 2009, 2014, 2011, 2022, 2007, 2015,
+
+ 2023, 2017, 2025, 2027, 2683, 2683, 2031, 2033, 2036, 2034,
+ 2038, 2041, 2039, 2042, 2044, 2048, 2683, 2049, 2050, 2051,
+ 2052, 2053, 2683, 2056, 2057, 2058, 2062, 2065, 2077, 2079,
+ 2068, 2083, 2085, 2061, 2087, 2089, 2090, 2683, 2091, 2093,
+ 2094, 2098, 2099, 2095, 2100, 2104, 2107, 2102, 2111, 2683,
+ 2115, 2108, 2118, 2116, 2112, 2122, 2123, 2126, 2128, 2130,
+ 2129, 2131, 2132, 2138, 2059, 2683, 2136, 2683, 2137, 2142,
+ 2150, 2151, 2683, 2147, 2153, 2683, 2154, 2158, 2167, 2155,
+ 2161, 2169, 2170, 2171, 2172, 2173, 2174, 2182, 2178, 2683,
+ 2180, 2181, 2187, 2183, 2683, 2683, 2188, 2683, 2683, 2198,
+
+ 2683, 2683, 2194, 2201, 2683, 2203, 2683, 2209, 2205, 2192,
+ 2190, 2210, 2683, 2214, 2683, 2683, 2211, 2217, 2207, 2218,
+ 2225, 2227, 2229, 2220, 2222, 2230, 2231, 2233, 2234, 2236,
+ 2237, 2238, 2239, 2244, 2241, 2247, 2248, 2250, 2251, 2253,
+ 2683, 2249, 2262, 2683, 2269, 2270, 2258, 2260, 2271, 2272,
+ 2274, 2276, 2282, 2280, 2281, 2283, 2683, 2285, 2683, 2683,
+ 2286, 2284, 2291, 2292, 2294, 2683, 2297, 2298, 2302, 2309,
+ 2683, 2683, 2683, 2310, 2299, 2305, 2313, 2315, 2316, 2683,
+ 2319, 2322, 2323, 2325, 2330, 2332, 2338, 2336, 2342, 2683,
+ 2339, 2337, 2683, 2343, 2345, 2347, 2348, 2350, 2352, 2683,
+
+ 2353, 2354, 2360, 2355, 2363, 2366, 2365, 2683, 2367, 2368,
+ 2683, 2378, 2683, 2683, 2369, 2379, 2382, 2384, 2387, 2375,
+ 2388, 2395, 2392, 2394, 2683, 2683, 2397, 2683, 2683, 2396,
+ 2399, 2400, 2404, 2401, 2406, 2408, 2409, 2412, 2410, 2683,
+ 2413, 2683, 2414, 2423, 2420, 2418, 2683, 2425, 2426, 2429,
+ 2683, 2683, 2431, 2439, 2433, 2683, 2441, 2443, 2437, 2444,
+ 2448, 2449, 2445, 2450, 2455, 2457, 2451, 2453, 2465, 2466,
+ 2683, 2468, 2460, 2470, 2474, 2476, 2478, 2479, 2481, 2483,
+ 2484, 2486, 2487, 2683, 2488, 2489, 2499, 2504, 2508, 2490,
+ 2510, 2683, 2511, 2683, 2514, 2500, 2683, 2683, 2515, 2517,
+
+ 2519, 2683, 2520, 2683, 2518, 2522, 2526, 2683, 2683, 2683,
+ 2528, 2683, 2529, 2683, 2532, 2534, 2683, 2535, 2537, 2540,
+ 2683, 2542, 2683, 2544, 2683, 2545, 2546, 2683, 2683, 2683,
+ 2683, 2548, 2550, 2555, 2551, 2683, 2556, 2558, 2559, 2562,
+ 2683, 2683, 2591, 2598, 2605, 2612, 2619, 94, 2626, 2633,
+ 2640, 2647, 2654, 2661, 2668, 2675
} ;
static yyconst flex_int16_t yy_def[1357] =
@@ -873,880 +882,612 @@ static yyconst flex_int16_t yy_def[1357] =
1342, 1342, 1342, 1342, 1342, 1342
} ;
-static yyconst flex_int16_t yy_nxt[3946] =
+static yyconst flex_int16_t yy_nxt[2723] =
{ 0,
14, 15, 16, 17, 18, 19, 18, 14, 14, 14,
- 14, 18, 20, 14, 21, 22, 23, 24, 14, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 14, 34,
- 35, 36, 37, 38, 14, 14, 14, 14, 39, 20,
- 14, 21, 22, 23, 24, 14, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 14, 34, 35, 36, 37,
- 38, 14, 14, 14, 14, 41, 42, 43, 41, 42,
- 43, 46, 47, 46, 47, 48, 86, 48, 51, 52,
- 53, 54, 67, 18, 51, 52, 53, 54, 68, 18,
- 57, 58, 59, 57, 58, 59, 69, 120, 120, 122,
-
- 70, 44, 122, 86, 44, 127, 127, 49, 72, 49,
- 72, 72, 69, 72, 130, 55, 70, 67, 72, 67,
- 67, 55, 67, 84, 74, 75, 60, 67, 130, 60,
- 15, 16, 17, 62, 63, 64, 15, 16, 17, 62,
- 63, 64, 76, 85, 176, 73, 68, 92, 68, 65,
- 84, 74, 75, 128, 77, 65, 80, 120, 120, 68,
- 81, 78, 89, 82, 93, 90, 83, 66, 79, 76,
- 85, 87, 91, 66, 92, 68, 65, 126, 68, 88,
- 68, 77, 65, 80, 94, 68, 68, 81, 78, 89,
- 82, 93, 90, 83, 95, 79, 68, 68, 87, 91,
-
- 96, 125, 122, 98, 97, 122, 88, 99, 101, 133,
- 102, 94, 68, 173, 68, 124, 103, 124, 124, 104,
- 124, 95, 130, 100, 123, 68, 105, 96, 68, 68,
- 98, 97, 106, 134, 99, 101, 133, 102, 135, 116,
- 173, 109, 107, 103, 117, 108, 104, 113, 150, 114,
- 100, 110, 68, 105, 68, 111, 112, 68, 118, 106,
- 134, 68, 119, 68, 115, 135, 116, 121, 109, 107,
- 68, 117, 108, 68, 113, 150, 114, 68, 110, 136,
- 127, 127, 111, 112, 68, 118, 68, 137, 130, 119,
- 72, 115, 72, 72, 129, 72, 129, 129, 67, 129,
-
- 67, 67, 72, 67, 72, 72, 136, 72, 67, 138,
- 139, 68, 72, 140, 137, 141, 142, 143, 68, 145,
- 128, 68, 146, 68, 68, 189, 147, 132, 68, 68,
- 126, 149, 68, 155, 144, 68, 138, 139, 148, 73,
- 140, 68, 141, 142, 151, 663, 145, 68, 68, 146,
- 156, 160, 152, 147, 68, 153, 68, 68, 149, 158,
- 155, 144, 161, 159, 68, 148, 163, 162, 164, 154,
- 157, 151, 68, 125, 166, 68, 68, 156, 160, 152,
- 68, 68, 153, 68, 165, 68, 158, 68, 68, 161,
- 159, 167, 172, 163, 162, 164, 154, 157, 68, 168,
-
- 169, 166, 171, 175, 170, 174, 68, 180, 68, 68,
- 177, 165, 68, 68, 68, 178, 68, 181, 167, 172,
- 183, 184, 68, 185, 68, 68, 168, 169, 68, 171,
- 175, 170, 174, 182, 180, 179, 186, 177, 68, 68,
- 123, 68, 178, 68, 181, 68, 187, 183, 184, 124,
- 185, 124, 124, 129, 124, 129, 129, 188, 129, 190,
- 182, 191, 179, 186, 72, 192, 72, 72, 193, 72,
- 130, 68, 194, 187, 121, 68, 196, 68, 195, 68,
- 68, 68, 1342, 202, 188, 203, 190, 205, 191, 204,
- 1342, 68, 192, 68, 206, 193, 1342, 1342, 1342, 1342,
-
- 68, 132, 208, 68, 1342, 195, 207, 68, 197, 68,
- 202, 68, 203, 198, 205, 68, 204, 68, 199, 210,
- 209, 206, 211, 214, 200, 201, 213, 212, 68, 208,
- 68, 68, 68, 207, 68, 197, 68, 216, 217, 222,
- 198, 224, 220, 225, 215, 199, 210, 209, 68, 211,
- 214, 200, 201, 213, 212, 68, 218, 221, 223, 226,
- 68, 227, 230, 68, 68, 217, 219, 68, 68, 220,
- 68, 215, 68, 229, 68, 234, 228, 231, 232, 68,
- 68, 238, 68, 68, 221, 223, 226, 68, 227, 230,
- 68, 233, 239, 219, 68, 240, 68, 68, 68, 68,
-
- 229, 235, 234, 228, 231, 232, 68, 236, 237, 241,
- 242, 244, 68, 243, 247, 1342, 68, 245, 233, 239,
- 68, 68, 240, 253, 251, 248, 1342, 1342, 235, 68,
- 252, 250, 68, 254, 236, 237, 241, 68, 244, 246,
- 243, 68, 249, 258, 255, 68, 130, 259, 68, 68,
- 68, 251, 248, 256, 68, 68, 68, 252, 250, 257,
- 254, 260, 68, 265, 261, 262, 246, 68, 1342, 249,
- 258, 255, 263, 68, 259, 68, 266, 68, 68, 264,
- 256, 68, 267, 270, 268, 288, 257, 68, 260, 272,
- 265, 261, 262, 269, 271, 68, 68, 273, 68, 263,
-
- 275, 68, 68, 68, 274, 278, 264, 68, 276, 267,
- 68, 268, 68, 277, 68, 68, 272, 68, 68, 279,
- 269, 271, 280, 283, 273, 1342, 68, 275, 68, 281,
- 284, 274, 282, 285, 289, 276, 68, 68, 1342, 68,
- 277, 68, 292, 68, 68, 1342, 279, 294, 68, 280,
- 283, 286, 287, 293, 68, 295, 281, 284, 68, 282,
- 285, 289, 290, 299, 296, 291, 1342, 1342, 298, 292,
- 308, 68, 68, 297, 68, 68, 68, 68, 286, 287,
- 293, 300, 295, 301, 1342, 68, 303, 302, 68, 290,
- 68, 296, 291, 304, 68, 298, 305, 307, 306, 68,
-
- 297, 68, 1342, 310, 68, 68, 309, 1342, 300, 68,
- 301, 68, 311, 303, 302, 68, 312, 1342, 313, 68,
- 304, 325, 315, 305, 307, 306, 323, 130, 68, 68,
- 310, 1342, 324, 309, 314, 68, 1342, 329, 68, 311,
- 328, 1342, 68, 312, 326, 313, 327, 68, 325, 315,
- 68, 1342, 68, 323, 331, 1342, 334, 330, 68, 324,
- 1342, 314, 316, 317, 68, 332, 68, 328, 68, 68,
- 1342, 326, 318, 327, 319, 320, 321, 68, 333, 322,
- 339, 331, 335, 334, 330, 68, 340, 68, 338, 316,
- 317, 68, 332, 336, 337, 68, 342, 68, 341, 318,
-
- 1342, 319, 320, 321, 68, 333, 322, 339, 343, 335,
- 344, 68, 348, 340, 345, 338, 346, 352, 349, 68,
- 1342, 68, 68, 342, 350, 341, 351, 68, 353, 347,
- 68, 68, 354, 1342, 68, 343, 355, 344, 356, 348,
- 68, 345, 357, 346, 68, 349, 1342, 68, 68, 68,
- 68, 350, 358, 351, 68, 353, 347, 359, 68, 354,
- 361, 360, 1342, 355, 68, 356, 363, 362, 1342, 364,
- 1342, 365, 68, 68, 366, 68, 68, 369, 372, 358,
- 68, 367, 375, 370, 359, 368, 68, 361, 360, 68,
- 68, 68, 68, 363, 362, 68, 364, 68, 365, 371,
-
- 68, 366, 373, 68, 369, 372, 68, 376, 367, 374,
- 370, 1342, 368, 68, 377, 378, 68, 380, 379, 68,
- 381, 389, 1342, 1342, 68, 382, 371, 1342, 68, 373,
- 68, 68, 68, 68, 376, 406, 374, 393, 68, 68,
- 390, 377, 378, 388, 380, 379, 395, 381, 389, 391,
- 68, 1342, 382, 383, 392, 394, 1342, 68, 384, 399,
- 385, 68, 396, 68, 393, 398, 68, 68, 386, 397,
- 388, 68, 68, 395, 68, 401, 391, 68, 387, 68,
- 383, 392, 394, 400, 68, 384, 399, 385, 68, 396,
- 402, 403, 398, 405, 404, 386, 397, 68, 407, 68,
-
- 408, 409, 401, 410, 411, 387, 68, 412, 68, 68,
- 400, 413, 414, 68, 416, 68, 130, 402, 403, 68,
- 405, 404, 68, 68, 417, 407, 415, 408, 409, 418,
- 68, 411, 419, 421, 412, 420, 68, 425, 413, 414,
- 68, 68, 422, 423, 424, 1342, 1342, 429, 68, 426,
- 428, 68, 427, 415, 1342, 1342, 1342, 68, 430, 68,
- 68, 436, 68, 435, 68, 68, 437, 68, 68, 422,
- 423, 424, 68, 431, 68, 438, 426, 428, 68, 427,
- 68, 439, 432, 441, 68, 430, 68, 433, 445, 68,
- 435, 434, 68, 437, 443, 1342, 446, 442, 444, 68,
-
- 431, 457, 438, 440, 68, 68, 68, 447, 439, 432,
- 441, 68, 448, 68, 433, 449, 68, 68, 434, 68,
- 450, 443, 451, 446, 442, 444, 452, 453, 454, 68,
- 440, 68, 68, 1342, 447, 68, 68, 68, 458, 448,
- 455, 461, 449, 459, 456, 462, 1342, 450, 68, 451,
- 68, 68, 463, 452, 453, 454, 68, 464, 460, 465,
- 466, 1342, 1342, 470, 471, 458, 467, 68, 68, 68,
- 459, 68, 68, 468, 68, 469, 68, 68, 474, 463,
- 68, 68, 68, 472, 464, 460, 465, 466, 475, 473,
- 470, 471, 68, 467, 476, 477, 68, 478, 68, 480,
-
- 468, 68, 469, 479, 490, 483, 1342, 68, 482, 68,
- 472, 481, 485, 484, 68, 475, 473, 68, 68, 68,
- 68, 476, 477, 486, 478, 68, 480, 68, 68, 488,
- 479, 490, 483, 68, 68, 482, 489, 487, 481, 485,
- 484, 494, 492, 491, 493, 68, 68, 68, 497, 68,
- 486, 495, 1342, 498, 68, 500, 488, 1342, 1342, 496,
- 506, 501, 1342, 489, 487, 130, 68, 68, 494, 492,
- 491, 493, 499, 68, 68, 502, 68, 68, 495, 68,
- 498, 68, 500, 503, 504, 68, 496, 513, 501, 505,
- 1342, 68, 1342, 515, 514, 68, 517, 1342, 518, 499,
-
- 1342, 68, 502, 68, 516, 68, 1342, 1342, 522, 68,
- 503, 504, 68, 519, 513, 1342, 505, 507, 68, 508,
- 515, 514, 509, 68, 520, 518, 521, 510, 68, 525,
- 523, 516, 68, 511, 512, 522, 68, 68, 526, 68,
- 519, 529, 68, 530, 507, 531, 508, 524, 68, 509,
- 527, 520, 68, 521, 510, 68, 525, 523, 528, 532,
- 511, 512, 68, 68, 68, 526, 533, 68, 529, 534,
- 68, 535, 536, 537, 524, 541, 68, 527, 539, 563,
- 543, 68, 538, 68, 540, 528, 532, 68, 68, 542,
- 68, 545, 1342, 533, 1342, 68, 534, 68, 535, 536,
-
- 537, 544, 68, 68, 68, 68, 68, 543, 546, 538,
- 68, 540, 554, 547, 68, 551, 542, 68, 545, 549,
- 68, 548, 68, 550, 555, 68, 552, 553, 544, 68,
- 68, 68, 556, 1342, 68, 546, 557, 68, 558, 554,
- 547, 68, 551, 560, 68, 559, 549, 68, 548, 565,
- 550, 555, 564, 552, 553, 561, 68, 68, 68, 556,
- 562, 567, 68, 557, 68, 558, 566, 571, 568, 570,
- 560, 569, 559, 68, 68, 68, 565, 572, 573, 564,
- 574, 68, 561, 68, 1342, 576, 68, 562, 567, 575,
- 577, 68, 68, 566, 571, 568, 68, 68, 569, 579,
-
- 68, 578, 580, 581, 572, 573, 68, 582, 1342, 588,
- 68, 68, 68, 68, 1342, 590, 575, 130, 591, 589,
- 68, 68, 68, 594, 595, 593, 579, 68, 578, 580,
- 581, 68, 68, 592, 582, 583, 588, 584, 68, 68,
- 601, 585, 590, 586, 68, 591, 589, 600, 587, 1342,
- 594, 596, 593, 68, 603, 68, 597, 602, 598, 68,
- 592, 608, 583, 605, 584, 604, 606, 601, 585, 68,
- 586, 610, 68, 609, 600, 587, 599, 68, 596, 68,
- 68, 603, 68, 597, 602, 598, 607, 68, 68, 612,
- 605, 611, 604, 606, 68, 613, 68, 68, 614, 615,
-
- 609, 617, 68, 599, 616, 621, 619, 618, 1342, 68,
- 624, 620, 68, 607, 68, 68, 612, 68, 611, 68,
- 68, 622, 613, 68, 625, 614, 615, 623, 617, 68,
- 68, 616, 68, 619, 618, 626, 68, 624, 620, 68,
- 627, 629, 628, 630, 635, 1342, 68, 631, 622, 632,
- 656, 625, 633, 634, 623, 638, 68, 68, 68, 636,
- 637, 68, 626, 639, 643, 1342, 68, 627, 68, 628,
- 640, 635, 68, 641, 68, 68, 632, 68, 642, 633,
- 634, 68, 638, 644, 68, 68, 636, 637, 646, 645,
- 639, 68, 68, 647, 68, 648, 651, 640, 68, 68,
-
- 641, 68, 68, 68, 649, 642, 652, 650, 653, 655,
- 644, 68, 68, 654, 657, 646, 645, 68, 68, 659,
- 647, 68, 648, 651, 660, 68, 658, 1342, 68, 661,
- 665, 649, 68, 652, 650, 653, 655, 68, 68, 662,
- 654, 664, 68, 669, 666, 68, 68, 667, 68, 68,
- 68, 660, 68, 658, 68, 68, 661, 665, 670, 668,
- 671, 672, 673, 674, 1342, 68, 662, 675, 664, 677,
- 669, 666, 68, 676, 667, 678, 68, 679, 1342, 680,
- 68, 68, 698, 681, 68, 670, 668, 68, 68, 673,
- 674, 68, 68, 682, 675, 68, 677, 683, 687, 684,
-
- 676, 68, 678, 685, 68, 68, 680, 688, 686, 693,
- 681, 68, 690, 68, 691, 68, 68, 689, 68, 68,
- 682, 68, 68, 707, 683, 687, 684, 68, 694, 68,
- 685, 68, 692, 695, 688, 686, 693, 699, 68, 690,
- 696, 691, 705, 697, 689, 68, 700, 68, 706, 68,
- 68, 701, 702, 703, 68, 694, 68, 704, 68, 692,
- 695, 68, 708, 709, 699, 68, 68, 696, 711, 705,
- 697, 710, 715, 700, 68, 706, 716, 712, 701, 702,
- 1342, 1342, 714, 713, 68, 68, 717, 1342, 68, 708,
- 709, 68, 718, 68, 68, 711, 68, 1342, 710, 68,
-
- 724, 723, 1342, 68, 712, 726, 729, 68, 68, 714,
- 713, 719, 725, 717, 68, 68, 720, 68, 721, 718,
- 722, 727, 728, 68, 68, 68, 731, 724, 723, 68,
- 68, 730, 726, 729, 68, 68, 733, 734, 719, 725,
- 732, 735, 68, 720, 68, 721, 737, 722, 727, 728,
- 736, 738, 739, 731, 68, 740, 1342, 742, 730, 68,
- 748, 741, 743, 68, 68, 68, 745, 732, 735, 68,
- 744, 747, 68, 737, 746, 749, 750, 736, 68, 739,
- 68, 68, 68, 68, 68, 68, 751, 748, 741, 743,
- 753, 752, 68, 745, 760, 68, 68, 744, 747, 756,
-
- 755, 746, 749, 757, 754, 758, 759, 68, 68, 761,
- 68, 763, 68, 68, 764, 68, 68, 68, 752, 768,
- 68, 68, 68, 68, 1342, 68, 756, 755, 762, 779,
- 68, 754, 758, 759, 1342, 68, 761, 765, 763, 767,
- 68, 764, 68, 766, 68, 68, 768, 769, 68, 771,
- 68, 770, 772, 773, 774, 762, 779, 1342, 775, 776,
- 777, 68, 780, 68, 765, 68, 767, 1342, 782, 68,
- 766, 1342, 784, 783, 68, 68, 771, 788, 68, 772,
- 773, 774, 68, 778, 781, 775, 776, 777, 785, 780,
- 68, 68, 68, 68, 68, 782, 786, 68, 68, 784,
-
- 783, 787, 789, 790, 788, 791, 792, 793, 68, 804,
- 778, 781, 796, 68, 68, 785, 794, 797, 795, 799,
- 68, 798, 1342, 786, 800, 68, 803, 801, 787, 789,
- 790, 68, 68, 68, 793, 68, 68, 68, 68, 796,
- 68, 802, 805, 794, 806, 795, 68, 68, 68, 68,
- 68, 800, 68, 803, 801, 807, 808, 809, 813, 810,
- 811, 1342, 812, 68, 68, 68, 817, 814, 802, 805,
- 68, 806, 68, 68, 816, 818, 819, 815, 822, 825,
- 68, 824, 807, 808, 809, 813, 810, 811, 68, 812,
- 68, 68, 68, 817, 814, 820, 826, 823, 68, 821,
-
- 827, 816, 68, 819, 815, 828, 68, 68, 824, 68,
- 68, 829, 831, 830, 68, 1342, 833, 834, 68, 68,
- 832, 850, 820, 68, 823, 68, 821, 68, 68, 68,
- 836, 837, 828, 838, 835, 857, 68, 68, 829, 831,
- 830, 68, 68, 833, 68, 839, 840, 832, 841, 68,
- 842, 843, 68, 844, 68, 845, 68, 836, 837, 68,
- 838, 835, 68, 848, 68, 849, 68, 846, 68, 847,
- 68, 1342, 839, 840, 68, 841, 68, 842, 843, 68,
- 844, 853, 845, 854, 851, 852, 1342, 68, 68, 856,
- 848, 68, 849, 855, 846, 68, 847, 858, 68, 860,
-
- 859, 1342, 68, 862, 865, 68, 864, 68, 853, 68,
- 854, 851, 852, 68, 861, 863, 856, 866, 872, 68,
- 855, 68, 870, 68, 858, 68, 860, 859, 68, 867,
- 862, 68, 68, 864, 873, 68, 868, 871, 68, 68,
- 869, 861, 863, 68, 866, 872, 874, 68, 875, 870,
- 877, 876, 68, 68, 878, 68, 867, 68, 879, 881,
- 882, 880, 68, 868, 871, 68, 883, 869, 884, 890,
- 68, 885, 886, 874, 68, 875, 68, 877, 876, 68,
- 68, 878, 1342, 889, 891, 879, 881, 68, 880, 68,
- 68, 887, 893, 883, 888, 884, 892, 901, 885, 886,
-
- 68, 68, 895, 68, 894, 896, 68, 68, 897, 68,
- 889, 68, 898, 68, 899, 68, 903, 68, 887, 893,
- 1342, 888, 904, 892, 900, 68, 905, 902, 68, 895,
- 1342, 894, 896, 68, 906, 897, 68, 1342, 68, 898,
- 907, 899, 910, 68, 909, 912, 908, 68, 68, 904,
- 911, 900, 920, 68, 902, 913, 68, 68, 916, 68,
- 1342, 906, 917, 68, 68, 914, 68, 907, 915, 910,
- 68, 909, 912, 908, 68, 68, 918, 911, 919, 920,
- 923, 68, 913, 921, 68, 916, 924, 68, 927, 917,
- 922, 925, 914, 926, 928, 915, 935, 931, 68, 68,
-
- 68, 930, 68, 918, 932, 919, 68, 68, 68, 68,
- 921, 933, 934, 924, 929, 939, 943, 922, 925, 68,
- 926, 928, 68, 68, 68, 937, 936, 68, 930, 68,
- 938, 68, 68, 68, 941, 942, 940, 68, 933, 68,
- 944, 929, 68, 68, 945, 946, 947, 68, 951, 948,
- 1342, 68, 937, 936, 68, 949, 1342, 938, 950, 958,
- 1342, 68, 68, 940, 68, 68, 952, 944, 953, 959,
- 1342, 955, 946, 954, 1342, 68, 948, 68, 68, 68,
- 956, 68, 68, 957, 68, 950, 958, 68, 960, 68,
- 68, 961, 962, 952, 963, 953, 68, 964, 955, 68,
-
- 954, 968, 965, 967, 68, 966, 972, 956, 975, 68,
- 957, 971, 68, 969, 68, 960, 974, 68, 961, 962,
- 970, 963, 68, 68, 964, 1342, 976, 68, 968, 965,
- 967, 68, 966, 68, 973, 68, 68, 68, 971, 977,
- 969, 68, 978, 974, 979, 989, 980, 970, 68, 68,
- 981, 982, 983, 976, 68, 986, 68, 68, 984, 987,
- 990, 973, 68, 985, 991, 68, 977, 988, 992, 978,
- 68, 979, 68, 980, 68, 993, 68, 981, 982, 983,
- 68, 994, 68, 995, 996, 984, 987, 68, 998, 997,
- 985, 999, 1000, 68, 988, 68, 68, 1001, 1002, 68,
-
- 1005, 1004, 68, 68, 1003, 1006, 68, 1011, 994, 1007,
- 1342, 996, 68, 1008, 68, 998, 997, 1009, 999, 68,
- 1017, 1010, 68, 68, 1001, 68, 1012, 68, 1004, 68,
- 68, 1003, 68, 1014, 1011, 68, 1007, 1013, 68, 68,
- 1008, 1015, 68, 1016, 1009, 1018, 1019, 68, 1010, 1021,
- 1342, 1023, 68, 1012, 1022, 1020, 1342, 1342, 68, 68,
- 1014, 68, 1025, 1024, 1013, 68, 1026, 1027, 1015, 68,
- 1016, 1028, 1018, 68, 1342, 68, 1021, 68, 68, 68,
- 1029, 1022, 1020, 68, 1030, 1031, 68, 1033, 1034, 1025,
- 1024, 1035, 68, 1026, 1027, 68, 1032, 68, 1028, 68,
-
- 68, 1036, 1038, 68, 1037, 1039, 68, 1029, 1040, 68,
- 1342, 1030, 1031, 68, 1033, 1034, 1041, 68, 1035, 68,
- 1042, 1046, 1043, 1032, 1044, 1342, 1047, 1045, 1036, 68,
- 68, 1037, 1039, 68, 68, 1040, 1050, 1048, 1342, 1066,
- 1051, 68, 68, 1041, 68, 68, 1049, 1042, 68, 1043,
- 1055, 1044, 68, 1047, 1045, 68, 1054, 1052, 1057, 68,
- 1053, 1056, 1068, 68, 1048, 1059, 68, 1051, 68, 1058,
- 1064, 1060, 68, 1049, 1062, 68, 68, 1055, 68, 68,
- 68, 68, 1061, 1054, 1052, 1057, 1063, 1053, 1056, 68,
- 1065, 68, 1059, 68, 1067, 68, 1058, 1064, 1060, 1070,
-
- 1072, 1062, 1069, 1071, 1073, 1074, 1129, 68, 68, 1061,
- 68, 1076, 68, 1063, 68, 1075, 1080, 1065, 1077, 1078,
- 1342, 1067, 68, 1342, 68, 68, 1070, 1072, 1079, 1069,
- 1071, 68, 1074, 68, 68, 1081, 1082, 68, 68, 68,
- 1083, 68, 1075, 1080, 68, 1077, 1078, 68, 1084, 1085,
- 68, 1086, 68, 1088, 1087, 1079, 68, 1090, 68, 68,
- 68, 1091, 1081, 1082, 1089, 1092, 1095, 1083, 68, 1093,
- 68, 1094, 1096, 1097, 1098, 1084, 1085, 1099, 1086, 68,
- 1088, 1087, 1100, 68, 68, 68, 1101, 68, 1091, 1102,
- 68, 1089, 1092, 68, 1103, 1104, 1093, 68, 1094, 68,
-
- 1097, 68, 68, 1105, 68, 1107, 1106, 1109, 1342, 1100,
- 1108, 1110, 1342, 68, 68, 1113, 68, 68, 1114, 68,
- 1115, 1103, 1104, 1342, 1111, 1116, 68, 1118, 68, 1120,
- 68, 1119, 68, 1106, 1109, 68, 1342, 1108, 1110, 1112,
- 1117, 68, 68, 1121, 68, 1114, 1122, 68, 68, 68,
- 68, 1111, 68, 68, 1118, 1123, 1120, 1124, 1119, 1125,
- 1126, 1127, 1128, 68, 1342, 68, 1112, 1117, 1130, 68,
- 1121, 1131, 68, 1122, 1132, 1134, 1133, 1140, 68, 68,
- 68, 68, 1123, 1139, 1124, 1135, 1125, 1126, 1127, 1128,
- 1138, 68, 68, 1136, 1141, 1130, 1137, 1150, 1131, 68,
-
- 1143, 1132, 68, 1133, 1140, 68, 68, 68, 68, 1142,
- 1139, 68, 1135, 1144, 1151, 1145, 1147, 1138, 1146, 1148,
- 1136, 68, 1149, 1137, 68, 68, 68, 1143, 68, 1153,
- 1155, 1161, 68, 1154, 1157, 68, 1142, 68, 1156, 68,
- 68, 1151, 1145, 1147, 68, 1146, 1148, 1152, 1158, 1149,
- 1159, 68, 68, 1160, 1165, 68, 1153, 1155, 68, 1162,
- 1154, 68, 68, 1164, 68, 1156, 1166, 1163, 68, 1167,
- 68, 1169, 1168, 1170, 1152, 1158, 68, 68, 68, 1171,
- 68, 1165, 1172, 1173, 68, 68, 1162, 1174, 1176, 1177,
- 1164, 68, 1175, 68, 1163, 68, 1167, 68, 1169, 1168,
-
- 1170, 68, 68, 68, 68, 1178, 68, 1180, 1181, 68,
- 68, 1179, 1182, 68, 1174, 1176, 1177, 1183, 68, 1175,
- 68, 1187, 1184, 1188, 68, 1185, 68, 1186, 68, 1189,
- 68, 1190, 1178, 1191, 68, 1181, 68, 1192, 1179, 1182,
- 68, 1193, 68, 1194, 1183, 68, 1196, 1195, 1187, 1184,
- 1188, 68, 1185, 1197, 1186, 68, 1189, 1200, 68, 68,
- 1191, 68, 68, 68, 1192, 1198, 1201, 1199, 68, 1202,
- 1194, 1203, 1208, 1196, 1195, 68, 68, 1207, 1204, 68,
- 1197, 68, 1205, 1209, 68, 68, 1206, 1211, 1213, 1214,
- 68, 1210, 1198, 68, 1199, 68, 1202, 68, 1203, 68,
-
- 68, 68, 1215, 1212, 1207, 1204, 1217, 1216, 1220, 1205,
- 1209, 68, 68, 1206, 68, 68, 68, 1218, 1210, 1219,
- 1221, 1222, 1225, 1223, 68, 1224, 1226, 68, 68, 1215,
- 1212, 1227, 68, 1217, 1216, 1220, 1228, 68, 1229, 68,
- 1231, 68, 1230, 68, 1218, 68, 1219, 1221, 1222, 68,
- 1223, 1232, 1224, 68, 1233, 68, 1234, 1240, 1235, 1342,
- 1236, 1237, 68, 68, 68, 68, 1242, 1231, 68, 1230,
- 1247, 1241, 1238, 1243, 68, 68, 68, 1245, 1232, 68,
- 68, 1233, 1239, 1234, 68, 1235, 68, 1236, 1237, 68,
- 68, 1244, 68, 68, 1246, 68, 1248, 68, 1241, 1238,
-
- 1243, 1249, 1250, 68, 1245, 1251, 1252, 1253, 68, 1239,
- 1255, 1254, 1256, 68, 1342, 1258, 68, 1257, 1244, 1262,
- 1342, 1246, 1259, 1248, 68, 1264, 68, 68, 1249, 1250,
- 68, 1260, 68, 68, 1253, 1261, 68, 1263, 1254, 68,
- 68, 68, 1258, 68, 1257, 68, 1262, 68, 68, 1259,
- 68, 1267, 1264, 1265, 1266, 68, 1268, 1270, 1260, 1271,
- 68, 1269, 1261, 68, 1263, 1342, 68, 1272, 1276, 68,
- 68, 1273, 1275, 1274, 1277, 1342, 1278, 1342, 1267, 1279,
- 1265, 1266, 1280, 1268, 1270, 68, 68, 68, 1269, 68,
- 68, 68, 1281, 1342, 1272, 1276, 68, 68, 1273, 1275,
-
- 1274, 1277, 68, 1278, 68, 1282, 1279, 1284, 1283, 1280,
- 68, 1285, 1286, 68, 1287, 1289, 1292, 1288, 1291, 1281,
- 68, 1294, 68, 68, 1290, 68, 68, 1293, 1297, 68,
- 1298, 1342, 1282, 1295, 68, 1283, 68, 68, 1285, 1286,
- 68, 1287, 1289, 68, 1288, 1291, 1300, 1296, 68, 68,
- 1299, 1290, 68, 1302, 1293, 68, 1301, 68, 68, 1304,
- 1295, 68, 1305, 68, 1303, 1306, 1307, 1308, 1309, 1310,
- 68, 1312, 1314, 1300, 1296, 1311, 1342, 1299, 68, 68,
- 68, 1313, 1315, 1301, 1316, 1317, 68, 1321, 68, 1305,
- 1323, 1303, 1306, 1307, 68, 68, 68, 68, 68, 68,
-
- 1318, 1319, 1311, 68, 68, 1325, 1320, 68, 1313, 1315,
- 1327, 1316, 68, 68, 68, 1322, 1324, 68, 1326, 68,
- 1328, 1329, 68, 68, 1330, 1331, 1332, 1318, 1319, 1333,
- 68, 1334, 68, 1320, 1336, 1342, 1339, 1327, 68, 68,
- 1342, 68, 1322, 1324, 1337, 1326, 1341, 68, 68, 68,
- 1335, 68, 68, 1332, 68, 68, 1333, 68, 1334, 1340,
- 1338, 68, 68, 1339, 1342, 1342, 1342, 68, 1342, 1342,
- 1342, 1337, 68, 68, 1342, 1342, 1342, 1335, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1340, 1338, 40, 40,
- 40, 40, 40, 40, 40, 45, 45, 45, 45, 45,
-
- 45, 45, 50, 50, 50, 50, 50, 50, 50, 56,
- 56, 56, 56, 56, 56, 56, 61, 61, 61, 61,
- 61, 61, 61, 71, 71, 1342, 71, 71, 71, 71,
- 120, 120, 1342, 1342, 1342, 120, 120, 122, 122, 1342,
- 1342, 122, 1342, 122, 124, 1342, 1342, 1342, 1342, 1342,
- 124, 127, 127, 1342, 1342, 1342, 127, 127, 129, 1342,
- 1342, 1342, 1342, 1342, 129, 131, 131, 1342, 131, 131,
- 131, 131, 72, 72, 1342, 72, 72, 72, 72, 13,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+ 14, 18, 20, 21, 14, 22, 23, 24, 25, 14,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 14,
+ 35, 36, 37, 38, 39, 14, 14, 14, 14, 41,
+ 42, 43, 41, 42, 43, 122, 46, 47, 122, 44,
+ 48, 69, 44, 46, 47, 70, 49, 48, 57, 58,
+ 59, 68, 68, 49, 51, 52, 53, 54, 60, 18,
+ 57, 58, 59, 120, 120, 55, 51, 52, 53, 54,
+ 60, 18, 68, 101, 183, 74, 75, 55, 15, 16,
+ 17, 62, 63, 64, 67, 67, 68, 67, 67, 65,
+
+ 67, 93, 68, 76, 68, 67, 84, 68, 66, 15,
+ 16, 17, 62, 63, 64, 68, 68, 77, 134, 86,
+ 65, 69, 92, 130, 78, 70, 85, 68, 87, 66,
+ 72, 79, 72, 72, 68, 72, 88, 133, 68, 80,
+ 72, 73, 89, 81, 68, 90, 82, 68, 68, 83,
+ 68, 98, 91, 150, 68, 99, 95, 127, 127, 94,
+ 68, 68, 96, 102, 137, 106, 97, 68, 68, 103,
+ 68, 100, 104, 109, 135, 107, 68, 68, 108, 105,
+ 68, 68, 113, 110, 114, 138, 130, 111, 112, 68,
+ 116, 68, 118, 149, 139, 117, 119, 136, 124, 115,
+
+ 124, 124, 72, 124, 72, 72, 129, 72, 129, 129,
+ 68, 129, 67, 132, 67, 67, 68, 67, 68, 68,
+ 68, 68, 67, 72, 143, 72, 72, 68, 72, 68,
+ 140, 68, 142, 72, 73, 145, 146, 141, 147, 68,
+ 68, 68, 144, 152, 68, 148, 153, 68, 68, 156,
+ 155, 158, 68, 151, 163, 159, 161, 68, 68, 68,
+ 154, 160, 68, 68, 162, 164, 68, 167, 68, 157,
+ 68, 68, 165, 169, 68, 68, 176, 170, 68, 68,
+ 68, 68, 166, 68, 168, 68, 173, 172, 68, 178,
+ 171, 177, 68, 68, 174, 68, 175, 184, 180, 181,
+
+ 120, 120, 127, 127, 122, 185, 182, 122, 130, 179,
+ 130, 187, 124, 186, 124, 124, 129, 124, 129, 129,
+ 72, 129, 72, 72, 68, 72, 68, 189, 68, 188,
+ 68, 132, 68, 68, 194, 68, 191, 196, 68, 68,
+ 195, 190, 68, 68, 202, 192, 68, 68, 68, 68,
+ 68, 204, 206, 193, 68, 207, 68, 203, 197, 68,
+ 68, 213, 68, 198, 209, 68, 216, 68, 199, 68,
+ 205, 68, 128, 208, 200, 201, 218, 210, 212, 68,
+ 211, 68, 214, 215, 68, 217, 222, 219, 220, 68,
+ 221, 68, 224, 225, 223, 68, 68, 68, 68, 68,
+
+ 68, 68, 226, 68, 68, 227, 229, 68, 68, 68,
+ 68, 231, 238, 234, 68, 68, 228, 68, 68, 232,
+ 240, 242, 241, 230, 68, 245, 68, 233, 236, 237,
+ 68, 235, 68, 244, 239, 247, 68, 130, 248, 68,
+ 68, 253, 68, 243, 68, 68, 68, 68, 246, 250,
+ 252, 68, 254, 68, 258, 249, 68, 259, 251, 255,
+ 68, 257, 68, 256, 68, 260, 68, 68, 266, 263,
+ 68, 264, 68, 68, 68, 268, 261, 262, 68, 265,
+ 270, 68, 68, 269, 68, 68, 267, 68, 275, 68,
+ 68, 68, 278, 68, 68, 68, 279, 68, 68, 68,
+
+ 272, 271, 274, 277, 68, 273, 280, 283, 276, 288,
+ 68, 285, 281, 68, 68, 282, 68, 284, 286, 287,
+ 68, 68, 68, 289, 294, 68, 295, 68, 296, 292,
+ 290, 293, 68, 291, 68, 299, 68, 68, 68, 68,
+ 68, 302, 301, 68, 308, 68, 68, 297, 68, 68,
+ 309, 68, 68, 303, 298, 307, 300, 68, 68, 304,
+ 313, 68, 305, 68, 306, 130, 312, 68, 68, 310,
+ 324, 311, 315, 126, 68, 68, 314, 68, 323, 316,
+ 317, 68, 327, 329, 68, 68, 325, 326, 68, 318,
+ 68, 319, 320, 321, 328, 330, 322, 68, 68, 331,
+
+ 332, 333, 335, 68, 334, 336, 337, 68, 68, 68,
+ 68, 342, 68, 68, 68, 125, 343, 68, 338, 339,
+ 68, 68, 68, 340, 341, 350, 346, 349, 345, 348,
+ 352, 344, 68, 68, 68, 68, 68, 68, 354, 347,
+ 353, 351, 68, 356, 68, 357, 68, 68, 68, 355,
+ 68, 68, 361, 359, 68, 68, 68, 364, 358, 360,
+ 362, 68, 365, 68, 68, 68, 369, 363, 68, 366,
+ 68, 367, 68, 368, 68, 375, 68, 373, 68, 68,
+ 68, 68, 374, 378, 372, 370, 68, 68, 371, 68,
+ 68, 380, 68, 68, 376, 68, 379, 390, 68, 393,
+
+ 377, 68, 68, 381, 68, 395, 389, 391, 382, 68,
+ 383, 68, 388, 392, 68, 384, 396, 385, 68, 68,
+ 394, 68, 68, 397, 68, 386, 401, 68, 130, 398,
+ 68, 402, 405, 406, 68, 387, 68, 399, 68, 410,
+ 68, 400, 404, 403, 68, 68, 407, 68, 408, 409,
+ 68, 68, 68, 414, 416, 68, 411, 412, 417, 68,
+ 418, 68, 413, 123, 415, 68, 419, 68, 420, 68,
+ 421, 68, 425, 422, 68, 68, 423, 68, 424, 68,
+ 68, 428, 429, 426, 68, 427, 68, 68, 68, 430,
+ 68, 68, 435, 432, 436, 68, 68, 437, 433, 68,
+
+ 431, 68, 434, 68, 438, 68, 68, 439, 442, 68,
+ 441, 443, 445, 68, 450, 68, 68, 68, 447, 446,
+ 68, 444, 68, 448, 68, 68, 68, 449, 453, 440,
+ 451, 452, 68, 458, 455, 457, 68, 454, 456, 68,
+ 68, 68, 461, 68, 459, 463, 462, 68, 68, 68,
+ 464, 68, 68, 68, 465, 68, 68, 469, 68, 460,
+ 68, 474, 68, 68, 470, 121, 68, 466, 68, 476,
+ 467, 471, 468, 68, 68, 473, 472, 477, 68, 478,
+ 68, 475, 480, 68, 68, 68, 68, 68, 68, 483,
+ 482, 485, 484, 481, 479, 68, 68, 489, 68, 130,
+
+ 486, 68, 68, 488, 491, 487, 68, 68, 497, 492,
+ 68, 493, 490, 68, 68, 495, 68, 68, 68, 502,
+ 498, 68, 494, 496, 506, 500, 68, 68, 499, 68,
+ 503, 505, 504, 501, 68, 68, 507, 68, 508, 68,
+ 513, 509, 68, 517, 68, 516, 510, 68, 68, 519,
+ 68, 68, 511, 512, 518, 514, 68, 521, 68, 68,
+ 68, 522, 68, 526, 515, 520, 68, 68, 525, 68,
+ 531, 523, 530, 68, 529, 68, 68, 68, 524, 532,
+ 68, 527, 68, 533, 68, 528, 68, 68, 534, 68,
+ 535, 537, 539, 68, 538, 541, 68, 540, 68, 68,
+
+ 68, 543, 536, 68, 545, 68, 68, 68, 68, 547,
+ 68, 68, 68, 544, 68, 542, 68, 548, 68, 68,
+ 546, 68, 555, 554, 68, 68, 68, 560, 549, 550,
+ 551, 68, 553, 552, 556, 558, 563, 68, 557, 559,
+ 68, 68, 68, 68, 561, 562, 564, 68, 567, 68,
+ 569, 68, 566, 570, 571, 68, 565, 68, 68, 574,
+ 68, 576, 68, 68, 68, 577, 130, 68, 568, 68,
+ 573, 579, 68, 572, 68, 68, 68, 68, 578, 68,
+ 575, 588, 68, 68, 68, 595, 68, 68, 580, 582,
+ 68, 590, 594, 591, 68, 602, 581, 68, 593, 589,
+
+ 583, 601, 584, 592, 68, 596, 585, 68, 586, 68,
+ 597, 68, 598, 587, 600, 68, 603, 68, 68, 605,
+ 68, 606, 604, 608, 68, 68, 610, 68, 68, 609,
+ 599, 68, 68, 614, 68, 611, 68, 607, 68, 612,
+ 613, 68, 68, 615, 68, 621, 617, 68, 68, 68,
+ 68, 68, 68, 620, 624, 616, 619, 625, 618, 68,
+ 627, 68, 628, 623, 626, 622, 629, 68, 630, 68,
+ 634, 68, 631, 68, 68, 632, 68, 68, 633, 68,
+ 637, 68, 68, 68, 635, 68, 639, 640, 68, 641,
+ 68, 642, 643, 68, 68, 68, 636, 644, 646, 68,
+
+ 638, 68, 68, 130, 68, 68, 68, 68, 645, 651,
+ 652, 68, 647, 68, 654, 650, 68, 656, 648, 68,
+ 657, 649, 68, 68, 653, 68, 660, 655, 658, 659,
+ 68, 68, 663, 661, 68, 662, 68, 68, 68, 68,
+ 68, 68, 671, 665, 68, 672, 68, 68, 68, 664,
+ 68, 673, 68, 668, 68, 669, 666, 676, 674, 68,
+ 68, 670, 675, 667, 679, 68, 68, 68, 68, 677,
+ 68, 68, 682, 68, 678, 681, 684, 686, 680, 68,
+ 68, 68, 68, 68, 68, 68, 68, 683, 687, 685,
+ 68, 68, 694, 68, 690, 688, 689, 68, 68, 698,
+
+ 68, 700, 691, 693, 68, 692, 695, 697, 68, 68,
+ 696, 699, 703, 702, 68, 68, 704, 68, 735, 707,
+ 701, 68, 705, 706, 68, 68, 708, 68, 68, 68,
+ 711, 68, 709, 710, 68, 713, 712, 715, 716, 68,
+ 68, 68, 68, 68, 717, 718, 68, 68, 68, 719,
+ 68, 724, 714, 68, 720, 68, 721, 723, 722, 68,
+ 68, 68, 68, 725, 733, 68, 68, 727, 726, 729,
+ 734, 68, 68, 730, 728, 738, 68, 736, 731, 68,
+ 740, 68, 68, 68, 68, 737, 68, 732, 741, 742,
+ 68, 744, 745, 68, 68, 68, 68, 68, 746, 739,
+
+ 750, 748, 743, 749, 751, 68, 68, 68, 753, 68,
+ 68, 752, 747, 68, 68, 68, 754, 757, 68, 760,
+ 759, 68, 68, 68, 68, 756, 68, 68, 764, 755,
+ 68, 68, 769, 68, 68, 758, 770, 68, 68, 68,
+ 68, 761, 762, 765, 763, 773, 68, 68, 68, 767,
+ 68, 776, 68, 68, 68, 766, 768, 772, 775, 68,
+ 771, 783, 68, 68, 774, 68, 777, 779, 782, 778,
+ 784, 781, 68, 68, 780, 68, 68, 68, 68, 791,
+ 785, 786, 788, 790, 68, 792, 68, 793, 787, 68,
+ 68, 795, 68, 797, 794, 68, 789, 798, 68, 799,
+
+ 68, 68, 68, 68, 68, 804, 68, 68, 68, 803,
+ 68, 796, 68, 68, 800, 68, 68, 812, 68, 68,
+ 801, 802, 814, 805, 813, 806, 807, 808, 811, 809,
+ 68, 68, 68, 810, 818, 68, 68, 68, 68, 822,
+ 816, 819, 820, 815, 68, 68, 68, 824, 825, 68,
+ 823, 68, 817, 68, 826, 68, 68, 821, 827, 68,
+ 68, 68, 829, 828, 830, 68, 834, 68, 68, 68,
+ 832, 833, 68, 836, 68, 68, 831, 68, 68, 839,
+ 68, 68, 68, 841, 68, 838, 68, 844, 835, 68,
+ 68, 837, 848, 68, 68, 843, 840, 68, 842, 849,
+
+ 850, 68, 845, 68, 846, 68, 68, 853, 854, 847,
+ 68, 852, 68, 851, 857, 856, 68, 858, 68, 68,
+ 68, 68, 68, 68, 68, 68, 862, 68, 859, 864,
+ 866, 855, 865, 68, 68, 68, 68, 860, 68, 873,
+ 861, 867, 68, 68, 68, 863, 68, 868, 871, 870,
+ 68, 872, 68, 68, 869, 68, 883, 68, 68, 878,
+ 882, 68, 874, 875, 68, 877, 879, 876, 68, 880,
+ 68, 881, 68, 885, 884, 890, 891, 68, 68, 887,
+ 68, 889, 888, 68, 68, 68, 68, 886, 68, 68,
+ 898, 68, 68, 128, 68, 901, 893, 68, 892, 895,
+
+ 68, 68, 894, 903, 68, 909, 897, 899, 68, 68,
+ 900, 896, 902, 905, 906, 904, 68, 910, 68, 907,
+ 68, 68, 68, 68, 68, 908, 68, 68, 68, 68,
+ 68, 916, 68, 917, 918, 919, 68, 68, 911, 913,
+ 912, 920, 914, 923, 68, 921, 915, 68, 68, 925,
+ 927, 922, 68, 68, 68, 68, 68, 931, 68, 68,
+ 926, 924, 930, 933, 928, 932, 68, 934, 68, 935,
+ 68, 929, 68, 68, 68, 939, 68, 941, 68, 943,
+ 936, 942, 68, 68, 68, 945, 944, 68, 68, 937,
+ 68, 947, 938, 940, 949, 68, 68, 68, 950, 951,
+
+ 68, 68, 68, 68, 68, 946, 68, 959, 68, 68,
+ 68, 961, 952, 948, 953, 68, 68, 68, 68, 954,
+ 68, 955, 956, 957, 963, 965, 68, 958, 68, 966,
+ 68, 968, 964, 68, 68, 960, 962, 972, 68, 971,
+ 68, 68, 68, 975, 68, 68, 976, 974, 68, 970,
+ 68, 68, 967, 68, 969, 68, 68, 977, 973, 986,
+ 68, 982, 68, 68, 68, 978, 979, 984, 981, 980,
+ 989, 983, 985, 990, 68, 68, 991, 993, 988, 68,
+ 992, 68, 68, 995, 987, 68, 68, 68, 68, 68,
+ 997, 994, 68, 1000, 68, 1002, 68, 996, 68, 998,
+
+ 68, 1008, 68, 68, 1003, 1004, 1005, 68, 1006, 68,
+ 68, 68, 68, 68, 999, 1011, 1001, 1007, 1009, 1010,
+ 68, 1012, 1017, 68, 68, 68, 68, 68, 68, 1021,
+ 1019, 1014, 1013, 1015, 1016, 68, 68, 68, 1022, 68,
+ 1018, 1023, 68, 68, 1020, 68, 1024, 68, 1026, 68,
+ 68, 68, 68, 68, 68, 68, 1034, 1025, 1033, 68,
+ 1031, 1028, 1029, 1030, 1027, 68, 1038, 68, 1036, 68,
+ 68, 68, 1032, 1035, 68, 1040, 1041, 68, 68, 1037,
+ 68, 1046, 1042, 1043, 68, 68, 68, 68, 126, 1044,
+ 1047, 1050, 68, 68, 68, 1039, 1054, 68, 68, 68,
+
+ 1045, 1049, 68, 1048, 68, 1051, 1052, 1055, 68, 1053,
+ 68, 1056, 68, 1057, 68, 1058, 68, 1059, 68, 68,
+ 1062, 68, 1060, 68, 1063, 1066, 68, 68, 1061, 68,
+ 1065, 1070, 1067, 1068, 68, 68, 1073, 68, 1069, 68,
+ 1071, 1064, 1072, 68, 1076, 68, 68, 1074, 68, 1077,
+ 68, 68, 1075, 68, 68, 1079, 68, 1080, 1078, 1082,
+ 68, 68, 68, 68, 68, 68, 1081, 1090, 68, 68,
+ 68, 68, 1091, 68, 68, 1130, 1088, 68, 1094, 1084,
+ 68, 1086, 1083, 1092, 1087, 1085, 1089, 1093, 1095, 68,
+ 1096, 68, 1100, 1097, 1098, 68, 1099, 68, 1101, 68,
+
+ 1102, 68, 68, 68, 1105, 68, 68, 68, 1104, 1107,
+ 68, 68, 68, 1109, 68, 1110, 68, 1111, 1113, 68,
+ 68, 1103, 1115, 68, 68, 1106, 1116, 68, 68, 1108,
+ 68, 1118, 1112, 1114, 68, 68, 1120, 1119, 68, 1121,
+ 68, 68, 68, 68, 68, 1129, 1117, 1125, 68, 68,
+ 68, 1123, 1127, 1128, 68, 1133, 1126, 1134, 1132, 68,
+ 1122, 1124, 68, 68, 1135, 68, 68, 68, 1131, 1139,
+ 68, 1142, 1136, 68, 1137, 1140, 1143, 1138, 1141, 68,
+ 1144, 68, 68, 68, 68, 68, 68, 1145, 1147, 1150,
+ 68, 1149, 68, 68, 68, 68, 1151, 1155, 1153, 68,
+
+ 68, 1156, 68, 1146, 68, 1148, 68, 1154, 1152, 1157,
+ 68, 1158, 1159, 68, 1160, 68, 1161, 68, 1162, 68,
+ 1163, 68, 68, 68, 1164, 1166, 68, 1165, 1167, 68,
+ 68, 1168, 68, 1169, 68, 1170, 1171, 68, 1172, 68,
+ 1173, 68, 68, 68, 1174, 68, 68, 1180, 68, 68,
+ 68, 68, 1175, 68, 1176, 1177, 68, 1178, 1181, 68,
+ 68, 68, 68, 68, 1190, 68, 1179, 1188, 1189, 1184,
+ 68, 1183, 68, 1186, 68, 1192, 1182, 1185, 1187, 1191,
+ 1193, 68, 68, 68, 68, 1195, 68, 1200, 68, 1201,
+ 1196, 1194, 68, 68, 68, 68, 68, 68, 68, 1207,
+
+ 1198, 1197, 1208, 68, 68, 1199, 68, 1202, 1211, 68,
+ 68, 68, 1203, 1213, 68, 1204, 1205, 68, 1206, 1209,
+ 1214, 68, 68, 1215, 1210, 68, 1217, 68, 68, 1212,
+ 1218, 68, 1219, 1216, 68, 68, 1220, 68, 125, 1222,
+ 1223, 1225, 68, 1226, 68, 1227, 1221, 1228, 68, 68,
+ 68, 68, 1224, 1229, 68, 68, 1230, 68, 1232, 68,
+ 68, 1231, 68, 1236, 68, 68, 68, 68, 1234, 1235,
+ 1233, 1240, 68, 1237, 1242, 68, 1241, 68, 68, 68,
+ 68, 68, 1244, 123, 1238, 1239, 1243, 68, 1245, 1247,
+ 68, 68, 1249, 1246, 68, 1251, 68, 1250, 1252, 68,
+
+ 68, 1248, 1255, 1256, 68, 1253, 68, 68, 68, 68,
+ 1257, 68, 68, 68, 1254, 1258, 68, 1262, 68, 1260,
+ 68, 68, 68, 1264, 68, 68, 68, 1259, 1269, 1263,
+ 68, 1261, 68, 1267, 1271, 68, 1272, 68, 68, 1273,
+ 1265, 68, 1268, 68, 1270, 68, 1274, 1266, 1277, 68,
+ 1275, 68, 1278, 68, 1279, 68, 68, 68, 1280, 1284,
+ 68, 68, 68, 68, 1281, 68, 1276, 68, 1282, 68,
+ 1285, 1283, 68, 1286, 1289, 1288, 1292, 68, 68, 1294,
+ 68, 1287, 68, 1293, 1291, 1297, 68, 1298, 68, 1290,
+ 68, 68, 1295, 68, 1302, 68, 68, 1304, 68, 68,
+
+ 68, 68, 68, 1300, 1296, 121, 1307, 1311, 1303, 1299,
+ 1308, 68, 68, 1301, 1306, 1309, 68, 1315, 1305, 1310,
+ 68, 1312, 68, 68, 1313, 1314, 68, 68, 1317, 68,
+ 68, 68, 68, 1321, 68, 1316, 1318, 1319, 68, 1323,
+ 68, 68, 1322, 1325, 68, 1324, 68, 68, 1328, 68,
+ 1320, 1329, 68, 1330, 68, 1331, 68, 68, 68, 1333,
+ 68, 1326, 68, 68, 1334, 1327, 1336, 68, 68, 1332,
+ 68, 68, 1337, 1341, 68, 68, 1342, 1342, 1342, 1342,
+ 1342, 1342, 1335, 1338, 1339, 1342, 1342, 1342, 1342, 1342,
+ 1340, 40, 40, 40, 40, 40, 40, 40, 45, 45,
+
+ 45, 45, 45, 45, 45, 50, 50, 50, 50, 50,
+ 50, 50, 56, 56, 56, 56, 56, 56, 56, 61,
+ 61, 61, 61, 61, 61, 61, 71, 71, 1342, 71,
+ 71, 71, 71, 120, 120, 1342, 1342, 1342, 120, 120,
+ 122, 122, 1342, 1342, 122, 1342, 122, 124, 1342, 1342,
+ 1342, 1342, 1342, 124, 127, 127, 1342, 1342, 1342, 127,
+ 127, 129, 1342, 1342, 1342, 1342, 1342, 129, 131, 131,
+ 1342, 131, 131, 131, 131, 72, 72, 1342, 72, 72,
+ 72, 72, 13, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342
+ 1342, 1342
} ;
-static yyconst flex_int16_t yy_chk[3946] =
+static yyconst flex_int16_t yy_chk[2723] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 3, 3, 4, 4,
- 4, 5, 5, 6, 6, 5, 24, 6, 7, 7,
- 7, 7, 1348, 7, 8, 8, 8, 8, 24, 8,
- 9, 9, 9, 10, 10, 10, 15, 44, 44, 49,
-
- 15, 3, 49, 24, 4, 60, 60, 5, 19, 6,
- 19, 19, 69, 19, 577, 7, 69, 39, 19, 39,
- 39, 8, 39, 23, 20, 20, 9, 39, 129, 10,
- 11, 11, 11, 11, 11, 11, 12, 12, 12, 12,
- 12, 12, 20, 23, 110, 19, 23, 27, 20, 11,
- 23, 20, 20, 127, 21, 12, 22, 121, 121, 27,
- 22, 21, 26, 22, 28, 26, 22, 11, 21, 20,
- 23, 25, 26, 12, 27, 110, 11, 126, 22, 25,
- 21, 21, 12, 22, 29, 26, 28, 22, 21, 26,
- 22, 28, 26, 22, 30, 21, 29, 25, 25, 26,
-
- 30, 124, 123, 31, 30, 123, 25, 31, 32, 65,
- 33, 29, 30, 107, 32, 55, 33, 55, 55, 33,
- 55, 30, 65, 31, 122, 107, 33, 30, 33, 31,
- 31, 30, 34, 74, 31, 32, 65, 33, 75, 37,
- 107, 35, 34, 33, 37, 34, 33, 36, 89, 36,
- 31, 35, 37, 33, 34, 35, 35, 74, 38, 34,
- 74, 75, 38, 35, 36, 75, 37, 120, 35, 34,
- 89, 37, 34, 36, 36, 89, 36, 67, 35, 76,
- 128, 128, 35, 35, 38, 38, 76, 77, 61, 38,
- 63, 36, 63, 63, 66, 63, 66, 66, 68, 66,
-
- 68, 68, 71, 68, 71, 71, 76, 71, 68, 78,
- 79, 77, 71, 80, 77, 81, 82, 83, 78, 84,
- 56, 82, 85, 79, 81, 135, 86, 63, 80, 85,
- 51, 88, 84, 92, 83, 86, 78, 79, 87, 71,
- 80, 92, 81, 82, 90, 571, 84, 87, 83, 85,
- 93, 95, 91, 86, 88, 91, 135, 90, 88, 94,
- 92, 83, 96, 94, 95, 87, 98, 97, 99, 91,
- 93, 90, 93, 50, 101, 571, 91, 93, 95, 91,
- 98, 101, 91, 94, 100, 96, 94, 97, 99, 96,
- 94, 102, 106, 98, 97, 99, 91, 93, 100, 103,
-
- 104, 101, 105, 109, 104, 108, 106, 113, 103, 105,
- 111, 100, 109, 108, 102, 112, 113, 114, 102, 106,
- 116, 117, 104, 118, 116, 111, 103, 104, 114, 105,
- 109, 104, 108, 115, 113, 112, 119, 111, 118, 115,
- 45, 112, 112, 117, 114, 119, 133, 116, 117, 125,
- 118, 125, 125, 130, 125, 130, 130, 134, 130, 136,
- 115, 137, 112, 119, 131, 138, 131, 131, 139, 131,
- 133, 136, 140, 133, 40, 139, 142, 138, 141, 134,
- 137, 14, 13, 144, 134, 145, 136, 147, 137, 146,
- 0, 147, 138, 145, 148, 139, 0, 0, 0, 0,
-
- 141, 131, 150, 140, 0, 141, 149, 142, 143, 144,
- 144, 146, 145, 143, 147, 150, 146, 148, 143, 152,
- 151, 148, 152, 155, 143, 143, 154, 153, 149, 150,
- 155, 143, 151, 149, 152, 143, 153, 157, 158, 162,
- 143, 164, 160, 165, 156, 143, 152, 151, 154, 152,
- 155, 143, 143, 154, 153, 156, 159, 161, 163, 166,
- 160, 167, 170, 161, 158, 158, 159, 170, 157, 160,
- 162, 156, 164, 169, 165, 174, 168, 171, 172, 166,
- 163, 177, 167, 168, 161, 163, 166, 159, 167, 170,
- 172, 173, 178, 159, 169, 179, 171, 174, 173, 178,
-
- 169, 175, 174, 168, 171, 172, 175, 176, 176, 180,
- 181, 183, 177, 182, 185, 0, 176, 184, 173, 178,
- 179, 182, 179, 190, 188, 186, 0, 0, 175, 180,
- 189, 187, 188, 191, 176, 176, 180, 183, 183, 184,
- 182, 181, 186, 195, 192, 185, 187, 196, 184, 189,
- 186, 188, 186, 193, 190, 191, 192, 189, 187, 194,
- 191, 197, 193, 202, 198, 199, 184, 195, 0, 186,
- 195, 192, 200, 196, 196, 198, 203, 199, 194, 201,
- 193, 202, 204, 207, 205, 223, 194, 197, 197, 209,
- 202, 198, 199, 206, 208, 204, 200, 210, 209, 200,
-
- 212, 208, 201, 210, 211, 215, 201, 203, 213, 204,
- 205, 205, 223, 214, 207, 206, 209, 213, 211, 216,
- 206, 208, 217, 219, 210, 0, 212, 212, 214, 218,
- 220, 211, 218, 221, 224, 213, 215, 217, 0, 218,
- 214, 219, 226, 216, 220, 0, 216, 228, 221, 217,
- 219, 222, 222, 227, 226, 229, 218, 220, 224, 218,
- 221, 224, 225, 233, 230, 225, 0, 0, 232, 226,
- 240, 227, 225, 231, 228, 232, 222, 229, 222, 222,
- 227, 234, 229, 235, 0, 231, 237, 236, 234, 225,
- 230, 230, 225, 238, 233, 232, 238, 239, 238, 237,
-
- 231, 240, 0, 242, 238, 235, 241, 0, 234, 242,
- 235, 236, 243, 237, 236, 239, 244, 0, 245, 243,
- 238, 250, 246, 238, 239, 238, 248, 250, 241, 244,
- 242, 0, 249, 241, 245, 246, 0, 254, 248, 243,
- 253, 0, 245, 244, 251, 245, 252, 253, 250, 246,
- 249, 0, 251, 248, 256, 0, 259, 255, 252, 249,
- 0, 245, 247, 247, 255, 257, 256, 253, 254, 259,
- 0, 251, 247, 252, 247, 247, 247, 257, 258, 247,
- 263, 256, 260, 259, 255, 258, 264, 247, 262, 247,
- 247, 263, 257, 261, 261, 262, 266, 264, 265, 247,
-
- 0, 247, 247, 247, 260, 258, 247, 263, 267, 260,
- 268, 265, 271, 264, 269, 262, 270, 275, 272, 268,
- 0, 266, 261, 266, 273, 265, 274, 269, 276, 270,
- 271, 267, 277, 0, 270, 267, 278, 268, 279, 271,
- 272, 269, 280, 270, 274, 272, 0, 273, 275, 276,
- 278, 273, 281, 274, 277, 276, 270, 282, 281, 277,
- 284, 283, 0, 278, 279, 279, 286, 285, 0, 287,
- 0, 289, 286, 280, 290, 282, 283, 293, 297, 281,
- 290, 291, 300, 295, 282, 292, 284, 284, 283, 285,
- 295, 297, 293, 286, 285, 287, 287, 289, 289, 296,
-
- 291, 290, 298, 292, 293, 297, 296, 301, 291, 299,
- 295, 0, 292, 300, 302, 303, 301, 305, 304, 302,
- 306, 310, 0, 0, 298, 307, 296, 0, 299, 298,
- 304, 306, 310, 307, 301, 326, 299, 313, 303, 305,
- 311, 302, 303, 309, 305, 304, 315, 306, 310, 311,
- 309, 0, 307, 308, 312, 314, 0, 314, 308, 319,
- 308, 312, 316, 313, 313, 318, 326, 319, 308, 317,
- 309, 311, 315, 315, 316, 321, 311, 318, 308, 308,
- 308, 312, 314, 320, 317, 308, 319, 308, 320, 316,
- 322, 323, 318, 325, 324, 308, 317, 321, 327, 323,
-
- 328, 329, 321, 330, 331, 308, 324, 332, 322, 328,
- 320, 333, 334, 327, 336, 329, 325, 322, 323, 331,
- 325, 324, 332, 333, 337, 327, 335, 328, 329, 338,
- 330, 331, 339, 341, 332, 340, 334, 345, 333, 334,
- 335, 336, 342, 343, 344, 0, 0, 349, 342, 346,
- 348, 337, 347, 335, 0, 0, 0, 348, 350, 339,
- 338, 354, 340, 353, 341, 343, 355, 344, 345, 342,
- 343, 344, 346, 351, 347, 356, 346, 348, 349, 347,
- 350, 357, 352, 358, 355, 350, 351, 352, 362, 353,
- 353, 352, 354, 355, 360, 0, 363, 359, 361, 356,
-
- 351, 373, 356, 357, 357, 358, 352, 364, 357, 352,
- 358, 359, 365, 361, 352, 366, 360, 363, 352, 362,
- 367, 360, 368, 363, 359, 361, 369, 370, 371, 367,
- 357, 364, 373, 0, 364, 368, 365, 366, 374, 365,
- 372, 376, 366, 375, 372, 376, 0, 367, 369, 368,
- 371, 370, 377, 369, 370, 371, 374, 378, 375, 379,
- 380, 0, 0, 384, 385, 374, 381, 375, 379, 380,
- 375, 372, 376, 382, 381, 383, 385, 377, 388, 377,
- 382, 384, 378, 386, 378, 375, 379, 380, 389, 387,
- 384, 385, 386, 381, 390, 391, 389, 392, 383, 394,
-
- 382, 387, 383, 393, 404, 397, 0, 394, 396, 388,
- 386, 395, 399, 398, 393, 389, 387, 404, 391, 392,
- 390, 390, 391, 400, 392, 395, 394, 397, 396, 402,
- 393, 404, 397, 398, 399, 396, 403, 401, 395, 399,
- 398, 408, 406, 405, 407, 400, 401, 408, 411, 402,
- 400, 409, 0, 412, 403, 414, 402, 0, 0, 409,
- 424, 415, 0, 403, 401, 405, 406, 407, 408, 406,
- 405, 407, 413, 415, 414, 418, 412, 409, 409, 411,
- 412, 413, 414, 421, 422, 418, 409, 426, 415, 423,
- 0, 424, 0, 428, 427, 428, 430, 0, 431, 413,
-
- 0, 421, 418, 427, 429, 422, 0, 0, 435, 426,
- 421, 422, 423, 432, 426, 0, 423, 425, 431, 425,
- 428, 427, 425, 430, 433, 431, 434, 425, 429, 438,
- 436, 429, 435, 425, 425, 435, 433, 436, 439, 432,
- 432, 442, 425, 443, 425, 444, 425, 437, 438, 425,
- 440, 433, 434, 434, 425, 437, 438, 436, 441, 445,
- 425, 425, 440, 442, 439, 439, 446, 441, 442, 447,
- 443, 448, 449, 450, 437, 454, 444, 440, 452, 477,
- 457, 449, 451, 445, 453, 441, 445, 446, 447, 455,
- 448, 459, 0, 446, 0, 450, 447, 455, 448, 449,
-
- 450, 458, 451, 453, 457, 452, 454, 457, 460, 451,
- 477, 453, 468, 461, 458, 465, 455, 459, 459, 463,
- 460, 461, 465, 464, 469, 463, 466, 467, 458, 464,
- 468, 466, 470, 0, 467, 460, 471, 461, 472, 468,
- 461, 470, 465, 474, 471, 473, 463, 469, 461, 479,
- 464, 469, 478, 466, 467, 475, 472, 479, 473, 470,
- 476, 481, 475, 471, 474, 472, 480, 485, 482, 484,
- 474, 483, 473, 476, 482, 478, 479, 486, 487, 478,
- 488, 480, 475, 481, 0, 490, 486, 476, 481, 489,
- 491, 485, 487, 480, 485, 482, 489, 483, 483, 493,
-
- 484, 492, 494, 495, 486, 487, 495, 496, 0, 498,
- 494, 488, 490, 492, 0, 500, 489, 491, 501, 499,
- 496, 499, 493, 504, 505, 503, 493, 500, 492, 494,
- 495, 501, 498, 502, 496, 497, 498, 497, 503, 502,
- 508, 497, 500, 497, 504, 501, 499, 507, 497, 0,
- 504, 506, 503, 508, 510, 505, 506, 509, 506, 497,
- 502, 515, 497, 512, 497, 511, 513, 508, 497, 507,
- 497, 518, 509, 516, 507, 497, 506, 506, 506, 513,
- 510, 510, 512, 506, 509, 506, 514, 511, 515, 520,
- 512, 519, 511, 513, 514, 521, 516, 520, 522, 523,
-
- 516, 525, 518, 506, 524, 529, 527, 526, 0, 521,
- 533, 528, 524, 514, 526, 519, 520, 523, 519, 527,
- 522, 531, 521, 525, 534, 522, 523, 532, 525, 528,
- 531, 524, 533, 527, 526, 535, 529, 533, 528, 532,
- 536, 538, 537, 540, 543, 0, 534, 540, 531, 541,
- 564, 534, 541, 542, 532, 546, 543, 535, 536, 544,
- 545, 546, 535, 547, 551, 0, 544, 536, 537, 537,
- 548, 543, 538, 549, 540, 541, 541, 542, 550, 541,
- 542, 564, 546, 552, 545, 547, 544, 545, 554, 553,
- 547, 551, 548, 555, 549, 556, 559, 548, 553, 550,
-
- 549, 552, 555, 556, 557, 550, 560, 558, 561, 563,
- 552, 557, 554, 562, 565, 554, 553, 561, 559, 567,
- 555, 558, 556, 559, 568, 563, 566, 0, 560, 569,
- 573, 557, 568, 560, 558, 561, 563, 562, 566, 570,
- 562, 572, 569, 579, 574, 565, 567, 575, 573, 575,
- 572, 568, 574, 566, 570, 579, 569, 573, 580, 578,
- 581, 582, 583, 584, 0, 580, 570, 585, 572, 587,
- 579, 574, 578, 586, 575, 588, 584, 589, 0, 590,
- 585, 587, 609, 591, 583, 580, 578, 588, 590, 583,
- 584, 581, 582, 592, 585, 586, 587, 593, 597, 594,
-
- 586, 591, 588, 595, 589, 593, 590, 598, 596, 603,
- 591, 595, 600, 609, 601, 592, 597, 599, 603, 598,
- 592, 594, 601, 617, 593, 597, 594, 600, 604, 599,
- 595, 596, 602, 605, 598, 596, 603, 610, 602, 600,
- 606, 601, 615, 607, 599, 605, 611, 606, 616, 604,
- 610, 612, 613, 614, 617, 604, 615, 614, 612, 602,
- 605, 607, 618, 619, 610, 611, 616, 606, 621, 615,
- 607, 620, 625, 611, 613, 616, 626, 622, 612, 613,
- 0, 0, 624, 623, 614, 619, 627, 0, 618, 618,
- 619, 624, 628, 620, 621, 621, 623, 0, 620, 622,
-
- 632, 630, 0, 625, 622, 634, 637, 626, 627, 624,
- 623, 629, 633, 627, 634, 628, 629, 630, 629, 628,
- 629, 635, 636, 632, 633, 637, 639, 632, 630, 629,
- 636, 638, 634, 637, 635, 639, 641, 642, 629, 633,
- 640, 644, 640, 629, 638, 629, 646, 629, 635, 636,
- 645, 647, 648, 639, 646, 649, 0, 651, 638, 648,
- 657, 650, 652, 641, 642, 644, 654, 640, 644, 652,
- 653, 656, 645, 646, 655, 658, 660, 645, 647, 648,
- 656, 657, 649, 650, 651, 654, 661, 657, 650, 652,
- 663, 662, 653, 654, 670, 658, 655, 653, 656, 666,
-
- 665, 655, 658, 667, 664, 668, 669, 660, 665, 671,
- 669, 673, 668, 662, 674, 666, 671, 661, 662, 678,
- 673, 663, 664, 678, 0, 670, 666, 665, 672, 689,
- 667, 664, 668, 669, 0, 672, 671, 675, 673, 677,
- 674, 674, 689, 676, 675, 676, 678, 680, 677, 681,
- 681, 680, 682, 683, 684, 672, 689, 0, 685, 686,
- 687, 682, 690, 684, 675, 685, 677, 0, 692, 687,
- 676, 0, 694, 693, 690, 683, 681, 698, 680, 682,
- 683, 684, 686, 688, 691, 685, 686, 687, 695, 690,
- 692, 688, 691, 693, 694, 692, 696, 695, 698, 694,
-
- 693, 697, 699, 700, 698, 701, 702, 703, 699, 714,
- 688, 691, 707, 697, 696, 695, 705, 708, 706, 709,
- 707, 708, 0, 696, 710, 700, 713, 711, 697, 699,
- 700, 706, 710, 703, 703, 711, 701, 702, 705, 707,
- 714, 712, 715, 705, 716, 706, 709, 713, 708, 712,
- 715, 710, 716, 713, 711, 717, 718, 719, 723, 720,
- 721, 0, 722, 717, 718, 720, 727, 724, 712, 715,
- 719, 716, 721, 727, 726, 728, 729, 725, 732, 737,
- 723, 736, 717, 718, 719, 723, 720, 721, 722, 722,
- 724, 725, 726, 727, 724, 730, 739, 735, 729, 731,
-
- 741, 726, 728, 729, 725, 743, 731, 736, 736, 732,
- 737, 744, 746, 745, 746, 0, 748, 749, 730, 735,
- 747, 766, 730, 739, 735, 745, 731, 741, 748, 743,
- 751, 752, 743, 753, 750, 774, 752, 744, 744, 746,
- 745, 750, 747, 748, 749, 754, 755, 747, 756, 753,
- 758, 759, 766, 760, 755, 761, 751, 751, 752, 758,
- 753, 750, 761, 764, 759, 765, 774, 762, 754, 763,
- 756, 0, 754, 755, 762, 756, 763, 758, 759, 760,
- 760, 769, 761, 771, 767, 768, 0, 765, 764, 773,
- 764, 767, 765, 772, 762, 772, 763, 775, 768, 777,
-
- 776, 0, 769, 779, 782, 771, 781, 777, 769, 776,
- 771, 767, 768, 773, 778, 780, 773, 783, 789, 780,
- 772, 778, 787, 775, 775, 779, 777, 776, 781, 784,
- 779, 782, 789, 781, 790, 787, 785, 788, 784, 783,
- 786, 778, 780, 785, 783, 789, 791, 786, 792, 787,
- 794, 793, 788, 791, 795, 792, 784, 793, 796, 797,
- 800, 796, 794, 785, 788, 790, 801, 786, 802, 807,
- 797, 803, 804, 791, 795, 792, 796, 794, 793, 802,
- 804, 795, 0, 806, 808, 796, 797, 800, 796, 803,
- 801, 805, 810, 801, 805, 802, 809, 819, 803, 804,
-
- 807, 806, 812, 809, 811, 813, 810, 813, 814, 805,
- 806, 808, 815, 811, 816, 812, 821, 814, 805, 810,
- 0, 805, 822, 809, 817, 816, 823, 820, 819, 812,
- 0, 811, 813, 817, 824, 814, 820, 0, 815, 815,
- 825, 816, 829, 822, 828, 831, 825, 821, 824, 822,
- 830, 817, 840, 831, 820, 832, 829, 823, 836, 830,
- 0, 824, 837, 828, 825, 833, 832, 825, 835, 829,
- 840, 828, 831, 825, 833, 835, 838, 830, 839, 840,
- 843, 836, 832, 841, 837, 836, 844, 841, 847, 837,
- 842, 845, 833, 846, 848, 835, 855, 851, 838, 844,
-
- 839, 850, 842, 838, 852, 839, 845, 843, 846, 848,
- 841, 853, 854, 844, 849, 859, 863, 842, 845, 847,
- 846, 848, 850, 849, 851, 857, 856, 855, 850, 853,
- 858, 852, 856, 857, 861, 862, 860, 858, 853, 854,
- 864, 849, 859, 860, 866, 867, 868, 863, 872, 869,
- 0, 869, 857, 856, 867, 870, 0, 858, 871, 877,
- 0, 861, 862, 860, 864, 877, 873, 864, 873, 878,
- 0, 874, 867, 873, 0, 866, 869, 868, 874, 872,
- 875, 873, 870, 876, 871, 871, 877, 875, 879, 879,
- 876, 880, 881, 873, 883, 873, 878, 884, 874, 881,
-
- 873, 888, 885, 887, 887, 886, 893, 875, 896, 884,
- 876, 892, 883, 889, 889, 879, 895, 880, 880, 881,
- 890, 883, 885, 886, 884, 0, 897, 888, 888, 885,
- 887, 890, 886, 892, 894, 896, 895, 893, 892, 898,
- 889, 894, 899, 895, 900, 909, 901, 890, 897, 899,
- 902, 903, 904, 897, 901, 906, 900, 898, 905, 907,
- 910, 894, 902, 905, 911, 907, 898, 908, 911, 899,
- 904, 900, 903, 901, 905, 912, 909, 902, 903, 904,
- 908, 913, 906, 914, 915, 905, 907, 910, 917, 916,
- 905, 918, 919, 918, 908, 911, 913, 920, 921, 915,
-
- 925, 924, 920, 917, 922, 926, 912, 933, 913, 927,
- 0, 915, 916, 928, 914, 917, 916, 929, 918, 922,
- 940, 930, 933, 919, 920, 924, 935, 925, 924, 921,
- 927, 922, 926, 936, 933, 928, 927, 935, 929, 930,
- 928, 937, 936, 938, 929, 943, 944, 940, 930, 946,
- 0, 948, 935, 935, 947, 945, 0, 0, 943, 937,
- 936, 938, 951, 950, 935, 945, 952, 953, 937, 951,
- 938, 954, 943, 953, 0, 946, 946, 944, 948, 947,
- 955, 947, 945, 950, 956, 957, 954, 960, 961, 951,
- 950, 962, 952, 952, 953, 955, 958, 957, 954, 956,
-
- 962, 963, 965, 958, 964, 966, 966, 955, 967, 960,
- 0, 956, 957, 961, 960, 961, 968, 964, 962, 963,
- 969, 973, 970, 958, 971, 0, 974, 972, 963, 965,
- 967, 964, 966, 971, 972, 967, 978, 976, 0, 996,
- 979, 968, 969, 968, 970, 976, 977, 969, 974, 970,
- 982, 971, 973, 974, 972, 979, 981, 980, 984, 977,
- 980, 983, 998, 978, 976, 987, 996, 979, 982, 985,
- 994, 988, 994, 977, 991, 980, 983, 982, 988, 987,
- 984, 981, 989, 981, 980, 984, 993, 980, 983, 998,
- 995, 985, 987, 989, 997, 991, 985, 994, 988, 1000,
-
- 1002, 991, 999, 1001, 1003, 1004, 1064, 993, 995, 989,
- 999, 1008, 997, 993, 1002, 1007, 1012, 995, 1009, 1010,
- 0, 997, 1000, 0, 1004, 1001, 1000, 1002, 1011, 999,
- 1001, 1003, 1004, 1007, 1010, 1013, 1014, 1064, 1008, 1012,
- 1015, 1015, 1007, 1012, 1009, 1009, 1010, 1013, 1016, 1018,
- 1011, 1019, 1018, 1021, 1020, 1011, 1016, 1024, 1014, 1019,
- 1020, 1025, 1013, 1014, 1022, 1026, 1029, 1015, 1021, 1027,
- 1022, 1028, 1030, 1031, 1032, 1016, 1018, 1033, 1019, 1026,
- 1021, 1020, 1034, 1027, 1024, 1025, 1035, 1031, 1025, 1036,
- 1034, 1022, 1026, 1029, 1037, 1039, 1027, 1028, 1028, 1030,
-
- 1031, 1032, 1037, 1040, 1033, 1042, 1041, 1044, 0, 1034,
- 1043, 1045, 0, 1035, 1041, 1047, 1036, 1039, 1048, 1043,
- 1049, 1037, 1039, 0, 1046, 1051, 1048, 1053, 1044, 1055,
- 1040, 1054, 1042, 1041, 1044, 1045, 0, 1043, 1045, 1046,
- 1052, 1052, 1047, 1056, 1055, 1048, 1057, 1049, 1057, 1054,
- 1046, 1046, 1051, 1053, 1053, 1058, 1055, 1059, 1054, 1060,
- 1061, 1062, 1063, 1059, 0, 1056, 1046, 1052, 1065, 1058,
- 1056, 1067, 1061, 1057, 1069, 1071, 1070, 1078, 1067, 1062,
- 1063, 1060, 1058, 1077, 1059, 1072, 1060, 1061, 1062, 1063,
- 1075, 1065, 1069, 1072, 1079, 1065, 1074, 1088, 1067, 1078,
-
- 1081, 1069, 1070, 1070, 1078, 1075, 1071, 1077, 1074, 1080,
- 1077, 1072, 1072, 1082, 1089, 1083, 1085, 1075, 1084, 1086,
- 1072, 1079, 1087, 1074, 1081, 1084, 1086, 1081, 1088, 1092,
- 1094, 1108, 1080, 1093, 1100, 1089, 1080, 1083, 1097, 1085,
- 1082, 1089, 1083, 1085, 1087, 1084, 1086, 1091, 1103, 1087,
- 1104, 1092, 1093, 1106, 1112, 1094, 1092, 1094, 1091, 1109,
- 1093, 1100, 1108, 1111, 1097, 1097, 1114, 1110, 1111, 1117,
- 1103, 1119, 1118, 1120, 1091, 1103, 1112, 1104, 1110, 1121,
- 1106, 1112, 1122, 1123, 1119, 1109, 1109, 1124, 1126, 1127,
- 1111, 1117, 1125, 1114, 1110, 1120, 1117, 1118, 1119, 1118,
-
- 1120, 1125, 1124, 1126, 1127, 1128, 1121, 1130, 1131, 1122,
- 1123, 1129, 1132, 1132, 1124, 1126, 1127, 1133, 1129, 1125,
- 1128, 1137, 1134, 1138, 1133, 1135, 1131, 1136, 1135, 1139,
- 1137, 1140, 1128, 1142, 1130, 1131, 1134, 1143, 1129, 1132,
- 1136, 1145, 1142, 1146, 1133, 1138, 1148, 1147, 1137, 1134,
- 1138, 1139, 1135, 1149, 1136, 1148, 1139, 1152, 1140, 1147,
- 1142, 1146, 1149, 1143, 1143, 1150, 1153, 1151, 1145, 1154,
- 1146, 1155, 1163, 1148, 1147, 1151, 1150, 1162, 1156, 1155,
- 1149, 1154, 1158, 1164, 1152, 1156, 1161, 1167, 1169, 1170,
- 1158, 1165, 1150, 1161, 1151, 1164, 1154, 1153, 1155, 1163,
-
- 1165, 1162, 1174, 1168, 1162, 1156, 1176, 1175, 1179, 1158,
- 1164, 1168, 1175, 1161, 1167, 1169, 1170, 1177, 1165, 1178,
- 1181, 1182, 1185, 1183, 1176, 1184, 1186, 1179, 1174, 1174,
- 1168, 1187, 1181, 1176, 1175, 1179, 1188, 1184, 1189, 1177,
- 1192, 1178, 1191, 1182, 1177, 1183, 1178, 1181, 1182, 1185,
- 1183, 1194, 1184, 1186, 1195, 1192, 1196, 1203, 1197, 0,
- 1198, 1199, 1187, 1188, 1191, 1189, 1205, 1192, 1195, 1191,
- 1212, 1204, 1201, 1206, 1196, 1194, 1197, 1209, 1194, 1199,
- 1201, 1195, 1202, 1196, 1203, 1197, 1198, 1198, 1199, 1204,
- 1202, 1207, 1206, 1205, 1210, 1209, 1215, 1212, 1204, 1201,
-
- 1206, 1216, 1217, 1215, 1209, 1218, 1219, 1220, 1210, 1202,
- 1222, 1221, 1223, 1207, 0, 1227, 1220, 1224, 1207, 1233,
- 0, 1210, 1230, 1215, 1221, 1235, 1217, 1216, 1216, 1217,
- 1230, 1231, 1218, 1219, 1220, 1232, 1227, 1234, 1221, 1223,
- 1224, 1222, 1227, 1232, 1224, 1233, 1233, 1235, 1234, 1230,
- 1231, 1238, 1235, 1236, 1237, 1237, 1239, 1243, 1231, 1244,
- 1236, 1241, 1232, 1239, 1234, 0, 1243, 1245, 1250, 1238,
- 1250, 1246, 1249, 1248, 1253, 0, 1254, 0, 1238, 1255,
- 1236, 1237, 1257, 1239, 1243, 1241, 1244, 1249, 1241, 1246,
- 1245, 1248, 1258, 0, 1245, 1250, 1253, 1255, 1246, 1249,
-
- 1248, 1253, 1254, 1254, 1257, 1259, 1255, 1261, 1260, 1257,
- 1258, 1262, 1263, 1259, 1264, 1266, 1269, 1265, 1268, 1258,
- 1260, 1272, 1264, 1263, 1267, 1267, 1268, 1270, 1275, 1262,
- 1276, 0, 1259, 1273, 1261, 1260, 1265, 1266, 1262, 1263,
- 1273, 1264, 1266, 1269, 1265, 1268, 1278, 1274, 1272, 1270,
- 1277, 1267, 1274, 1280, 1270, 1275, 1279, 1276, 1277, 1282,
- 1273, 1278, 1283, 1279, 1281, 1285, 1286, 1287, 1288, 1289,
- 1283, 1291, 1295, 1278, 1274, 1290, 0, 1277, 1285, 1281,
- 1280, 1293, 1296, 1279, 1299, 1300, 1282, 1306, 1286, 1283,
- 1311, 1281, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1295,
-
- 1301, 1303, 1290, 1299, 1296, 1315, 1305, 1293, 1293, 1296,
- 1318, 1299, 1300, 1305, 1306, 1307, 1313, 1311, 1316, 1318,
- 1319, 1320, 1301, 1303, 1322, 1324, 1326, 1301, 1303, 1327,
- 1316, 1332, 1315, 1305, 1334, 0, 1338, 1318, 1307, 1313,
- 0, 1326, 1307, 1313, 1335, 1316, 1340, 1319, 1320, 1338,
- 1333, 1322, 1324, 1326, 1332, 1327, 1327, 1333, 1332, 1339,
- 1337, 1334, 1335, 1338, 0, 0, 0, 1339, 0, 0,
- 0, 1335, 1337, 1340, 0, 0, 0, 1333, 0, 0,
- 0, 0, 0, 0, 0, 0, 1339, 1337, 1343, 1343,
- 1343, 1343, 1343, 1343, 1343, 1344, 1344, 1344, 1344, 1344,
-
- 1344, 1344, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1346,
- 1346, 1346, 1346, 1346, 1346, 1346, 1347, 1347, 1347, 1347,
- 1347, 1347, 1347, 1349, 1349, 0, 1349, 1349, 1349, 1349,
- 1350, 1350, 0, 0, 0, 1350, 1350, 1351, 1351, 0,
- 0, 1351, 0, 1351, 1352, 0, 0, 0, 0, 0,
- 1352, 1353, 1353, 0, 0, 0, 1353, 1353, 1354, 0,
- 0, 0, 0, 0, 1354, 1355, 1355, 0, 1355, 1355,
- 1355, 1355, 1356, 1356, 0, 1356, 1356, 1356, 1356, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 3, 3, 4, 4, 4, 49, 5, 5, 49, 3,
+ 5, 15, 4, 6, 6, 15, 5, 6, 9, 9,
+ 9, 116, 33, 6, 7, 7, 7, 7, 9, 7,
+ 10, 10, 10, 44, 44, 7, 8, 8, 8, 8,
+ 10, 8, 21, 33, 116, 21, 21, 8, 11, 11,
+ 11, 11, 11, 11, 1348, 20, 29, 20, 20, 11,
+
+ 20, 29, 24, 21, 25, 20, 24, 28, 11, 12,
+ 12, 12, 12, 12, 12, 74, 22, 22, 74, 25,
+ 12, 69, 28, 66, 22, 69, 24, 26, 26, 12,
+ 19, 22, 19, 19, 23, 19, 26, 66, 27, 23,
+ 19, 19, 27, 23, 30, 27, 23, 31, 89, 23,
+ 32, 32, 27, 89, 34, 32, 31, 60, 60, 30,
+ 35, 77, 31, 34, 77, 35, 31, 78, 36, 34,
+ 75, 32, 34, 36, 75, 35, 38, 76, 35, 34,
+ 79, 37, 37, 36, 37, 78, 577, 36, 36, 88,
+ 38, 39, 39, 88, 79, 38, 39, 76, 55, 37,
+
+ 55, 55, 63, 55, 63, 63, 65, 63, 65, 65,
+ 82, 65, 68, 63, 68, 68, 85, 68, 80, 81,
+ 86, 84, 68, 71, 83, 71, 71, 87, 71, 83,
+ 80, 92, 82, 71, 71, 84, 85, 81, 86, 90,
+ 91, 98, 83, 91, 93, 87, 91, 95, 94, 93,
+ 92, 94, 96, 90, 98, 94, 96, 97, 99, 100,
+ 91, 95, 101, 102, 97, 99, 103, 102, 104, 93,
+ 105, 107, 100, 104, 106, 108, 110, 104, 109, 111,
+ 113, 110, 101, 114, 103, 115, 107, 106, 112, 112,
+ 105, 111, 117, 118, 108, 119, 109, 117, 113, 114,
+
+ 121, 121, 128, 128, 123, 118, 115, 123, 133, 112,
+ 129, 133, 125, 119, 125, 125, 130, 125, 130, 130,
+ 131, 130, 131, 131, 134, 131, 136, 135, 137, 134,
+ 138, 131, 135, 139, 140, 141, 137, 142, 145, 140,
+ 141, 136, 142, 144, 144, 138, 146, 147, 148, 151,
+ 149, 146, 148, 139, 143, 149, 154, 145, 143, 150,
+ 153, 154, 155, 143, 151, 152, 157, 156, 143, 161,
+ 147, 157, 127, 150, 143, 143, 159, 152, 153, 160,
+ 152, 159, 155, 156, 158, 158, 162, 159, 160, 163,
+ 161, 162, 164, 165, 163, 166, 168, 164, 165, 167,
+
+ 169, 170, 166, 171, 172, 167, 169, 173, 174, 175,
+ 176, 171, 177, 174, 178, 180, 168, 177, 179, 172,
+ 179, 181, 180, 170, 182, 184, 181, 173, 176, 176,
+ 184, 175, 183, 183, 178, 185, 186, 187, 186, 188,
+ 185, 190, 189, 182, 192, 193, 190, 191, 184, 187,
+ 189, 195, 191, 194, 195, 186, 196, 196, 188, 192,
+ 198, 194, 199, 193, 197, 197, 200, 201, 203, 200,
+ 202, 201, 204, 203, 205, 205, 198, 199, 206, 202,
+ 207, 208, 209, 206, 210, 207, 204, 212, 212, 211,
+ 213, 214, 215, 216, 217, 218, 216, 215, 219, 221,
+
+ 209, 208, 211, 214, 220, 210, 217, 219, 213, 223,
+ 223, 221, 218, 225, 226, 218, 222, 220, 222, 222,
+ 224, 229, 227, 224, 228, 228, 229, 230, 230, 226,
+ 225, 227, 231, 225, 232, 233, 234, 235, 236, 237,
+ 233, 236, 235, 238, 240, 241, 239, 231, 242, 240,
+ 241, 243, 244, 237, 232, 239, 234, 245, 246, 238,
+ 245, 249, 238, 248, 238, 250, 244, 252, 251, 242,
+ 249, 243, 246, 126, 253, 255, 245, 247, 248, 247,
+ 247, 258, 252, 254, 256, 257, 250, 251, 254, 247,
+ 259, 247, 247, 247, 253, 255, 247, 260, 262, 256,
+
+ 257, 258, 260, 263, 259, 261, 261, 264, 261, 266,
+ 265, 266, 267, 268, 269, 124, 267, 270, 262, 263,
+ 271, 273, 272, 264, 265, 273, 270, 272, 269, 271,
+ 275, 268, 274, 277, 276, 275, 278, 281, 277, 270,
+ 276, 274, 279, 279, 282, 280, 286, 283, 290, 278,
+ 280, 284, 284, 282, 293, 285, 287, 287, 281, 283,
+ 285, 289, 289, 291, 292, 295, 293, 286, 296, 290,
+ 297, 291, 298, 292, 299, 300, 301, 298, 302, 303,
+ 300, 304, 299, 303, 297, 295, 305, 306, 296, 307,
+ 310, 305, 309, 312, 301, 314, 304, 311, 313, 313,
+
+ 302, 316, 311, 306, 315, 315, 310, 311, 307, 308,
+ 308, 317, 309, 312, 318, 308, 316, 308, 319, 320,
+ 314, 321, 322, 317, 323, 308, 321, 324, 325, 318,
+ 328, 322, 325, 326, 327, 308, 329, 319, 326, 330,
+ 330, 320, 324, 323, 331, 332, 327, 333, 328, 329,
+ 334, 335, 342, 334, 336, 336, 331, 332, 337, 337,
+ 338, 348, 333, 122, 335, 338, 339, 339, 340, 340,
+ 341, 343, 345, 342, 344, 341, 343, 345, 344, 346,
+ 347, 348, 349, 346, 350, 347, 351, 349, 355, 350,
+ 352, 353, 353, 352, 354, 359, 367, 355, 352, 354,
+
+ 351, 356, 352, 357, 356, 358, 360, 357, 359, 361,
+ 358, 360, 362, 363, 367, 364, 368, 362, 364, 363,
+ 365, 361, 366, 365, 374, 370, 369, 366, 370, 357,
+ 368, 369, 371, 374, 372, 373, 379, 371, 372, 372,
+ 373, 375, 376, 377, 375, 377, 376, 376, 378, 380,
+ 378, 381, 382, 383, 379, 384, 385, 383, 386, 375,
+ 387, 388, 389, 394, 384, 120, 388, 380, 390, 390,
+ 381, 385, 382, 391, 392, 387, 386, 391, 393, 392,
+ 395, 389, 394, 396, 397, 398, 399, 401, 403, 397,
+ 396, 399, 398, 395, 393, 400, 402, 403, 404, 405,
+
+ 400, 408, 418, 402, 405, 401, 406, 407, 411, 406,
+ 413, 407, 404, 411, 409, 409, 412, 414, 415, 418,
+ 412, 421, 408, 409, 424, 414, 422, 423, 413, 424,
+ 421, 423, 422, 415, 425, 426, 425, 427, 425, 428,
+ 426, 425, 429, 430, 430, 429, 425, 431, 432, 432,
+ 433, 436, 425, 425, 431, 427, 434, 434, 435, 437,
+ 438, 435, 439, 439, 428, 433, 440, 441, 438, 442,
+ 444, 436, 443, 443, 442, 444, 445, 446, 437, 445,
+ 447, 440, 448, 446, 449, 441, 450, 451, 447, 453,
+ 448, 450, 452, 452, 451, 454, 455, 453, 457, 458,
+
+ 454, 457, 449, 459, 459, 460, 461, 463, 464, 461,
+ 465, 466, 467, 458, 468, 455, 470, 461, 469, 471,
+ 460, 474, 469, 468, 475, 473, 472, 474, 463, 464,
+ 465, 476, 467, 466, 470, 472, 477, 479, 471, 473,
+ 480, 477, 478, 481, 475, 476, 478, 482, 481, 483,
+ 483, 485, 480, 484, 485, 486, 479, 487, 484, 488,
+ 489, 490, 490, 492, 488, 491, 491, 493, 482, 494,
+ 487, 493, 495, 486, 499, 496, 500, 498, 492, 501,
+ 489, 498, 502, 509, 503, 505, 504, 508, 494, 496,
+ 505, 500, 504, 501, 67, 509, 495, 497, 503, 499,
+
+ 497, 508, 497, 502, 506, 506, 497, 513, 497, 507,
+ 506, 512, 506, 497, 507, 510, 510, 511, 514, 512,
+ 520, 513, 511, 515, 515, 516, 518, 521, 522, 516,
+ 506, 518, 519, 522, 523, 519, 524, 514, 526, 520,
+ 521, 525, 527, 523, 528, 529, 525, 531, 532, 533,
+ 529, 536, 534, 528, 533, 524, 527, 534, 526, 535,
+ 536, 537, 537, 532, 535, 531, 538, 542, 540, 543,
+ 542, 538, 540, 540, 541, 541, 544, 545, 541, 546,
+ 545, 547, 548, 549, 543, 550, 547, 548, 552, 549,
+ 553, 550, 551, 551, 555, 554, 544, 552, 554, 556,
+
+ 546, 557, 558, 61, 559, 560, 561, 568, 553, 559,
+ 560, 562, 555, 566, 562, 558, 563, 564, 556, 569,
+ 565, 557, 564, 570, 561, 565, 568, 563, 566, 567,
+ 567, 572, 571, 569, 573, 570, 571, 574, 575, 578,
+ 579, 580, 581, 573, 584, 582, 583, 581, 585, 572,
+ 582, 583, 586, 578, 587, 579, 574, 586, 584, 588,
+ 590, 580, 585, 575, 589, 589, 591, 592, 593, 587,
+ 595, 594, 592, 596, 588, 591, 594, 596, 590, 597,
+ 598, 599, 600, 601, 602, 603, 604, 593, 597, 595,
+ 606, 605, 604, 611, 600, 598, 599, 610, 607, 609,
+
+ 612, 611, 601, 603, 609, 602, 605, 607, 613, 615,
+ 606, 610, 614, 613, 616, 644, 614, 614, 644, 617,
+ 612, 623, 615, 616, 617, 618, 618, 619, 620, 621,
+ 621, 622, 619, 620, 624, 623, 622, 625, 626, 627,
+ 629, 628, 625, 626, 627, 628, 630, 632, 633, 629,
+ 634, 632, 624, 635, 629, 636, 629, 630, 629, 638,
+ 639, 637, 640, 633, 641, 641, 646, 635, 634, 637,
+ 642, 642, 645, 638, 636, 647, 647, 645, 639, 648,
+ 649, 649, 652, 650, 654, 646, 653, 640, 650, 651,
+ 651, 653, 654, 655, 656, 657, 658, 669, 655, 648,
+
+ 660, 657, 652, 658, 661, 660, 662, 664, 663, 661,
+ 665, 662, 656, 663, 666, 668, 664, 667, 667, 670,
+ 669, 671, 672, 675, 670, 666, 673, 674, 674, 665,
+ 676, 677, 680, 678, 681, 668, 680, 680, 685, 682,
+ 683, 671, 672, 675, 673, 683, 684, 686, 687, 677,
+ 688, 686, 691, 689, 693, 676, 678, 682, 685, 690,
+ 681, 693, 695, 692, 684, 694, 687, 689, 692, 688,
+ 694, 691, 696, 697, 690, 699, 698, 706, 700, 701,
+ 695, 696, 698, 700, 701, 702, 703, 703, 697, 705,
+ 702, 706, 707, 708, 705, 710, 699, 708, 708, 709,
+
+ 709, 711, 712, 713, 715, 714, 716, 717, 718, 713,
+ 714, 707, 720, 721, 710, 719, 722, 722, 724, 723,
+ 711, 712, 724, 715, 723, 716, 717, 718, 721, 719,
+ 725, 726, 727, 720, 728, 728, 729, 731, 730, 732,
+ 726, 729, 730, 725, 732, 735, 736, 736, 737, 745,
+ 735, 746, 727, 737, 739, 739, 748, 731, 741, 741,
+ 743, 744, 744, 743, 745, 747, 749, 749, 750, 752,
+ 747, 748, 751, 751, 753, 754, 746, 755, 756, 754,
+ 758, 759, 761, 756, 762, 753, 760, 760, 750, 763,
+ 764, 752, 764, 767, 765, 759, 755, 768, 758, 765,
+
+ 766, 769, 761, 771, 762, 766, 772, 769, 771, 763,
+ 776, 768, 773, 767, 774, 773, 775, 775, 777, 774,
+ 778, 779, 780, 784, 781, 783, 779, 785, 776, 781,
+ 783, 772, 782, 782, 786, 787, 788, 777, 789, 790,
+ 778, 784, 791, 792, 790, 780, 793, 785, 788, 787,
+ 794, 789, 795, 801, 786, 797, 801, 796, 802, 795,
+ 800, 800, 791, 792, 803, 794, 796, 793, 804, 796,
+ 805, 797, 806, 803, 802, 807, 808, 808, 809, 805,
+ 807, 806, 805, 810, 811, 812, 813, 804, 814, 815,
+ 815, 816, 817, 56, 820, 819, 810, 828, 809, 812,
+
+ 819, 824, 811, 821, 829, 828, 814, 816, 821, 822,
+ 817, 813, 820, 823, 824, 822, 825, 829, 823, 825,
+ 830, 831, 841, 832, 833, 825, 835, 836, 837, 838,
+ 839, 836, 840, 837, 838, 839, 842, 845, 830, 832,
+ 831, 840, 833, 843, 843, 841, 835, 844, 846, 845,
+ 847, 842, 848, 849, 853, 847, 850, 851, 851, 856,
+ 846, 844, 850, 853, 848, 852, 852, 854, 854, 855,
+ 857, 849, 858, 860, 855, 859, 859, 861, 861, 863,
+ 856, 862, 862, 864, 863, 866, 864, 867, 869, 857,
+ 866, 868, 858, 860, 870, 870, 868, 871, 871, 872,
+
+ 873, 874, 875, 876, 872, 867, 877, 878, 878, 879,
+ 880, 880, 873, 869, 873, 883, 881, 884, 885, 873,
+ 886, 874, 875, 876, 883, 885, 887, 877, 889, 886,
+ 888, 888, 884, 890, 892, 879, 881, 893, 894, 892,
+ 895, 897, 893, 896, 896, 899, 897, 895, 898, 890,
+ 901, 900, 887, 902, 889, 903, 905, 898, 894, 906,
+ 906, 903, 904, 907, 908, 899, 900, 905, 902, 901,
+ 909, 904, 905, 910, 910, 909, 911, 912, 908, 913,
+ 911, 911, 912, 914, 907, 915, 916, 917, 914, 918,
+ 916, 913, 922, 919, 920, 921, 928, 915, 919, 917,
+
+ 921, 928, 924, 933, 922, 924, 925, 925, 926, 926,
+ 930, 927, 929, 936, 918, 933, 920, 927, 929, 930,
+ 935, 935, 940, 940, 937, 938, 943, 945, 946, 946,
+ 944, 936, 935, 937, 938, 944, 947, 951, 947, 950,
+ 943, 948, 948, 953, 945, 957, 950, 952, 952, 954,
+ 955, 956, 958, 960, 961, 962, 961, 951, 960, 963,
+ 957, 954, 955, 956, 953, 964, 965, 965, 963, 966,
+ 967, 971, 958, 962, 968, 967, 968, 969, 970, 964,
+ 972, 973, 969, 970, 976, 974, 973, 977, 51, 971,
+ 974, 978, 978, 979, 981, 966, 981, 980, 982, 983,
+
+ 972, 977, 988, 976, 987, 979, 980, 982, 984, 980,
+ 985, 983, 989, 984, 991, 985, 994, 987, 993, 999,
+ 991, 995, 988, 997, 993, 996, 996, 1000, 989, 1002,
+ 995, 1000, 997, 998, 998, 1001, 1003, 1003, 999, 1004,
+ 1001, 994, 1002, 1007, 1008, 1008, 1010, 1004, 1009, 1009,
+ 1011, 1013, 1007, 1012, 1014, 1011, 1015, 1012, 1010, 1014,
+ 1016, 1018, 1019, 1020, 1021, 1022, 1013, 1024, 1024, 1025,
+ 1026, 1065, 1025, 1034, 1027, 1065, 1021, 1028, 1028, 1016,
+ 1031, 1019, 1015, 1026, 1020, 1018, 1022, 1027, 1029, 1029,
+ 1030, 1030, 1034, 1031, 1032, 1032, 1033, 1033, 1035, 1035,
+
+ 1036, 1036, 1037, 1039, 1040, 1040, 1041, 1044, 1039, 1042,
+ 1042, 1043, 1045, 1044, 1048, 1045, 1046, 1046, 1047, 1047,
+ 1052, 1037, 1049, 1049, 1055, 1041, 1051, 1051, 1054, 1043,
+ 1053, 1053, 1046, 1048, 1056, 1057, 1055, 1054, 1058, 1056,
+ 1059, 1061, 1060, 1062, 1063, 1064, 1052, 1060, 1067, 1069,
+ 1064, 1058, 1062, 1063, 1070, 1070, 1061, 1071, 1069, 1074,
+ 1057, 1059, 1071, 1072, 1072, 1075, 1077, 1080, 1067, 1077,
+ 1078, 1080, 1072, 1081, 1074, 1078, 1081, 1075, 1079, 1079,
+ 1082, 1082, 1083, 1084, 1085, 1086, 1087, 1083, 1085, 1088,
+ 1089, 1087, 1091, 1092, 1088, 1094, 1089, 1094, 1092, 1093,
+
+ 1097, 1097, 1111, 1084, 1110, 1086, 1103, 1093, 1091, 1100,
+ 1100, 1103, 1104, 1104, 1106, 1106, 1108, 1109, 1109, 1119,
+ 1110, 1108, 1112, 1117, 1111, 1114, 1114, 1112, 1117, 1118,
+ 1120, 1118, 1124, 1119, 1125, 1120, 1121, 1121, 1122, 1122,
+ 1123, 1123, 1126, 1127, 1124, 1128, 1129, 1130, 1130, 1131,
+ 1132, 1133, 1125, 1135, 1126, 1127, 1134, 1128, 1131, 1136,
+ 1137, 1142, 1138, 1139, 1140, 1140, 1129, 1138, 1139, 1134,
+ 1147, 1133, 1148, 1136, 1143, 1143, 1132, 1135, 1137, 1142,
+ 1145, 1145, 1146, 1149, 1150, 1147, 1151, 1152, 1152, 1153,
+ 1148, 1146, 1154, 1155, 1153, 1156, 1162, 1158, 1161, 1162,
+
+ 1150, 1149, 1163, 1163, 1164, 1151, 1165, 1154, 1167, 1167,
+ 1168, 1175, 1155, 1169, 1169, 1156, 1158, 1176, 1161, 1164,
+ 1170, 1170, 1174, 1174, 1165, 1177, 1176, 1178, 1179, 1168,
+ 1177, 1181, 1178, 1175, 1182, 1183, 1179, 1184, 50, 1182,
+ 1183, 1185, 1185, 1186, 1186, 1187, 1181, 1188, 1188, 1192,
+ 1187, 1191, 1184, 1189, 1189, 1194, 1191, 1195, 1194, 1196,
+ 1197, 1192, 1198, 1198, 1199, 1201, 1202, 1204, 1196, 1197,
+ 1195, 1203, 1203, 1199, 1205, 1205, 1204, 1207, 1206, 1209,
+ 1210, 1215, 1207, 45, 1201, 1202, 1206, 1220, 1209, 1212,
+ 1212, 1216, 1216, 1210, 1217, 1218, 1218, 1217, 1219, 1219,
+
+ 1221, 1215, 1222, 1223, 1223, 1220, 1224, 1222, 1230, 1227,
+ 1224, 1231, 1232, 1234, 1221, 1227, 1233, 1233, 1235, 1231,
+ 1236, 1237, 1239, 1235, 1238, 1241, 1243, 1230, 1241, 1234,
+ 1246, 1232, 1245, 1238, 1244, 1244, 1245, 1248, 1249, 1246,
+ 1236, 1250, 1239, 1253, 1243, 1255, 1248, 1237, 1253, 1259,
+ 1249, 1254, 1254, 1257, 1255, 1258, 1260, 1263, 1257, 1261,
+ 1261, 1262, 1264, 1267, 1258, 1268, 1250, 1265, 1259, 1266,
+ 1262, 1260, 1273, 1263, 1266, 1265, 1269, 1269, 1270, 1272,
+ 1272, 1264, 1274, 1270, 1268, 1275, 1275, 1276, 1276, 1267,
+ 1277, 1278, 1273, 1279, 1280, 1280, 1281, 1282, 1282, 1283,
+
+ 1285, 1286, 1290, 1278, 1274, 40, 1286, 1290, 1281, 1277,
+ 1287, 1287, 1296, 1279, 1285, 1288, 1288, 1296, 1283, 1289,
+ 1289, 1291, 1291, 1293, 1293, 1295, 1295, 1299, 1300, 1300,
+ 1305, 1301, 1303, 1306, 1306, 1299, 1301, 1303, 1307, 1311,
+ 1311, 1313, 1307, 1315, 1315, 1313, 1316, 1318, 1319, 1319,
+ 1305, 1320, 1320, 1322, 1322, 1324, 1324, 1326, 1327, 1327,
+ 1332, 1316, 1333, 1335, 1332, 1318, 1334, 1334, 1337, 1326,
+ 1338, 1339, 1335, 1340, 1340, 14, 13, 0, 0, 0,
+ 0, 0, 1333, 1337, 1338, 0, 0, 0, 0, 0,
+ 1339, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1344, 1344,
+
+ 1344, 1344, 1344, 1344, 1344, 1345, 1345, 1345, 1345, 1345,
+ 1345, 1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1347,
+ 1347, 1347, 1347, 1347, 1347, 1347, 1349, 1349, 0, 1349,
+ 1349, 1349, 1349, 1350, 1350, 0, 0, 0, 1350, 1350,
+ 1351, 1351, 0, 0, 1351, 0, 1351, 1352, 0, 0,
+ 0, 0, 0, 1352, 1353, 1353, 0, 0, 0, 1353,
+ 1353, 1354, 0, 0, 0, 0, 0, 1354, 1355, 1355,
+ 0, 1355, 1355, 1355, 1355, 1356, 1356, 0, 1356, 1356,
+ 1356, 1356, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
- 1342, 1342, 1342, 1342, 1342
+ 1342, 1342
} ;
static yy_state_type yy_last_accepting_state;
@@ -1765,8 +1506,6 @@ static int yy_more_len = 0;
#define YY_MORE_ADJ (yy_more_len)
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "util/configlexer.lex"
-#line 2 "util/configlexer.lex"
/*
* configlexer.lex - lexical analyzer for unbound config file
*
@@ -1814,7 +1553,6 @@ static int config_include_stack_ptr = 0;
static int inc_prev = 0;
static int num_args = 0;
-
static void config_start_include(const char* filename)
{
FILE *input;
@@ -1910,7 +1648,6 @@ static void config_end_include(void)
#endif
#define YY_NO_INPUT 1
-#line 148 "util/configlexer.lex"
#ifndef YY_NO_UNPUT
#define YY_NO_UNPUT 1
#endif
@@ -1918,8 +1655,6 @@ static void config_end_include(void)
#define YY_NO_INPUT 1
#endif
-#line 1920 "<stdout>"
-
#define INITIAL 0
#define quotedstring 1
#define singlequotedstr 2
@@ -2099,14 +1834,10 @@ extern int yylex (void);
*/
YY_DECL
{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
+ yy_state_type yy_current_state;
+ char *yy_cp, *yy_bp;
+ int yy_act;
-#line 168 "util/configlexer.lex"
-
-#line 2107 "<stdout>"
-
if ( !(yy_init) )
{
(yy_init) = 1;
@@ -2155,7 +1886,7 @@ YY_DECL
yy_match:
do
{
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -2170,7 +1901,7 @@ yy_match:
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 3880 );
+ while ( yy_base[yy_current_state] != 2683 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -2196,627 +1927,503 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 169 "util/configlexer.lex"
{
LEXOUT(("SP ")); /* ignore */ }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 171 "util/configlexer.lex"
{
/* note that flex makes the longest match and '.' is any but not nl */
LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 174 "util/configlexer.lex"
{ YDVAR(0, VAR_SERVER) }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 175 "util/configlexer.lex"
{ YDVAR(1, VAR_NUM_THREADS) }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 176 "util/configlexer.lex"
{ YDVAR(1, VAR_VERBOSITY) }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 177 "util/configlexer.lex"
{ YDVAR(1, VAR_PORT) }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 178 "util/configlexer.lex"
{ YDVAR(1, VAR_OUTGOING_RANGE) }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 179 "util/configlexer.lex"
{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 180 "util/configlexer.lex"
{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 181 "util/configlexer.lex"
{ YDVAR(1, VAR_OUTGOING_NUM_TCP) }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 182 "util/configlexer.lex"
{ YDVAR(1, VAR_INCOMING_NUM_TCP) }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 183 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_IP4) }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 184 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_IP6) }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 185 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_UDP) }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 186 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_TCP) }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 187 "util/configlexer.lex"
{ YDVAR(1, VAR_TCP_UPSTREAM) }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 188 "util/configlexer.lex"
{ YDVAR(1, VAR_SSL_UPSTREAM) }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 189 "util/configlexer.lex"
{ YDVAR(1, VAR_SSL_SERVICE_KEY) }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 190 "util/configlexer.lex"
{ YDVAR(1, VAR_SSL_SERVICE_PEM) }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 191 "util/configlexer.lex"
{ YDVAR(1, VAR_SSL_PORT) }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 192 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_DAEMONIZE) }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 193 "util/configlexer.lex"
{ YDVAR(1, VAR_INTERFACE) }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 194 "util/configlexer.lex"
{ YDVAR(1, VAR_OUTGOING_INTERFACE) }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 195 "util/configlexer.lex"
{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 196 "util/configlexer.lex"
{ YDVAR(1, VAR_SO_RCVBUF) }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 197 "util/configlexer.lex"
{ YDVAR(1, VAR_SO_SNDBUF) }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 198 "util/configlexer.lex"
{ YDVAR(1, VAR_CHROOT) }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 199 "util/configlexer.lex"
{ YDVAR(1, VAR_USERNAME) }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 200 "util/configlexer.lex"
{ YDVAR(1, VAR_DIRECTORY) }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 201 "util/configlexer.lex"
{ YDVAR(1, VAR_LOGFILE) }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 202 "util/configlexer.lex"
{ YDVAR(1, VAR_PIDFILE) }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 203 "util/configlexer.lex"
{ YDVAR(1, VAR_ROOT_HINTS) }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 204 "util/configlexer.lex"
{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 205 "util/configlexer.lex"
{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 206 "util/configlexer.lex"
{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 207 "util/configlexer.lex"
{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 208 "util/configlexer.lex"
{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 209 "util/configlexer.lex"
{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 210 "util/configlexer.lex"
{ YDVAR(1, VAR_CACHE_MAX_TTL) }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 211 "util/configlexer.lex"
{ YDVAR(1, VAR_CACHE_MIN_TTL) }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 212 "util/configlexer.lex"
{ YDVAR(1, VAR_INFRA_HOST_TTL) }
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 213 "util/configlexer.lex"
{ YDVAR(1, VAR_INFRA_LAME_TTL) }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 214 "util/configlexer.lex"
{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 215 "util/configlexer.lex"
{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 216 "util/configlexer.lex"
{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 217 "util/configlexer.lex"
{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 218 "util/configlexer.lex"
{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 219 "util/configlexer.lex"
{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 220 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 221 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 222 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_GLUE) }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 223 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 224 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 225 "util/configlexer.lex"
{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 226 "util/configlexer.lex"
{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 227 "util/configlexer.lex"
{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 228 "util/configlexer.lex"
{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 229 "util/configlexer.lex"
{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 230 "util/configlexer.lex"
{ YDVAR(1, VAR_PREFETCH_KEY) }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 231 "util/configlexer.lex"
{ YDVAR(1, VAR_PREFETCH) }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 232 "util/configlexer.lex"
{ YDVAR(0, VAR_STUB_ZONE) }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 233 "util/configlexer.lex"
{ YDVAR(1, VAR_NAME) }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 234 "util/configlexer.lex"
{ YDVAR(1, VAR_STUB_ADDR) }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 235 "util/configlexer.lex"
{ YDVAR(1, VAR_STUB_HOST) }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 236 "util/configlexer.lex"
{ YDVAR(1, VAR_STUB_PRIME) }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 237 "util/configlexer.lex"
{ YDVAR(1, VAR_STUB_FIRST) }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 238 "util/configlexer.lex"
{ YDVAR(0, VAR_FORWARD_ZONE) }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 239 "util/configlexer.lex"
{ YDVAR(1, VAR_FORWARD_ADDR) }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 240 "util/configlexer.lex"
{ YDVAR(1, VAR_FORWARD_HOST) }
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 241 "util/configlexer.lex"
{ YDVAR(1, VAR_FORWARD_FIRST) }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 242 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 243 "util/configlexer.lex"
{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 244 "util/configlexer.lex"
{ YDVAR(2, VAR_ACCESS_CONTROL) }
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 245 "util/configlexer.lex"
{ YDVAR(1, VAR_HIDE_IDENTITY) }
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 246 "util/configlexer.lex"
{ YDVAR(1, VAR_HIDE_VERSION) }
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 247 "util/configlexer.lex"
{ YDVAR(1, VAR_IDENTITY) }
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 248 "util/configlexer.lex"
{ YDVAR(1, VAR_VERSION) }
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 249 "util/configlexer.lex"
{ YDVAR(1, VAR_MODULE_CONF) }
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 250 "util/configlexer.lex"
{ YDVAR(1, VAR_DLV_ANCHOR) }
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 251 "util/configlexer.lex"
{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 252 "util/configlexer.lex"
{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 253 "util/configlexer.lex"
{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 254 "util/configlexer.lex"
{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 255 "util/configlexer.lex"
{ YDVAR(1, VAR_TRUST_ANCHOR) }
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 256 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 257 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 258 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 259 "util/configlexer.lex"
{ YDVAR(1, VAR_BOGUS_TTL) }
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 260 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 261 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 262 "util/configlexer.lex"
{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 263 "util/configlexer.lex"
{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 264 "util/configlexer.lex"
{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 265 "util/configlexer.lex"
{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 266 "util/configlexer.lex"
{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 267 "util/configlexer.lex"
{
YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 269 "util/configlexer.lex"
{ YDVAR(1, VAR_ADD_HOLDDOWN) }
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 270 "util/configlexer.lex"
{ YDVAR(1, VAR_DEL_HOLDDOWN) }
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 271 "util/configlexer.lex"
{ YDVAR(1, VAR_KEEP_MISSING) }
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 272 "util/configlexer.lex"
{ YDVAR(1, VAR_USE_SYSLOG) }
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 273 "util/configlexer.lex"
{ YDVAR(1, VAR_LOG_TIME_ASCII) }
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 274 "util/configlexer.lex"
{ YDVAR(1, VAR_LOG_QUERIES) }
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 275 "util/configlexer.lex"
{ YDVAR(2, VAR_LOCAL_ZONE) }
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 276 "util/configlexer.lex"
{ YDVAR(1, VAR_LOCAL_DATA) }
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 277 "util/configlexer.lex"
{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 278 "util/configlexer.lex"
{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 279 "util/configlexer.lex"
{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 280 "util/configlexer.lex"
{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 281 "util/configlexer.lex"
{ YDVAR(0, VAR_REMOTE_CONTROL) }
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 282 "util/configlexer.lex"
{ YDVAR(1, VAR_CONTROL_ENABLE) }
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 283 "util/configlexer.lex"
{ YDVAR(1, VAR_CONTROL_INTERFACE) }
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 284 "util/configlexer.lex"
{ YDVAR(1, VAR_CONTROL_PORT) }
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 285 "util/configlexer.lex"
{ YDVAR(1, VAR_SERVER_KEY_FILE) }
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 286 "util/configlexer.lex"
{ YDVAR(1, VAR_SERVER_CERT_FILE) }
YY_BREAK
case 115:
YY_RULE_SETUP
-#line 287 "util/configlexer.lex"
{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 288 "util/configlexer.lex"
{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
YY_BREAK
case 117:
YY_RULE_SETUP
-#line 289 "util/configlexer.lex"
{ YDVAR(1, VAR_PYTHON_SCRIPT) }
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 290 "util/configlexer.lex"
{ YDVAR(0, VAR_PYTHON) }
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 291 "util/configlexer.lex"
{ YDVAR(1, VAR_DOMAIN_INSECURE) }
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 292 "util/configlexer.lex"
{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 293 "util/configlexer.lex"
{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
YY_BREAK
case 122:
/* rule 122 can match eol */
YY_RULE_SETUP
-#line 294 "util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++; }
YY_BREAK
/* Quoted strings. Strip leading and ending quotes */
case 123:
YY_RULE_SETUP
-#line 297 "util/configlexer.lex"
{ BEGIN(quotedstring); LEXOUT(("QS ")); }
YY_BREAK
case YY_STATE_EOF(quotedstring):
-#line 298 "util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2825,19 +2432,16 @@ case YY_STATE_EOF(quotedstring):
YY_BREAK
case 124:
YY_RULE_SETUP
-#line 303 "util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
case 125:
/* rule 125 can match eol */
YY_RULE_SETUP
-#line 304 "util/configlexer.lex"
{ yyerror("newline inside quoted string, no end \"");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
case 126:
YY_RULE_SETUP
-#line 306 "util/configlexer.lex"
{
LEXOUT(("QE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2852,11 +2456,9 @@ YY_RULE_SETUP
/* Single Quoted strings. Strip leading and ending quotes */
case 127:
YY_RULE_SETUP
-#line 318 "util/configlexer.lex"
{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
YY_BREAK
case YY_STATE_EOF(singlequotedstr):
-#line 319 "util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2865,19 +2467,16 @@ case YY_STATE_EOF(singlequotedstr):
YY_BREAK
case 128:
YY_RULE_SETUP
-#line 324 "util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
case 129:
/* rule 129 can match eol */
YY_RULE_SETUP
-#line 325 "util/configlexer.lex"
{ yyerror("newline inside quoted string, no end '");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 327 "util/configlexer.lex"
{
LEXOUT(("SQE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2892,12 +2491,10 @@ YY_RULE_SETUP
/* include: directive */
case 131:
YY_RULE_SETUP
-#line 339 "util/configlexer.lex"
{
LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
YY_BREAK
case YY_STATE_EOF(include):
-#line 341 "util/configlexer.lex"
{
yyerror("EOF inside include directive");
BEGIN(inc_prev);
@@ -2905,23 +2502,19 @@ case YY_STATE_EOF(include):
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 345 "util/configlexer.lex"
{ LEXOUT(("ISP ")); /* ignore */ }
YY_BREAK
case 133:
/* rule 133 can match eol */
YY_RULE_SETUP
-#line 346 "util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++;}
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 347 "util/configlexer.lex"
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 348 "util/configlexer.lex"
{
LEXOUT(("Iunquotedstr(%s) ", yytext));
config_start_include_glob(yytext);
@@ -2929,7 +2522,6 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(include_quoted):
-#line 353 "util/configlexer.lex"
{
yyerror("EOF inside quoted string");
BEGIN(inc_prev);
@@ -2937,19 +2529,16 @@ case YY_STATE_EOF(include_quoted):
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 357 "util/configlexer.lex"
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
YY_BREAK
case 137:
/* rule 137 can match eol */
YY_RULE_SETUP
-#line 358 "util/configlexer.lex"
{ yyerror("newline before \" in include name");
cfg_parser->line++; BEGIN(inc_prev); }
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 360 "util/configlexer.lex"
{
LEXOUT(("IQE "));
yytext[yyleng - 1] = '\0';
@@ -2959,7 +2548,6 @@ YY_RULE_SETUP
YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(val):
-#line 366 "util/configlexer.lex"
{
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
if (config_include_stack_ptr == 0) {
@@ -2972,31 +2560,26 @@ case YY_STATE_EOF(val):
YY_BREAK
case 139:
YY_RULE_SETUP
-#line 376 "util/configlexer.lex"
{ LEXOUT(("unquotedstr(%s) ", yytext));
if(--num_args == 0) { BEGIN(INITIAL); }
yylval.str = strdup(yytext); return STRING_ARG; }
YY_BREAK
case 140:
YY_RULE_SETUP
-#line 380 "util/configlexer.lex"
{
ub_c_error_msg("unknown keyword '%s'", yytext);
}
YY_BREAK
case 141:
YY_RULE_SETUP
-#line 384 "util/configlexer.lex"
{
ub_c_error_msg("stray '%s'", yytext);
}
YY_BREAK
case 142:
YY_RULE_SETUP
-#line 388 "util/configlexer.lex"
ECHO;
YY_BREAK
-#line 2998 "<stdout>"
case YY_END_OF_BUFFER:
{
@@ -3136,9 +2719,9 @@ ECHO;
*/
static int yy_get_next_buffer (void)
{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = (yytext_ptr);
- register int number_to_move, i;
+ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ char *source = (yytext_ptr);
+ int number_to_move, i;
int ret_val;
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -3270,14 +2853,14 @@ static int yy_get_next_buffer (void)
static yy_state_type yy_get_previous_state (void)
{
- register yy_state_type yy_current_state;
- register char *yy_cp;
+ yy_state_type yy_current_state;
+ char *yy_cp;
yy_current_state = (yy_start);
for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
{
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -3302,10 +2885,10 @@ static int yy_get_next_buffer (void)
*/
static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
{
- register int yy_is_jam;
- register char *yy_cp = (yy_c_buf_p);
+ int yy_is_jam;
+ char *yy_cp = (yy_c_buf_p);
- register YY_CHAR yy_c = 1;
+ YY_CHAR yy_c = 1;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -3721,7 +3304,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
- int i;
+ yy_size_t i;
/* Get memory for full buffer, including space for trailing EOB's. */
n = _yybytes_len + 2;
@@ -3910,7 +3493,7 @@ int yylex_destroy (void)
#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
{
- register int i;
+ int i;
for ( i = 0; i < n; ++i )
s1[i] = s2[i];
}
@@ -3919,7 +3502,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * s )
{
- register int n;
+ int n;
for ( n = 0; s[n]; ++n )
;
@@ -3951,7 +3534,3 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 388 "util/configlexer.lex"
-
-
-
diff --git a/contrib/unbound/util/configparser.c b/contrib/unbound/util/configparser.c
index 70de0cc..1f89d57 100644
--- a/contrib/unbound/util/configparser.c
+++ b/contrib/unbound/util/configparser.c
@@ -1,70 +1,21 @@
-/* A Bison parser, made by GNU Bison 2.6.1. */
-
-/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
+#ifndef lint
+static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
+#endif
-/* Identify Bison output. */
-#define YYBISON 1
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
-/* Bison version. */
-#define YYBISON_VERSION "2.6.1"
+#define YYEMPTY (-1)
+#define yyclearin (yychar = YYEMPTY)
+#define yyerrok (yyerrflag = 0)
+#define YYRECOVERING() (yyerrflag != 0)
-/* Skeleton name. */
-#define YYSKELETON_NAME "yacc.c"
+#define YYPREFIX "yy"
-/* Pure parsers. */
#define YYPURE 0
-/* Push parsers. */
-#define YYPUSH 0
-
-/* Pull parsers. */
-#define YYPULL 1
-
-
-
-
-/* Copy the first part of user declarations. */
-/* Line 336 of yacc.c */
-#line 38 "util/configparser.y"
-
+#line 39 "util/configparser.y"
#include "config.h"
#include <stdarg.h>
@@ -89,2010 +40,1023 @@ extern struct config_parser_state* cfg_parser;
#define OUTYY(s)
#endif
-
-/* Line 336 of yacc.c */
-#line 95 "util/configparser.c"
-
-# ifndef YY_NULL
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULL nullptr
-# else
-# define YY_NULL 0
-# endif
-# endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
- by #include "configparser.h". */
-#ifndef YY_UTIL_CONFIGPARSER_H
-# define YY_UTIL_CONFIGPARSER_H
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- SPACE = 258,
- LETTER = 259,
- NEWLINE = 260,
- COMMENT = 261,
- COLON = 262,
- ANY = 263,
- ZONESTR = 264,
- STRING_ARG = 265,
- VAR_SERVER = 266,
- VAR_VERBOSITY = 267,
- VAR_NUM_THREADS = 268,
- VAR_PORT = 269,
- VAR_OUTGOING_RANGE = 270,
- VAR_INTERFACE = 271,
- VAR_DO_IP4 = 272,
- VAR_DO_IP6 = 273,
- VAR_DO_UDP = 274,
- VAR_DO_TCP = 275,
- VAR_CHROOT = 276,
- VAR_USERNAME = 277,
- VAR_DIRECTORY = 278,
- VAR_LOGFILE = 279,
- VAR_PIDFILE = 280,
- VAR_MSG_CACHE_SIZE = 281,
- VAR_MSG_CACHE_SLABS = 282,
- VAR_NUM_QUERIES_PER_THREAD = 283,
- VAR_RRSET_CACHE_SIZE = 284,
- VAR_RRSET_CACHE_SLABS = 285,
- VAR_OUTGOING_NUM_TCP = 286,
- VAR_INFRA_HOST_TTL = 287,
- VAR_INFRA_LAME_TTL = 288,
- VAR_INFRA_CACHE_SLABS = 289,
- VAR_INFRA_CACHE_NUMHOSTS = 290,
- VAR_INFRA_CACHE_LAME_SIZE = 291,
- VAR_NAME = 292,
- VAR_STUB_ZONE = 293,
- VAR_STUB_HOST = 294,
- VAR_STUB_ADDR = 295,
- VAR_TARGET_FETCH_POLICY = 296,
- VAR_HARDEN_SHORT_BUFSIZE = 297,
- VAR_HARDEN_LARGE_QUERIES = 298,
- VAR_FORWARD_ZONE = 299,
- VAR_FORWARD_HOST = 300,
- VAR_FORWARD_ADDR = 301,
- VAR_DO_NOT_QUERY_ADDRESS = 302,
- VAR_HIDE_IDENTITY = 303,
- VAR_HIDE_VERSION = 304,
- VAR_IDENTITY = 305,
- VAR_VERSION = 306,
- VAR_HARDEN_GLUE = 307,
- VAR_MODULE_CONF = 308,
- VAR_TRUST_ANCHOR_FILE = 309,
- VAR_TRUST_ANCHOR = 310,
- VAR_VAL_OVERRIDE_DATE = 311,
- VAR_BOGUS_TTL = 312,
- VAR_VAL_CLEAN_ADDITIONAL = 313,
- VAR_VAL_PERMISSIVE_MODE = 314,
- VAR_INCOMING_NUM_TCP = 315,
- VAR_MSG_BUFFER_SIZE = 316,
- VAR_KEY_CACHE_SIZE = 317,
- VAR_KEY_CACHE_SLABS = 318,
- VAR_TRUSTED_KEYS_FILE = 319,
- VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320,
- VAR_USE_SYSLOG = 321,
- VAR_OUTGOING_INTERFACE = 322,
- VAR_ROOT_HINTS = 323,
- VAR_DO_NOT_QUERY_LOCALHOST = 324,
- VAR_CACHE_MAX_TTL = 325,
- VAR_HARDEN_DNSSEC_STRIPPED = 326,
- VAR_ACCESS_CONTROL = 327,
- VAR_LOCAL_ZONE = 328,
- VAR_LOCAL_DATA = 329,
- VAR_INTERFACE_AUTOMATIC = 330,
- VAR_STATISTICS_INTERVAL = 331,
- VAR_DO_DAEMONIZE = 332,
- VAR_USE_CAPS_FOR_ID = 333,
- VAR_STATISTICS_CUMULATIVE = 334,
- VAR_OUTGOING_PORT_PERMIT = 335,
- VAR_OUTGOING_PORT_AVOID = 336,
- VAR_DLV_ANCHOR_FILE = 337,
- VAR_DLV_ANCHOR = 338,
- VAR_NEG_CACHE_SIZE = 339,
- VAR_HARDEN_REFERRAL_PATH = 340,
- VAR_PRIVATE_ADDRESS = 341,
- VAR_PRIVATE_DOMAIN = 342,
- VAR_REMOTE_CONTROL = 343,
- VAR_CONTROL_ENABLE = 344,
- VAR_CONTROL_INTERFACE = 345,
- VAR_CONTROL_PORT = 346,
- VAR_SERVER_KEY_FILE = 347,
- VAR_SERVER_CERT_FILE = 348,
- VAR_CONTROL_KEY_FILE = 349,
- VAR_CONTROL_CERT_FILE = 350,
- VAR_EXTENDED_STATISTICS = 351,
- VAR_LOCAL_DATA_PTR = 352,
- VAR_JOSTLE_TIMEOUT = 353,
- VAR_STUB_PRIME = 354,
- VAR_UNWANTED_REPLY_THRESHOLD = 355,
- VAR_LOG_TIME_ASCII = 356,
- VAR_DOMAIN_INSECURE = 357,
- VAR_PYTHON = 358,
- VAR_PYTHON_SCRIPT = 359,
- VAR_VAL_SIG_SKEW_MIN = 360,
- VAR_VAL_SIG_SKEW_MAX = 361,
- VAR_CACHE_MIN_TTL = 362,
- VAR_VAL_LOG_LEVEL = 363,
- VAR_AUTO_TRUST_ANCHOR_FILE = 364,
- VAR_KEEP_MISSING = 365,
- VAR_ADD_HOLDDOWN = 366,
- VAR_DEL_HOLDDOWN = 367,
- VAR_SO_RCVBUF = 368,
- VAR_EDNS_BUFFER_SIZE = 369,
- VAR_PREFETCH = 370,
- VAR_PREFETCH_KEY = 371,
- VAR_SO_SNDBUF = 372,
- VAR_HARDEN_BELOW_NXDOMAIN = 373,
- VAR_IGNORE_CD_FLAG = 374,
- VAR_LOG_QUERIES = 375,
- VAR_TCP_UPSTREAM = 376,
- VAR_SSL_UPSTREAM = 377,
- VAR_SSL_SERVICE_KEY = 378,
- VAR_SSL_SERVICE_PEM = 379,
- VAR_SSL_PORT = 380,
- VAR_FORWARD_FIRST = 381,
- VAR_STUB_FIRST = 382,
- VAR_MINIMAL_RESPONSES = 383,
- VAR_RRSET_ROUNDROBIN = 384
- };
-#endif
-/* Tokens. */
-#define SPACE 258
-#define LETTER 259
-#define NEWLINE 260
-#define COMMENT 261
-#define COLON 262
-#define ANY 263
-#define ZONESTR 264
-#define STRING_ARG 265
-#define VAR_SERVER 266
-#define VAR_VERBOSITY 267
-#define VAR_NUM_THREADS 268
-#define VAR_PORT 269
-#define VAR_OUTGOING_RANGE 270
-#define VAR_INTERFACE 271
-#define VAR_DO_IP4 272
-#define VAR_DO_IP6 273
-#define VAR_DO_UDP 274
-#define VAR_DO_TCP 275
-#define VAR_CHROOT 276
-#define VAR_USERNAME 277
-#define VAR_DIRECTORY 278
-#define VAR_LOGFILE 279
-#define VAR_PIDFILE 280
-#define VAR_MSG_CACHE_SIZE 281
-#define VAR_MSG_CACHE_SLABS 282
-#define VAR_NUM_QUERIES_PER_THREAD 283
-#define VAR_RRSET_CACHE_SIZE 284
-#define VAR_RRSET_CACHE_SLABS 285
-#define VAR_OUTGOING_NUM_TCP 286
-#define VAR_INFRA_HOST_TTL 287
-#define VAR_INFRA_LAME_TTL 288
-#define VAR_INFRA_CACHE_SLABS 289
-#define VAR_INFRA_CACHE_NUMHOSTS 290
-#define VAR_INFRA_CACHE_LAME_SIZE 291
-#define VAR_NAME 292
-#define VAR_STUB_ZONE 293
-#define VAR_STUB_HOST 294
-#define VAR_STUB_ADDR 295
-#define VAR_TARGET_FETCH_POLICY 296
-#define VAR_HARDEN_SHORT_BUFSIZE 297
-#define VAR_HARDEN_LARGE_QUERIES 298
-#define VAR_FORWARD_ZONE 299
-#define VAR_FORWARD_HOST 300
-#define VAR_FORWARD_ADDR 301
-#define VAR_DO_NOT_QUERY_ADDRESS 302
-#define VAR_HIDE_IDENTITY 303
-#define VAR_HIDE_VERSION 304
-#define VAR_IDENTITY 305
-#define VAR_VERSION 306
-#define VAR_HARDEN_GLUE 307
-#define VAR_MODULE_CONF 308
-#define VAR_TRUST_ANCHOR_FILE 309
-#define VAR_TRUST_ANCHOR 310
-#define VAR_VAL_OVERRIDE_DATE 311
-#define VAR_BOGUS_TTL 312
-#define VAR_VAL_CLEAN_ADDITIONAL 313
-#define VAR_VAL_PERMISSIVE_MODE 314
-#define VAR_INCOMING_NUM_TCP 315
-#define VAR_MSG_BUFFER_SIZE 316
-#define VAR_KEY_CACHE_SIZE 317
-#define VAR_KEY_CACHE_SLABS 318
-#define VAR_TRUSTED_KEYS_FILE 319
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320
-#define VAR_USE_SYSLOG 321
-#define VAR_OUTGOING_INTERFACE 322
-#define VAR_ROOT_HINTS 323
-#define VAR_DO_NOT_QUERY_LOCALHOST 324
-#define VAR_CACHE_MAX_TTL 325
-#define VAR_HARDEN_DNSSEC_STRIPPED 326
-#define VAR_ACCESS_CONTROL 327
-#define VAR_LOCAL_ZONE 328
-#define VAR_LOCAL_DATA 329
-#define VAR_INTERFACE_AUTOMATIC 330
-#define VAR_STATISTICS_INTERVAL 331
-#define VAR_DO_DAEMONIZE 332
-#define VAR_USE_CAPS_FOR_ID 333
-#define VAR_STATISTICS_CUMULATIVE 334
-#define VAR_OUTGOING_PORT_PERMIT 335
-#define VAR_OUTGOING_PORT_AVOID 336
-#define VAR_DLV_ANCHOR_FILE 337
-#define VAR_DLV_ANCHOR 338
-#define VAR_NEG_CACHE_SIZE 339
-#define VAR_HARDEN_REFERRAL_PATH 340
-#define VAR_PRIVATE_ADDRESS 341
-#define VAR_PRIVATE_DOMAIN 342
-#define VAR_REMOTE_CONTROL 343
-#define VAR_CONTROL_ENABLE 344
-#define VAR_CONTROL_INTERFACE 345
-#define VAR_CONTROL_PORT 346
-#define VAR_SERVER_KEY_FILE 347
-#define VAR_SERVER_CERT_FILE 348
-#define VAR_CONTROL_KEY_FILE 349
-#define VAR_CONTROL_CERT_FILE 350
-#define VAR_EXTENDED_STATISTICS 351
-#define VAR_LOCAL_DATA_PTR 352
-#define VAR_JOSTLE_TIMEOUT 353
-#define VAR_STUB_PRIME 354
-#define VAR_UNWANTED_REPLY_THRESHOLD 355
-#define VAR_LOG_TIME_ASCII 356
-#define VAR_DOMAIN_INSECURE 357
-#define VAR_PYTHON 358
-#define VAR_PYTHON_SCRIPT 359
-#define VAR_VAL_SIG_SKEW_MIN 360
-#define VAR_VAL_SIG_SKEW_MAX 361
-#define VAR_CACHE_MIN_TTL 362
-#define VAR_VAL_LOG_LEVEL 363
-#define VAR_AUTO_TRUST_ANCHOR_FILE 364
-#define VAR_KEEP_MISSING 365
-#define VAR_ADD_HOLDDOWN 366
-#define VAR_DEL_HOLDDOWN 367
-#define VAR_SO_RCVBUF 368
-#define VAR_EDNS_BUFFER_SIZE 369
-#define VAR_PREFETCH 370
-#define VAR_PREFETCH_KEY 371
-#define VAR_SO_SNDBUF 372
-#define VAR_HARDEN_BELOW_NXDOMAIN 373
-#define VAR_IGNORE_CD_FLAG 374
-#define VAR_LOG_QUERIES 375
-#define VAR_TCP_UPSTREAM 376
-#define VAR_SSL_UPSTREAM 377
-#define VAR_SSL_SERVICE_KEY 378
-#define VAR_SSL_SERVICE_PEM 379
-#define VAR_SSL_PORT 380
-#define VAR_FORWARD_FIRST 381
-#define VAR_STUB_FIRST 382
-#define VAR_MINIMAL_RESPONSES 383
-#define VAR_RRSET_ROUNDROBIN 384
-
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-{
-/* Line 350 of yacc.c */
#line 64 "util/configparser.y"
-
+#ifdef YYSTYPE
+#undef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+#endif
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union {
char* str;
-
-
-/* Line 350 of yacc.c */
-#line 401 "util/configparser.c"
} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-extern YYSTYPE yylval;
+#endif /* !YYSTYPE_IS_DECLARED */
+#line 54 "util/configparser.c"
+/* compatibility with bison */
#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-#endif /* !YY_UTIL_CONFIGPARSER_H */
-
-/* Copy the second part of user declarations. */
-
-/* Line 353 of yacc.c */
-#line 429 "util/configparser.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-# define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
# else
-# define YYSIZE_T unsigned int
+# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
#else
-# define YYUSE(e) /* empty */
+# define YYPARSE_DECL() yyparse(void)
#endif
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
#else
-static int
-YYID (yyi)
- int yyi;
-#endif
-{
- return yyi;
-}
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
#endif
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# ifdef YYSTACK_USE_ALLOCA
-# if YYSTACK_USE_ALLOCA
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# elif defined __BUILTIN_VA_ARG_INCR
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-# elif defined _AIX
-# define YYSTACK_ALLOC __alloca
-# elif defined _MSC_VER
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-# define alloca _alloca
-# else
-# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
- /* Use EXIT_SUCCESS as a witness for stdlib.h. */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-# ifndef YYSTACK_ALLOC_MAXIMUM
- /* The OS might guarantee only one guard page at the bottom of the stack,
- and a page size can be as small as 4096 bytes. So we cannot safely
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
- to allow for a few compiler-allocated temporary stack slots. */
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-# endif
-# else
-# define YYSTACK_ALLOC YYMALLOC
-# define YYSTACK_FREE YYFREE
-# ifndef YYSTACK_ALLOC_MAXIMUM
-# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-# endif
-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
- && ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# ifndef YYMALLOC
-# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# ifndef YYFREE
-# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
- && (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- yytype_int16 yyss_alloc;
- YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
-
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-# else
-# define YYCOPY(Dst, Src, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (Dst)[yyi] = (Src)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 2
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 237
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 130
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 133
-/* YYNRULES -- Number of rules. */
-#define YYNRULES 253
-/* YYNRULES -- Number of states. */
-#define YYNSTATES 371
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-#define YYUNDEFTOK 2
-#define YYMAXUTOK 384
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const yytype_uint8 yytranslate[] =
-{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint16 yyprhs[] =
-{
- 0, 0, 3, 4, 7, 10, 13, 16, 19, 22,
- 24, 27, 28, 30, 32, 34, 36, 38, 40, 42,
- 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,
- 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
- 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
- 104, 106, 108, 110, 112, 114, 116, 118, 120, 122,
- 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 174, 176, 178, 180, 182,
- 184, 186, 188, 190, 192, 194, 196, 198, 200, 202,
- 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 229, 230, 232, 234, 236, 238, 240, 242,
- 245, 246, 248, 250, 252, 254, 257, 260, 263, 266,
- 269, 272, 275, 278, 281, 284, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320, 323, 326,
- 329, 332, 335, 338, 341, 344, 347, 350, 353, 356,
- 359, 362, 365, 368, 371, 374, 377, 380, 383, 386,
- 389, 392, 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 434, 437, 440, 443, 446,
- 449, 452, 455, 458, 461, 464, 467, 470, 473, 476,
- 480, 483, 486, 489, 492, 495, 498, 501, 504, 507,
- 510, 513, 516, 519, 522, 525, 528, 531, 534, 538,
- 541, 544, 547, 550, 553, 556, 559, 562, 565, 568,
- 571, 574, 577, 579, 582, 583, 585, 587, 589, 591,
- 593, 595, 597, 600, 603, 606, 609, 612, 615, 618,
- 620, 623, 624, 626
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int16 yyrhs[] =
-{
- 131, 0, -1, -1, 131, 132, -1, 133, 134, -1,
- 136, 137, -1, 139, 140, -1, 259, 260, -1, 249,
- 250, -1, 11, -1, 134, 135, -1, -1, 142, -1,
- 143, -1, 147, -1, 150, -1, 156, -1, 157, -1,
- 158, -1, 159, -1, 148, -1, 169, -1, 170, -1,
- 171, -1, 172, -1, 173, -1, 190, -1, 191, -1,
- 192, -1, 194, -1, 195, -1, 153, -1, 196, -1,
- 197, -1, 200, -1, 198, -1, 199, -1, 201, -1,
- 202, -1, 203, -1, 214, -1, 182, -1, 183, -1,
- 184, -1, 185, -1, 204, -1, 217, -1, 178, -1,
- 180, -1, 218, -1, 223, -1, 224, -1, 225, -1,
- 154, -1, 189, -1, 232, -1, 233, -1, 179, -1,
- 228, -1, 166, -1, 149, -1, 174, -1, 215, -1,
- 221, -1, 205, -1, 216, -1, 235, -1, 236, -1,
- 155, -1, 144, -1, 165, -1, 208, -1, 145, -1,
- 151, -1, 152, -1, 175, -1, 176, -1, 234, -1,
- 207, -1, 209, -1, 210, -1, 146, -1, 237, -1,
- 193, -1, 213, -1, 167, -1, 181, -1, 219, -1,
- 220, -1, 222, -1, 227, -1, 177, -1, 229, -1,
- 230, -1, 231, -1, 186, -1, 188, -1, 211, -1,
- 212, -1, 187, -1, 206, -1, 226, -1, 168, -1,
- 160, -1, 161, -1, 162, -1, 163, -1, 164, -1,
- 238, -1, 239, -1, 38, -1, 137, 138, -1, -1,
- 240, -1, 241, -1, 242, -1, 244, -1, 243, -1,
- 44, -1, 140, 141, -1, -1, 245, -1, 246, -1,
- 247, -1, 248, -1, 13, 10, -1, 12, 10, -1,
- 76, 10, -1, 79, 10, -1, 96, 10, -1, 14,
- 10, -1, 16, 10, -1, 67, 10, -1, 15, 10,
- -1, 80, 10, -1, 81, 10, -1, 31, 10, -1,
- 60, 10, -1, 75, 10, -1, 17, 10, -1, 18,
- 10, -1, 19, 10, -1, 20, 10, -1, 121, 10,
- -1, 122, 10, -1, 123, 10, -1, 124, 10, -1,
- 125, 10, -1, 77, 10, -1, 66, 10, -1, 101,
- 10, -1, 120, 10, -1, 21, 10, -1, 22, 10,
- -1, 23, 10, -1, 24, 10, -1, 25, 10, -1,
- 68, 10, -1, 82, 10, -1, 83, 10, -1, 109,
- 10, -1, 54, 10, -1, 64, 10, -1, 55, 10,
- -1, 102, 10, -1, 48, 10, -1, 49, 10, -1,
- 50, 10, -1, 51, 10, -1, 113, 10, -1, 117,
- 10, -1, 114, 10, -1, 61, 10, -1, 26, 10,
- -1, 27, 10, -1, 28, 10, -1, 98, 10, -1,
- 29, 10, -1, 30, 10, -1, 32, 10, -1, 33,
- 10, -1, 35, 10, -1, 36, 10, -1, 34, 10,
- -1, 41, 10, -1, 42, 10, -1, 43, 10, -1,
- 52, 10, -1, 71, 10, -1, 118, 10, -1, 85,
- 10, -1, 78, 10, -1, 86, 10, -1, 87, 10,
- -1, 115, 10, -1, 116, 10, -1, 100, 10, -1,
- 47, 10, -1, 69, 10, -1, 72, 10, 10, -1,
- 53, 10, -1, 56, 10, -1, 105, 10, -1, 106,
- 10, -1, 70, 10, -1, 107, 10, -1, 57, 10,
- -1, 58, 10, -1, 59, 10, -1, 119, 10, -1,
- 108, 10, -1, 65, 10, -1, 111, 10, -1, 112,
- 10, -1, 110, 10, -1, 62, 10, -1, 63, 10,
- -1, 84, 10, -1, 73, 10, 10, -1, 74, 10,
- -1, 97, 10, -1, 128, 10, -1, 129, 10, -1,
- 37, 10, -1, 39, 10, -1, 40, 10, -1, 127,
- 10, -1, 99, 10, -1, 37, 10, -1, 45, 10,
- -1, 46, 10, -1, 126, 10, -1, 88, -1, 250,
- 251, -1, -1, 252, -1, 254, -1, 253, -1, 255,
- -1, 256, -1, 257, -1, 258, -1, 89, 10, -1,
- 91, 10, -1, 90, 10, -1, 92, 10, -1, 93,
- 10, -1, 94, 10, -1, 95, 10, -1, 103, -1,
- 260, 261, -1, -1, 262, -1, 104, 10, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const yytype_uint16 yyrline[] =
-{
- 0, 110, 110, 110, 111, 111, 112, 112, 113, 117,
- 122, 123, 124, 124, 124, 125, 125, 126, 126, 126,
- 127, 127, 127, 128, 128, 128, 129, 129, 130, 130,
- 131, 131, 132, 132, 133, 133, 134, 134, 135, 135,
- 136, 136, 137, 137, 137, 138, 138, 138, 139, 139,
- 139, 140, 140, 141, 141, 142, 142, 143, 143, 144,
- 144, 144, 145, 145, 146, 146, 147, 147, 147, 148,
- 148, 149, 149, 150, 150, 151, 151, 151, 152, 152,
- 153, 153, 154, 154, 155, 155, 156, 156, 157, 157,
- 157, 158, 158, 159, 159, 159, 160, 160, 160, 161,
- 161, 161, 162, 162, 162, 163, 163, 163, 164, 164,
- 166, 178, 179, 180, 180, 180, 180, 180, 182, 194,
- 195, 196, 196, 196, 196, 198, 207, 216, 227, 236,
- 245, 254, 267, 282, 291, 300, 309, 318, 327, 336,
- 345, 354, 363, 372, 381, 390, 397, 404, 413, 422,
- 436, 445, 454, 461, 468, 475, 483, 490, 497, 504,
- 511, 519, 527, 535, 542, 549, 558, 567, 574, 581,
- 589, 597, 610, 621, 629, 642, 651, 660, 668, 681,
- 690, 698, 707, 715, 728, 735, 745, 755, 765, 775,
- 785, 795, 805, 812, 819, 828, 837, 846, 853, 863,
- 877, 884, 902, 915, 928, 937, 946, 955, 965, 975,
- 984, 993, 1000, 1009, 1018, 1027, 1035, 1048, 1056, 1078,
- 1085, 1100, 1110, 1120, 1130, 1137, 1144, 1153, 1163, 1173,
- 1180, 1187, 1196, 1201, 1202, 1203, 1203, 1203, 1204, 1204,
- 1204, 1205, 1207, 1217, 1226, 1233, 1240, 1247, 1254, 1261,
- 1266, 1267, 1268, 1270
-};
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
- "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT",
- "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY",
- "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE",
- "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_CHROOT",
- "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE",
- "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS",
- "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE",
- "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL",
- "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS",
- "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME",
- "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR",
- "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE",
- "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST",
- "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY",
- "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE",
- "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR",
- "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL",
- "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE",
- "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE",
- "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG",
- "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST",
- "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL",
- "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC",
- "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID",
- "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT",
- "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR",
- "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS",
- "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE",
- "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
- "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
- "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT",
- "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
- "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT",
- "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL",
- "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING",
- "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF",
- "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY",
- "VAR_SO_SNDBUF", "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG",
- "VAR_LOG_QUERIES", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM",
- "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT",
- "VAR_FORWARD_FIRST", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES",
- "VAR_RRSET_ROUNDROBIN", "$accept", "toplevelvars", "toplevelvar",
- "serverstart", "contents_server", "content_server", "stubstart",
- "contents_stub", "content_stub", "forwardstart", "contents_forward",
- "content_forward", "server_num_threads", "server_verbosity",
- "server_statistics_interval", "server_statistics_cumulative",
- "server_extended_statistics", "server_port", "server_interface",
- "server_outgoing_interface", "server_outgoing_range",
- "server_outgoing_port_permit", "server_outgoing_port_avoid",
- "server_outgoing_num_tcp", "server_incoming_num_tcp",
- "server_interface_automatic", "server_do_ip4", "server_do_ip6",
- "server_do_udp", "server_do_tcp", "server_tcp_upstream",
- "server_ssl_upstream", "server_ssl_service_key",
- "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize",
- "server_use_syslog", "server_log_time_ascii", "server_log_queries",
- "server_chroot", "server_username", "server_directory", "server_logfile",
- "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
- "server_dlv_anchor", "server_auto_trust_anchor_file",
- "server_trust_anchor_file", "server_trusted_keys_file",
- "server_trust_anchor", "server_domain_insecure", "server_hide_identity",
- "server_hide_version", "server_identity", "server_version",
- "server_so_rcvbuf", "server_so_sndbuf", "server_edns_buffer_size",
- "server_msg_buffer_size", "server_msg_cache_size",
- "server_msg_cache_slabs", "server_num_queries_per_thread",
- "server_jostle_timeout", "server_rrset_cache_size",
- "server_rrset_cache_slabs", "server_infra_host_ttl",
- "server_infra_lame_ttl", "server_infra_cache_numhosts",
- "server_infra_cache_lame_size", "server_infra_cache_slabs",
- "server_target_fetch_policy", "server_harden_short_bufsize",
- "server_harden_large_queries", "server_harden_glue",
- "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
- "server_harden_referral_path", "server_use_caps_for_id",
- "server_private_address", "server_private_domain", "server_prefetch",
- "server_prefetch_key", "server_unwanted_reply_threshold",
- "server_do_not_query_address", "server_do_not_query_localhost",
- "server_access_control", "server_module_conf",
- "server_val_override_date", "server_val_sig_skew_min",
- "server_val_sig_skew_max", "server_cache_max_ttl",
- "server_cache_min_ttl", "server_bogus_ttl",
- "server_val_clean_additional", "server_val_permissive_mode",
- "server_ignore_cd_flag", "server_val_log_level",
- "server_val_nsec3_keysize_iterations", "server_add_holddown",
- "server_del_holddown", "server_keep_missing", "server_key_cache_size",
- "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
- "server_local_data", "server_local_data_ptr", "server_minimal_responses",
- "server_rrset_roundrobin", "stub_name", "stub_host", "stub_addr",
- "stub_first", "stub_prime", "forward_name", "forward_host",
- "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc",
- "rc_control_enable", "rc_control_port", "rc_control_interface",
- "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file",
- "rc_control_cert_file", "pythonstart", "contents_py", "content_py",
- "py_script", YY_NULL
+extern int YYPARSE_DECL();
+
+#define SPACE 257
+#define LETTER 258
+#define NEWLINE 259
+#define COMMENT 260
+#define COLON 261
+#define ANY 262
+#define ZONESTR 263
+#define STRING_ARG 264
+#define VAR_SERVER 265
+#define VAR_VERBOSITY 266
+#define VAR_NUM_THREADS 267
+#define VAR_PORT 268
+#define VAR_OUTGOING_RANGE 269
+#define VAR_INTERFACE 270
+#define VAR_DO_IP4 271
+#define VAR_DO_IP6 272
+#define VAR_DO_UDP 273
+#define VAR_DO_TCP 274
+#define VAR_CHROOT 275
+#define VAR_USERNAME 276
+#define VAR_DIRECTORY 277
+#define VAR_LOGFILE 278
+#define VAR_PIDFILE 279
+#define VAR_MSG_CACHE_SIZE 280
+#define VAR_MSG_CACHE_SLABS 281
+#define VAR_NUM_QUERIES_PER_THREAD 282
+#define VAR_RRSET_CACHE_SIZE 283
+#define VAR_RRSET_CACHE_SLABS 284
+#define VAR_OUTGOING_NUM_TCP 285
+#define VAR_INFRA_HOST_TTL 286
+#define VAR_INFRA_LAME_TTL 287
+#define VAR_INFRA_CACHE_SLABS 288
+#define VAR_INFRA_CACHE_NUMHOSTS 289
+#define VAR_INFRA_CACHE_LAME_SIZE 290
+#define VAR_NAME 291
+#define VAR_STUB_ZONE 292
+#define VAR_STUB_HOST 293
+#define VAR_STUB_ADDR 294
+#define VAR_TARGET_FETCH_POLICY 295
+#define VAR_HARDEN_SHORT_BUFSIZE 296
+#define VAR_HARDEN_LARGE_QUERIES 297
+#define VAR_FORWARD_ZONE 298
+#define VAR_FORWARD_HOST 299
+#define VAR_FORWARD_ADDR 300
+#define VAR_DO_NOT_QUERY_ADDRESS 301
+#define VAR_HIDE_IDENTITY 302
+#define VAR_HIDE_VERSION 303
+#define VAR_IDENTITY 304
+#define VAR_VERSION 305
+#define VAR_HARDEN_GLUE 306
+#define VAR_MODULE_CONF 307
+#define VAR_TRUST_ANCHOR_FILE 308
+#define VAR_TRUST_ANCHOR 309
+#define VAR_VAL_OVERRIDE_DATE 310
+#define VAR_BOGUS_TTL 311
+#define VAR_VAL_CLEAN_ADDITIONAL 312
+#define VAR_VAL_PERMISSIVE_MODE 313
+#define VAR_INCOMING_NUM_TCP 314
+#define VAR_MSG_BUFFER_SIZE 315
+#define VAR_KEY_CACHE_SIZE 316
+#define VAR_KEY_CACHE_SLABS 317
+#define VAR_TRUSTED_KEYS_FILE 318
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 319
+#define VAR_USE_SYSLOG 320
+#define VAR_OUTGOING_INTERFACE 321
+#define VAR_ROOT_HINTS 322
+#define VAR_DO_NOT_QUERY_LOCALHOST 323
+#define VAR_CACHE_MAX_TTL 324
+#define VAR_HARDEN_DNSSEC_STRIPPED 325
+#define VAR_ACCESS_CONTROL 326
+#define VAR_LOCAL_ZONE 327
+#define VAR_LOCAL_DATA 328
+#define VAR_INTERFACE_AUTOMATIC 329
+#define VAR_STATISTICS_INTERVAL 330
+#define VAR_DO_DAEMONIZE 331
+#define VAR_USE_CAPS_FOR_ID 332
+#define VAR_STATISTICS_CUMULATIVE 333
+#define VAR_OUTGOING_PORT_PERMIT 334
+#define VAR_OUTGOING_PORT_AVOID 335
+#define VAR_DLV_ANCHOR_FILE 336
+#define VAR_DLV_ANCHOR 337
+#define VAR_NEG_CACHE_SIZE 338
+#define VAR_HARDEN_REFERRAL_PATH 339
+#define VAR_PRIVATE_ADDRESS 340
+#define VAR_PRIVATE_DOMAIN 341
+#define VAR_REMOTE_CONTROL 342
+#define VAR_CONTROL_ENABLE 343
+#define VAR_CONTROL_INTERFACE 344
+#define VAR_CONTROL_PORT 345
+#define VAR_SERVER_KEY_FILE 346
+#define VAR_SERVER_CERT_FILE 347
+#define VAR_CONTROL_KEY_FILE 348
+#define VAR_CONTROL_CERT_FILE 349
+#define VAR_EXTENDED_STATISTICS 350
+#define VAR_LOCAL_DATA_PTR 351
+#define VAR_JOSTLE_TIMEOUT 352
+#define VAR_STUB_PRIME 353
+#define VAR_UNWANTED_REPLY_THRESHOLD 354
+#define VAR_LOG_TIME_ASCII 355
+#define VAR_DOMAIN_INSECURE 356
+#define VAR_PYTHON 357
+#define VAR_PYTHON_SCRIPT 358
+#define VAR_VAL_SIG_SKEW_MIN 359
+#define VAR_VAL_SIG_SKEW_MAX 360
+#define VAR_CACHE_MIN_TTL 361
+#define VAR_VAL_LOG_LEVEL 362
+#define VAR_AUTO_TRUST_ANCHOR_FILE 363
+#define VAR_KEEP_MISSING 364
+#define VAR_ADD_HOLDDOWN 365
+#define VAR_DEL_HOLDDOWN 366
+#define VAR_SO_RCVBUF 367
+#define VAR_EDNS_BUFFER_SIZE 368
+#define VAR_PREFETCH 369
+#define VAR_PREFETCH_KEY 370
+#define VAR_SO_SNDBUF 371
+#define VAR_HARDEN_BELOW_NXDOMAIN 372
+#define VAR_IGNORE_CD_FLAG 373
+#define VAR_LOG_QUERIES 374
+#define VAR_TCP_UPSTREAM 375
+#define VAR_SSL_UPSTREAM 376
+#define VAR_SSL_SERVICE_KEY 377
+#define VAR_SSL_SERVICE_PEM 378
+#define VAR_SSL_PORT 379
+#define VAR_FORWARD_FIRST 380
+#define VAR_STUB_FIRST 381
+#define VAR_MINIMAL_RESPONSES 382
+#define VAR_RRSET_ROUNDROBIN 383
+#define YYERRCODE 256
+static const short yylhs[] = { -1,
+ 0, 0, 1, 1, 1, 1, 1, 2, 3, 3,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 4, 5,
+ 5, 111, 111, 111, 111, 111, 6, 7, 7, 117,
+ 117, 117, 117, 13, 14, 70, 73, 82, 15, 21,
+ 61, 16, 74, 75, 32, 54, 69, 17, 18, 19,
+ 20, 104, 105, 106, 107, 108, 71, 60, 86, 103,
+ 22, 23, 24, 25, 26, 62, 76, 77, 92, 48,
+ 58, 49, 87, 42, 43, 44, 45, 96, 100, 97,
+ 55, 27, 28, 29, 84, 30, 31, 33, 34, 36,
+ 37, 35, 38, 39, 40, 46, 65, 101, 79, 72,
+ 80, 81, 98, 99, 85, 41, 63, 66, 47, 50,
+ 88, 89, 64, 90, 51, 52, 53, 102, 91, 59,
+ 93, 94, 95, 56, 57, 78, 67, 68, 83, 109,
+ 110, 112, 113, 114, 116, 115, 118, 119, 120, 121,
+ 10, 11, 11, 122, 122, 122, 122, 122, 122, 122,
+ 123, 125, 124, 126, 127, 128, 129, 8, 9, 9,
+ 130, 131,
};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
-static const yytype_uint16 yytoknum[] =
-{
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384
+static const short yylen[] = { 2,
+ 0, 2, 2, 2, 2, 2, 2, 1, 2, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 0, 1, 1, 1, 1, 1, 1, 2, 0, 1,
+ 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 2, 0, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 1, 2, 0,
+ 1, 2,
};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint16 yyr1[] =
-{
- 0, 130, 131, 131, 132, 132, 132, 132, 132, 133,
- 134, 134, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 136, 137, 137, 138, 138, 138, 138, 138, 139, 140,
- 140, 141, 141, 141, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 250, 251, 251, 251, 251, 251,
- 251, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 260, 261, 262
+static const short yydefred[] = { 1,
+ 0, 8, 109, 117, 231, 248, 2, 10, 111, 119,
+ 250, 233, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 0, 0, 0, 0, 0, 110,
+ 112, 113, 114, 115, 116, 0, 0, 0, 0, 118,
+ 120, 121, 122, 123, 0, 249, 251, 0, 0, 0,
+ 0, 0, 0, 0, 232, 234, 235, 236, 237, 238,
+ 239, 240, 125, 124, 129, 132, 130, 138, 139, 140,
+ 141, 151, 152, 153, 154, 155, 172, 173, 174, 176,
+ 177, 135, 178, 179, 182, 180, 181, 183, 184, 185,
+ 196, 164, 165, 166, 167, 186, 199, 160, 162, 200,
+ 205, 206, 207, 136, 171, 214, 215, 161, 210, 148,
+ 131, 156, 197, 203, 187, 0, 0, 218, 137, 126,
+ 147, 190, 127, 133, 134, 157, 158, 216, 189, 191,
+ 192, 128, 219, 175, 195, 149, 163, 201, 202, 204,
+ 209, 159, 213, 211, 212, 168, 170, 193, 194, 169,
+ 188, 208, 150, 142, 143, 144, 145, 146, 220, 221,
+ 222, 223, 224, 226, 225, 227, 228, 229, 230, 252,
+ 241, 243, 242, 244, 245, 246, 247, 198, 217,
};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
-{
- 0, 2, 0, 2, 2, 2, 2, 2, 2, 1,
- 2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 0, 1, 1, 1, 1, 1, 1, 2,
- 0, 1, 1, 1, 1, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 2, 0, 1, 1, 1, 1, 1,
- 1, 1, 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 0, 1, 2
+static const short yydgoto[] = { 1,
+ 7, 8, 13, 9, 14, 10, 15, 11, 16, 12,
+ 17, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 220, 221, 222, 223, 224, 225, 230, 231, 232, 233,
+ 234, 245, 246, 247, 248, 249, 250, 251, 252, 236,
+ 237,
};
-
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint8 yydefact[] =
-{
- 2, 0, 1, 9, 110, 118, 232, 249, 3, 11,
- 112, 120, 234, 251, 4, 5, 6, 8, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 10, 12, 13,
- 69, 72, 81, 14, 20, 60, 15, 73, 74, 31,
- 53, 68, 16, 17, 18, 19, 103, 104, 105, 106,
- 107, 70, 59, 85, 102, 21, 22, 23, 24, 25,
- 61, 75, 76, 91, 47, 57, 48, 86, 41, 42,
- 43, 44, 95, 99, 96, 54, 26, 27, 28, 83,
- 29, 30, 32, 33, 35, 36, 34, 37, 38, 39,
- 45, 64, 100, 78, 71, 79, 80, 97, 98, 84,
- 40, 62, 65, 46, 49, 87, 88, 63, 89, 50,
- 51, 52, 101, 90, 58, 92, 93, 94, 55, 56,
- 77, 66, 67, 82, 108, 109, 0, 0, 0, 0,
- 0, 111, 113, 114, 115, 117, 116, 0, 0, 0,
- 0, 119, 121, 122, 123, 124, 0, 0, 0, 0,
- 0, 0, 0, 233, 235, 237, 236, 238, 239, 240,
- 241, 0, 250, 252, 126, 125, 130, 133, 131, 139,
- 140, 141, 142, 152, 153, 154, 155, 156, 173, 174,
- 175, 177, 178, 136, 179, 180, 183, 181, 182, 184,
- 185, 186, 197, 165, 166, 167, 168, 187, 200, 161,
- 163, 201, 206, 207, 208, 137, 172, 215, 216, 162,
- 211, 149, 132, 157, 198, 204, 188, 0, 0, 219,
- 138, 127, 148, 191, 128, 134, 135, 158, 159, 217,
- 190, 192, 193, 129, 220, 176, 196, 150, 164, 202,
- 203, 205, 210, 160, 214, 212, 213, 169, 171, 194,
- 195, 170, 189, 209, 151, 143, 144, 145, 146, 147,
- 221, 222, 223, 224, 225, 227, 226, 228, 229, 230,
- 231, 242, 244, 243, 245, 246, 247, 248, 253, 199,
- 218
+static const short yysindex[] = { 0,
+ -172, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -260, -209, -202, -358, -216, -233, -232, -231,
+ -230, -226, -225, -224, -181, -178, -177, -176, -143, -140,
+ -139, -130, -129, -128, -127, -126, -125, -124, -123, -122,
+ -121, -119, -118, -117, -116, -115, -114, -113, -112, -111,
+ -110, -109, -108, -107, -106, -105, -104, -103, -102, -101,
+ -100, -99, -98, -97, -96, -95, -93, -91, -90, -89,
+ -88, -87, -85, -84, -83, -82, -81, -80, -78, -77,
+ -76, -75, -74, -73, -72, -71, -70, -69, -68, -67,
+ -66, -65, -64, -63, -62, -61, -60, -59, -58, -57,
+ -56, -55, -54, -53, -52, -51, -50, -49, -48, -47,
+ -46, -45, -44, -43, -42, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -41, -40, -39, -38, -37, 0,
+ 0, 0, 0, 0, 0, -36, -35, -34, -33, 0,
+ 0, 0, 0, 0, -32, 0, 0, -31, -30, -29,
+ -28, -27, -26, -25, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -24, -23, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
-{
- -1, 1, 8, 9, 14, 117, 10, 15, 221, 11,
- 16, 231, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 222, 223, 224, 225, 226, 232, 233, 234, 235, 12,
- 17, 243, 244, 245, 246, 247, 248, 249, 250, 13,
- 18, 252, 253
+static const short yyrindex[] = { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 2, 3, 4, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -80
-static const yytype_int16 yypact[] =
-{
- -80, 76, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -12, 40, 46, 32, -79, 16,
- 17, 18, 22, 23, 24, 68, 71, 72, 105, 108,
- 109, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 155, 156, 158, 159,
- 160, 161, 163, 164, 165, 166, 167, 168, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, 209, 210, 211, 212,
- 213, -80, -80, -80, -80, -80, -80, 214, 215, 216,
- 217, -80, -80, -80, -80, -80, 218, 219, 220, 221,
- 222, 223, 224, -80, -80, -80, -80, -80, -80, -80,
- -80, 225, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, 226, 227, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80
+static const short yygindex[] = { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
};
-
-/* YYPGOTO[NTERM-NUM]. */
-static const yytype_int8 yypgoto[] =
-{
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80
+#define YYTABLESIZE 362
+static const short yytable[] = { 235,
+ 3, 4, 5, 6, 7, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 253, 254, 255, 256, 43, 44, 45, 257, 258, 259,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 215, 260, 216, 217, 261, 262, 263, 226, 87,
+ 88, 89, 2, 90, 91, 92, 227, 228, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 3,
+ 264, 114, 115, 265, 266, 4, 238, 239, 240, 241,
+ 242, 243, 244, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 218, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 5,
+ 302, 219, 303, 304, 305, 306, 307, 229, 308, 309,
+ 310, 311, 312, 313, 6, 314, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 4, 5, 6, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 4, 5, 6, 7, 0, 3, 4,
+ 5, 6, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 4, 5, 6, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 4, 5,
+ 6, 7,
};
-
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -1
-static const yytype_uint16 yytable[] =
-{
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 251, 254, 255, 256, 44,
- 45, 46, 257, 258, 259, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 2, 216, 260, 217,
- 218, 261, 262, 227, 88, 89, 90, 3, 91, 92,
- 93, 228, 229, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 4, 263, 115, 116, 264, 265,
- 5, 236, 237, 238, 239, 240, 241, 242, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 219,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 6, 301, 302, 220, 303, 304,
- 305, 306, 230, 307, 308, 309, 310, 311, 312, 7,
- 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370
+static const short yycheck[] = { 358,
+ 0, 0, 0, 0, 0, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 264, 264, 264, 264, 295, 296, 297, 264, 264, 264,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 291, 264, 293, 294, 264, 264, 264, 291, 350,
+ 351, 352, 265, 354, 355, 356, 299, 300, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
+ 371, 372, 373, 374, 375, 376, 377, 378, 379, 292,
+ 264, 382, 383, 264, 264, 298, 343, 344, 345, 346,
+ 347, 348, 349, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 353, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 342,
+ 264, 381, 264, 264, 264, 264, 264, 380, 264, 264,
+ 264, 264, 264, 264, 357, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
+ 264, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 265, 265, 265, 265, 265,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 292, 292, 292, 292, 292, -1, 298, 298,
+ 298, 298, 298, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 342, 342, 342, 342, 342, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 357, 357, 357,
+ 357, 357,
};
-
-#define yypact_value_is_default(yystate) \
- ((yystate) == (-80))
-
-#define yytable_value_is_error(yytable_value) \
- YYID (0)
-
-static const yytype_uint8 yycheck[] =
-{
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 104, 10, 10, 10, 41,
- 42, 43, 10, 10, 10, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 0, 37, 10, 39,
- 40, 10, 10, 37, 96, 97, 98, 11, 100, 101,
- 102, 45, 46, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 38, 10, 128, 129, 10, 10,
- 44, 89, 90, 91, 92, 93, 94, 95, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 88, 10, 10, 127, 10, 10,
- 10, 10, 126, 10, 10, 10, 10, 10, 10, 103,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 383
+#if YYDEBUG
+static const char *yyname[] = {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE",
+"COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_SERVER","VAR_VERBOSITY",
+"VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE","VAR_DO_IP4",
+"VAR_DO_IP6","VAR_DO_UDP","VAR_DO_TCP","VAR_CHROOT","VAR_USERNAME",
+"VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE",
+"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE",
+"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL",
+"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS",
+"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST",
+"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE",
+"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST",
+"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY",
+"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE",
+"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR",
+"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL",
+"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE",
+"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE",
+"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE",
+"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL",
+"VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE",
+"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL",
+"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE",
+"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE",
+"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH",
+"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL",
+"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT",
+"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE",
+"VAR_CONTROL_CERT_FILE","VAR_EXTENDED_STATISTICS","VAR_LOCAL_DATA_PTR",
+"VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME","VAR_UNWANTED_REPLY_THRESHOLD",
+"VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE","VAR_PYTHON","VAR_PYTHON_SCRIPT",
+"VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX","VAR_CACHE_MIN_TTL",
+"VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE","VAR_KEEP_MISSING",
+"VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF","VAR_EDNS_BUFFER_SIZE",
+"VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF","VAR_HARDEN_BELOW_NXDOMAIN",
+"VAR_IGNORE_CD_FLAG","VAR_LOG_QUERIES","VAR_TCP_UPSTREAM","VAR_SSL_UPSTREAM",
+"VAR_SSL_SERVICE_KEY","VAR_SSL_SERVICE_PEM","VAR_SSL_PORT","VAR_FORWARD_FIRST",
+"VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES","VAR_RRSET_ROUNDROBIN",
};
+static const char *yyrule[] = {
+"$accept : toplevelvars",
+"toplevelvars :",
+"toplevelvars : toplevelvars toplevelvar",
+"toplevelvar : serverstart contents_server",
+"toplevelvar : stubstart contents_stub",
+"toplevelvar : forwardstart contents_forward",
+"toplevelvar : pythonstart contents_py",
+"toplevelvar : rcstart contents_rc",
+"serverstart : VAR_SERVER",
+"contents_server : contents_server content_server",
+"contents_server :",
+"content_server : server_num_threads",
+"content_server : server_verbosity",
+"content_server : server_port",
+"content_server : server_outgoing_range",
+"content_server : server_do_ip4",
+"content_server : server_do_ip6",
+"content_server : server_do_udp",
+"content_server : server_do_tcp",
+"content_server : server_interface",
+"content_server : server_chroot",
+"content_server : server_username",
+"content_server : server_directory",
+"content_server : server_logfile",
+"content_server : server_pidfile",
+"content_server : server_msg_cache_size",
+"content_server : server_msg_cache_slabs",
+"content_server : server_num_queries_per_thread",
+"content_server : server_rrset_cache_size",
+"content_server : server_rrset_cache_slabs",
+"content_server : server_outgoing_num_tcp",
+"content_server : server_infra_host_ttl",
+"content_server : server_infra_lame_ttl",
+"content_server : server_infra_cache_slabs",
+"content_server : server_infra_cache_numhosts",
+"content_server : server_infra_cache_lame_size",
+"content_server : server_target_fetch_policy",
+"content_server : server_harden_short_bufsize",
+"content_server : server_harden_large_queries",
+"content_server : server_do_not_query_address",
+"content_server : server_hide_identity",
+"content_server : server_hide_version",
+"content_server : server_identity",
+"content_server : server_version",
+"content_server : server_harden_glue",
+"content_server : server_module_conf",
+"content_server : server_trust_anchor_file",
+"content_server : server_trust_anchor",
+"content_server : server_val_override_date",
+"content_server : server_bogus_ttl",
+"content_server : server_val_clean_additional",
+"content_server : server_val_permissive_mode",
+"content_server : server_incoming_num_tcp",
+"content_server : server_msg_buffer_size",
+"content_server : server_key_cache_size",
+"content_server : server_key_cache_slabs",
+"content_server : server_trusted_keys_file",
+"content_server : server_val_nsec3_keysize_iterations",
+"content_server : server_use_syslog",
+"content_server : server_outgoing_interface",
+"content_server : server_root_hints",
+"content_server : server_do_not_query_localhost",
+"content_server : server_cache_max_ttl",
+"content_server : server_harden_dnssec_stripped",
+"content_server : server_access_control",
+"content_server : server_local_zone",
+"content_server : server_local_data",
+"content_server : server_interface_automatic",
+"content_server : server_statistics_interval",
+"content_server : server_do_daemonize",
+"content_server : server_use_caps_for_id",
+"content_server : server_statistics_cumulative",
+"content_server : server_outgoing_port_permit",
+"content_server : server_outgoing_port_avoid",
+"content_server : server_dlv_anchor_file",
+"content_server : server_dlv_anchor",
+"content_server : server_neg_cache_size",
+"content_server : server_harden_referral_path",
+"content_server : server_private_address",
+"content_server : server_private_domain",
+"content_server : server_extended_statistics",
+"content_server : server_local_data_ptr",
+"content_server : server_jostle_timeout",
+"content_server : server_unwanted_reply_threshold",
+"content_server : server_log_time_ascii",
+"content_server : server_domain_insecure",
+"content_server : server_val_sig_skew_min",
+"content_server : server_val_sig_skew_max",
+"content_server : server_cache_min_ttl",
+"content_server : server_val_log_level",
+"content_server : server_auto_trust_anchor_file",
+"content_server : server_add_holddown",
+"content_server : server_del_holddown",
+"content_server : server_keep_missing",
+"content_server : server_so_rcvbuf",
+"content_server : server_edns_buffer_size",
+"content_server : server_prefetch",
+"content_server : server_prefetch_key",
+"content_server : server_so_sndbuf",
+"content_server : server_harden_below_nxdomain",
+"content_server : server_ignore_cd_flag",
+"content_server : server_log_queries",
+"content_server : server_tcp_upstream",
+"content_server : server_ssl_upstream",
+"content_server : server_ssl_service_key",
+"content_server : server_ssl_service_pem",
+"content_server : server_ssl_port",
+"content_server : server_minimal_responses",
+"content_server : server_rrset_roundrobin",
+"stubstart : VAR_STUB_ZONE",
+"contents_stub : contents_stub content_stub",
+"contents_stub :",
+"content_stub : stub_name",
+"content_stub : stub_host",
+"content_stub : stub_addr",
+"content_stub : stub_prime",
+"content_stub : stub_first",
+"forwardstart : VAR_FORWARD_ZONE",
+"contents_forward : contents_forward content_forward",
+"contents_forward :",
+"content_forward : forward_name",
+"content_forward : forward_host",
+"content_forward : forward_addr",
+"content_forward : forward_first",
+"server_num_threads : VAR_NUM_THREADS STRING_ARG",
+"server_verbosity : VAR_VERBOSITY STRING_ARG",
+"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG",
+"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG",
+"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG",
+"server_port : VAR_PORT STRING_ARG",
+"server_interface : VAR_INTERFACE STRING_ARG",
+"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG",
+"server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG",
+"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG",
+"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG",
+"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG",
+"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG",
+"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG",
+"server_do_ip4 : VAR_DO_IP4 STRING_ARG",
+"server_do_ip6 : VAR_DO_IP6 STRING_ARG",
+"server_do_udp : VAR_DO_UDP STRING_ARG",
+"server_do_tcp : VAR_DO_TCP STRING_ARG",
+"server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG",
+"server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG",
+"server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG",
+"server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG",
+"server_ssl_port : VAR_SSL_PORT STRING_ARG",
+"server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG",
+"server_use_syslog : VAR_USE_SYSLOG STRING_ARG",
+"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG",
+"server_log_queries : VAR_LOG_QUERIES STRING_ARG",
+"server_chroot : VAR_CHROOT STRING_ARG",
+"server_username : VAR_USERNAME STRING_ARG",
+"server_directory : VAR_DIRECTORY STRING_ARG",
+"server_logfile : VAR_LOGFILE STRING_ARG",
+"server_pidfile : VAR_PIDFILE STRING_ARG",
+"server_root_hints : VAR_ROOT_HINTS STRING_ARG",
+"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG",
+"server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG",
+"server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG",
+"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG",
+"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG",
+"server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG",
+"server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG",
+"server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG",
+"server_hide_version : VAR_HIDE_VERSION STRING_ARG",
+"server_identity : VAR_IDENTITY STRING_ARG",
+"server_version : VAR_VERSION STRING_ARG",
+"server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG",
+"server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG",
+"server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG",
+"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG",
+"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG",
+"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG",
+"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG",
+"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG",
+"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG",
+"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG",
+"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG",
+"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG",
+"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG",
+"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG",
+"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG",
+"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG",
+"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG",
+"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG",
+"server_harden_glue : VAR_HARDEN_GLUE STRING_ARG",
+"server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG",
+"server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG",
+"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG",
+"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG",
+"server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG",
+"server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG",
+"server_prefetch : VAR_PREFETCH STRING_ARG",
+"server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG",
+"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG",
+"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG",
+"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG",
+"server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG",
+"server_module_conf : VAR_MODULE_CONF STRING_ARG",
+"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG",
+"server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG",
+"server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG",
+"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG",
+"server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG",
+"server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG",
+"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG",
+"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG",
+"server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG",
+"server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG",
+"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG",
+"server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG",
+"server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG",
+"server_keep_missing : VAR_KEEP_MISSING STRING_ARG",
+"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG",
+"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG",
+"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG",
+"server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG",
+"server_local_data : VAR_LOCAL_DATA STRING_ARG",
+"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG",
+"server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG",
+"server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG",
+"stub_name : VAR_NAME STRING_ARG",
+"stub_host : VAR_STUB_HOST STRING_ARG",
+"stub_addr : VAR_STUB_ADDR STRING_ARG",
+"stub_first : VAR_STUB_FIRST STRING_ARG",
+"stub_prime : VAR_STUB_PRIME STRING_ARG",
+"forward_name : VAR_NAME STRING_ARG",
+"forward_host : VAR_FORWARD_HOST STRING_ARG",
+"forward_addr : VAR_FORWARD_ADDR STRING_ARG",
+"forward_first : VAR_FORWARD_FIRST STRING_ARG",
+"rcstart : VAR_REMOTE_CONTROL",
+"contents_rc : contents_rc content_rc",
+"contents_rc :",
+"content_rc : rc_control_enable",
+"content_rc : rc_control_interface",
+"content_rc : rc_control_port",
+"content_rc : rc_server_key_file",
+"content_rc : rc_server_cert_file",
+"content_rc : rc_control_key_file",
+"content_rc : rc_control_cert_file",
+"rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG",
+"rc_control_port : VAR_CONTROL_PORT STRING_ARG",
+"rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG",
+"rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG",
+"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG",
+"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG",
+"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG",
+"pythonstart : VAR_PYTHON",
+"contents_py : contents_py content_py",
+"contents_py :",
+"content_py : py_script",
+"py_script : VAR_PYTHON_SCRIPT STRING_ARG",
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const yytype_uint16 yystos[] =
-{
- 0, 131, 0, 11, 38, 44, 88, 103, 132, 133,
- 136, 139, 249, 259, 134, 137, 140, 250, 260, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 41, 42, 43, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 96, 97,
- 98, 100, 101, 102, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 128, 129, 135, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 37, 39, 40, 99,
- 127, 138, 240, 241, 242, 243, 244, 37, 45, 46,
- 126, 141, 245, 246, 247, 248, 89, 90, 91, 92,
- 93, 94, 95, 251, 252, 253, 254, 255, 256, 257,
- 258, 104, 261, 262, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10
};
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
-
-#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
#endif
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (YYID (0))
-
+int yydebug;
+int yynerrs;
-#define YYTERROR 1
-#define YYERRCODE 256
+int yyerrflag;
+int yychar;
+YYSTYPE yyval;
+YYSTYPE yylval;
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (YYID (0))
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH 500
#endif
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-
-
-
-/* This macro is provided for backward compatibility. */
-
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
+#define YYINITSTACKSIZE 500
-/* YYLEX -- calling `yylex' with the right arguments. */
+typedef struct {
+ unsigned stacksize;
+ short *s_base;
+ short *s_mark;
+ short *s_last;
+ YYSTYPE *l_base;
+ YYSTYPE *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 1277 "util/configparser.y"
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
+/* parse helper routines could be here */
+#line 845 "util/configparser.c"
-/* Enable debugging if requested. */
#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
+#include <stdio.h> /* needed for printf */
#endif
-{
- FILE *yyo = yyoutput;
- YYUSE (yyo);
- if (!yyvaluep)
- return;
-# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYUSE (yyoutput);
-# endif
- switch (yytype)
- {
- default:
- break;
- }
-}
+#include <stdlib.h> /* needed for malloc, etc */
+#include <string.h> /* needed for memset */
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
{
- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
+ int i;
+ unsigned newsize;
+ short *newss;
+ YYSTYPE *newvs;
+
+ if ((newsize = data->stacksize) == 0)
+ newsize = YYINITSTACKSIZE;
+ else if (newsize >= YYMAXDEPTH)
+ return -1;
+ else if ((newsize *= 2) > YYMAXDEPTH)
+ newsize = YYMAXDEPTH;
+
+ i = (int) (data->s_mark - data->s_base);
+ newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
+ if (newss == 0)
+ return -1;
+
+ data->s_base = newss;
+ data->s_mark = newss + i;
+
+ newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+ if (newvs == 0)
+ return -1;
+
+ data->l_base = newvs;
+ data->l_mark = newvs + i;
+
+ data->stacksize = newsize;
+ data->s_last = data->s_base + newsize - 1;
+ return 0;
}
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included). |
-`------------------------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
- yytype_int16 *yybottom;
- yytype_int16 *yytop;
-#endif
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
{
- YYFPRINTF (stderr, "Stack now");
- for (; yybottom <= yytop; yybottom++)
- {
- int yybot = *yybottom;
- YYFPRINTF (stderr, " %d", yybot);
- }
- YYFPRINTF (stderr, "\n");
+ free(data->s_base);
+ free(data->l_base);
+ memset(data, 0, sizeof(*data));
}
-
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
#else
-static void
-yy_reduce_print (yyvsp, yyrule)
- YYSTYPE *yyvsp;
- int yyrule;
+#define yyfreestack(data) /* nothing */
#endif
-{
- int yynrhs = yyr2[yyrule];
- int yyi;
- unsigned long int yylno = yyrline[yyrule];
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++)
- {
- YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
- YYFPRINTF (stderr, "\n");
- }
-}
-
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
+#define YYABORT goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR goto yyerrlab
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
- const char *yystr;
-#endif
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
+int
+YYPARSE_DECL()
{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
+ int yym, yyn, yystate;
+#if YYDEBUG
+ const char *yys;
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
+ if ((yys = getenv("YYDEBUG")) != 0)
{
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
+ yyn = *yys;
+ if (yyn >= '0' && yyn <= '9')
+ yydebug = yyn - '0';
}
+#endif
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
+ yynerrs = 0;
+ yyerrflag = 0;
+ yychar = YYEMPTY;
+ yystate = 0;
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
+#if YYPURE
+ memset(&yystack, 0, sizeof(yystack));
+#endif
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
-{
- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULL;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
+ if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
+ yystack.s_mark = yystack.s_base;
+ yystack.l_mark = yystack.l_base;
+ yystate = 0;
+ *yystack.s_mark = 0;
- /* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider. See
- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
- for details. YYERROR is fine as it does not invoke this
- function.
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
+yyloop:
+ if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
+ if (yychar < 0)
{
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
+ if ((yychar = YYLEX) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
{
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
}
+#endif
}
-
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
-
- yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
-
- if (*yymsg_alloc < yysize)
+ if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
-
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, shifting to state %d\n",
+ YYPREFIX, yystate, yytable[yyn]);
+#endif
+ if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
{
- yyp++;
- yyformat++;
+ goto yyoverflow;
}
- }
- return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
-{
- YYUSE (yyvaluep);
-
- if (!yymsg)
- yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
- switch (yytype)
- {
-
- default:
- break;
+ yystate = yytable[yyn];
+ *++yystack.s_mark = yytable[yyn];
+ *++yystack.l_mark = yylval;
+ yychar = YYEMPTY;
+ if (yyerrflag > 0) --yyerrflag;
+ goto yyloop;
}
-}
-
-
-
-
-/* The lookahead symbol. */
-int yychar;
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far. */
-int yynerrs;
-
-
-/*----------.
-| yyparse. |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
-{
- int yystate;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- `yyss': related to states.
- `yyvs': related to semantic values.
-
- Refer to the stacks through separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
-
- YYSIZE_T yystacksize;
-
- int yyn;
- int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken;
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
-
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;
-
- yytoken = 0;
- yyss = yyssa;
- yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
- yyssp = yyss;
- yyvsp = yyvs;
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyss + yystacksize - 1 <= yyssp)
+ if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
-
- {
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
+ yyn = yytable[yyn];
+ goto yyreduce;
}
+ if (yyerrflag) goto yyinrecovery;
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- if (yystate == YYFINAL)
- YYACCEPT;
+ yyerror("syntax error");
- goto yybackup;
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
- /* Do appropriate processing given the current state. Read a
- lookahead token if we need one and don't already have one. */
-
- /* First try to decide what to do without reference to lookahead token. */
- yyn = yypact[yystate];
- if (yypact_value_is_default (yyn))
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
+ goto yyerrlab;
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
+yyerrlab:
+ ++yynerrs;
- if (yychar <= YYEOF)
+yyinrecovery:
+ if (yyerrflag < 3)
{
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ yyerrflag = 3;
+ for (;;)
+ {
+ if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+ if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
+ {
+ goto yyoverflow;
+ }
+ yystate = yytable[yyn];
+ *++yystack.s_mark = yytable[yyn];
+ *++yystack.l_mark = yylval;
+ goto yyloop;
+ }
+ else
+ {
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: error recovery discarding state %d\n",
+ YYPREFIX, *yystack.s_mark);
+#endif
+ if (yystack.s_mark <= yystack.s_base) goto yyabort;
+ --yystack.s_mark;
+ --yystack.l_mark;
+ }
+ }
}
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
- yyn = yytable[yyn];
- if (yyn <= 0)
+ else
{
- if (yytable_value_is_error (yyn))
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
+ if (yychar == 0) goto yyabort;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+ YYPREFIX, yystate, yychar, yys);
+ }
+#endif
+ yychar = YYEMPTY;
+ goto yyloop;
}
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- /* Shift the lookahead token. */
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
- yystate = yyn;
- *++yyvsp = yylval;
-
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-
- YY_REDUCE_PRINT (yyn);
- switch (yyn)
- {
- case 9:
-/* Line 1787 of yacc.c */
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+ YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+ yym = yylen[yyn];
+ if (yym)
+ yyval = yystack.l_mark[1-yym];
+ else
+ memset(&yyval, 0, sizeof yyval);
+ switch (yyn)
+ {
+case 8:
#line 118 "util/configparser.y"
- {
+ {
OUTYY(("\nP(server:)\n"));
}
- break;
-
- case 110:
-/* Line 1787 of yacc.c */
+break;
+case 109:
#line 167 "util/configparser.y"
- {
+ {
struct config_stub* s;
OUTYY(("\nP(stub_zone:)\n"));
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2102,12 +1066,10 @@ yyreduce:
} else
yyerror("out of memory");
}
- break;
-
- case 118:
-/* Line 1787 of yacc.c */
+break;
+case 117:
#line 183 "util/configparser.y"
- {
+ {
struct config_stub* s;
OUTYY(("\nP(forward_zone:)\n"));
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
@@ -2117,87 +1079,73 @@ yyreduce:
} else
yyerror("out of memory");
}
- break;
-
- case 125:
-/* Line 1787 of yacc.c */
+break;
+case 124:
#line 199 "util/configparser.y"
- {
- OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_num_threads:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->num_threads = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 126:
-/* Line 1787 of yacc.c */
+break;
+case 125:
#line 208 "util/configparser.y"
- {
- OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_verbosity:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->verbosity = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 127:
-/* Line 1787 of yacc.c */
+break;
+case 126:
#line 217 "util/configparser.y"
- {
- OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
+ {
+ OUTYY(("P(server_statistics_interval:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0)
cfg_parser->cfg->stat_interval = 0;
- else if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ else if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->stat_interval = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 128:
-/* Line 1787 of yacc.c */
+break;
+case 127:
#line 228 "util/configparser.y"
- {
- OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_statistics_cumulative:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->stat_cumulative = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 129:
-/* Line 1787 of yacc.c */
+break;
+case 128:
#line 237 "util/configparser.y"
- {
- OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_extended_statistics:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->stat_extended = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 130:
-/* Line 1787 of yacc.c */
+break;
+case 129:
#line 246 "util/configparser.y"
- {
- OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_port:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("port number expected");
- else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->port = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 131:
-/* Line 1787 of yacc.c */
+break;
+case 130:
#line 255 "util/configparser.y"
- {
- OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_interface:%s)\n", yystack.l_mark[0].str));
if(cfg_parser->cfg->num_ifs == 0)
cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
@@ -2205,15 +1153,13 @@ yyreduce:
if(!cfg_parser->cfg->ifs)
yyerror("out of memory");
else
- cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yystack.l_mark[0].str;
}
- break;
-
- case 132:
-/* Line 1787 of yacc.c */
+break;
+case 131:
#line 268 "util/configparser.y"
- {
- OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_outgoing_interface:%s)\n", yystack.l_mark[0].str));
if(cfg_parser->cfg->num_out_ifs == 0)
cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
else cfg_parser->cfg->out_ifs = realloc(
@@ -2223,1082 +1169,906 @@ yyreduce:
yyerror("out of memory");
else
cfg_parser->cfg->out_ifs[
- cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->num_out_ifs++] = yystack.l_mark[0].str;
}
- break;
-
- case 133:
-/* Line 1787 of yacc.c */
+break;
+case 132:
#line 283 "util/configparser.y"
- {
- OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_outgoing_range:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->outgoing_num_ports = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 134:
-/* Line 1787 of yacc.c */
+break;
+case 133:
#line 292 "util/configparser.y"
- {
- OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1,
+ {
+ OUTYY(("P(server_outgoing_port_permit:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_mark_ports(yystack.l_mark[0].str, 1,
cfg_parser->cfg->outgoing_avail_ports, 65536))
yyerror("port number or range (\"low-high\") expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 135:
-/* Line 1787 of yacc.c */
+break;
+case 134:
#line 301 "util/configparser.y"
- {
- OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0,
+ {
+ OUTYY(("P(server_outgoing_port_avoid:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_mark_ports(yystack.l_mark[0].str, 0,
cfg_parser->cfg->outgoing_avail_ports, 65536))
yyerror("port number or range (\"low-high\") expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 136:
-/* Line 1787 of yacc.c */
+break;
+case 135:
#line 310 "util/configparser.y"
- {
- OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_outgoing_num_tcp:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->outgoing_num_tcp = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 137:
-/* Line 1787 of yacc.c */
+break;
+case 136:
#line 319 "util/configparser.y"
- {
- OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_incoming_num_tcp:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->incoming_num_tcp = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 138:
-/* Line 1787 of yacc.c */
+break;
+case 137:
#line 328 "util/configparser.y"
- {
- OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_interface_automatic:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->if_automatic = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 139:
-/* Line 1787 of yacc.c */
+break;
+case 138:
#line 337 "util/configparser.y"
- {
- OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_ip4:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->do_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 140:
-/* Line 1787 of yacc.c */
+break;
+case 139:
#line 346 "util/configparser.y"
- {
- OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_ip6:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->do_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 141:
-/* Line 1787 of yacc.c */
+break;
+case 140:
#line 355 "util/configparser.y"
- {
- OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_udp:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->do_udp = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 142:
-/* Line 1787 of yacc.c */
+break;
+case 141:
#line 364 "util/configparser.y"
- {
- OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_tcp:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->do_tcp = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 143:
-/* Line 1787 of yacc.c */
+break;
+case 142:
#line 373 "util/configparser.y"
- {
- OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_tcp_upstream:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->tcp_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 144:
-/* Line 1787 of yacc.c */
+break;
+case 143:
#line 382 "util/configparser.y"
- {
- OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_ssl_upstream:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->ssl_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 145:
-/* Line 1787 of yacc.c */
+break;
+case 144:
#line 391 "util/configparser.y"
- {
- OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_ssl_service_key:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->ssl_service_key);
- cfg_parser->cfg->ssl_service_key = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->ssl_service_key = yystack.l_mark[0].str;
}
- break;
-
- case 146:
-/* Line 1787 of yacc.c */
+break;
+case 145:
#line 398 "util/configparser.y"
- {
- OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_ssl_service_pem:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->ssl_service_pem);
- cfg_parser->cfg->ssl_service_pem = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->ssl_service_pem = yystack.l_mark[0].str;
}
- break;
-
- case 147:
-/* Line 1787 of yacc.c */
+break;
+case 146:
#line 405 "util/configparser.y"
- {
- OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_ssl_port:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("port number expected");
- else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->ssl_port = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 148:
-/* Line 1787 of yacc.c */
+break;
+case 147:
#line 414 "util/configparser.y"
- {
- OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_daemonize:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->do_daemonize = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 149:
-/* Line 1787 of yacc.c */
+break;
+case 148:
#line 423 "util/configparser.y"
- {
- OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_use_syslog:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+ else cfg_parser->cfg->use_syslog = (strcmp(yystack.l_mark[0].str, "yes")==0);
#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
- if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0)
+ if(strcmp(yystack.l_mark[0].str, "yes") == 0)
yyerror("no syslog services are available. "
"(reconfigure and compile to add)");
#endif
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 150:
-/* Line 1787 of yacc.c */
+break;
+case 149:
#line 437 "util/configparser.y"
- {
- OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_log_time_ascii:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->log_time_ascii = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 151:
-/* Line 1787 of yacc.c */
+break;
+case 150:
#line 446 "util/configparser.y"
- {
- OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_log_queries:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->log_queries = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 152:
-/* Line 1787 of yacc.c */
+break;
+case 151:
#line 455 "util/configparser.y"
- {
- OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_chroot:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->chrootdir);
- cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->chrootdir = yystack.l_mark[0].str;
}
- break;
-
- case 153:
-/* Line 1787 of yacc.c */
+break;
+case 152:
#line 462 "util/configparser.y"
- {
- OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_username:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->username);
- cfg_parser->cfg->username = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->username = yystack.l_mark[0].str;
}
- break;
-
- case 154:
-/* Line 1787 of yacc.c */
+break;
+case 153:
#line 469 "util/configparser.y"
- {
- OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_directory:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->directory);
- cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->directory = yystack.l_mark[0].str;
}
- break;
-
- case 155:
-/* Line 1787 of yacc.c */
+break;
+case 154:
#line 476 "util/configparser.y"
- {
- OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_logfile:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->logfile);
- cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->logfile = yystack.l_mark[0].str;
cfg_parser->cfg->use_syslog = 0;
}
- break;
-
- case 156:
-/* Line 1787 of yacc.c */
+break;
+case 155:
#line 484 "util/configparser.y"
- {
- OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_pidfile:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->pidfile);
- cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->pidfile = yystack.l_mark[0].str;
}
- break;
-
- case 157:
-/* Line 1787 of yacc.c */
+break;
+case 156:
#line 491 "util/configparser.y"
- {
- OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_root_hints:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 158:
-/* Line 1787 of yacc.c */
+break;
+case 157:
#line 498 "util/configparser.y"
- {
- OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_dlv_anchor_file:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->dlv_anchor_file);
- cfg_parser->cfg->dlv_anchor_file = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->dlv_anchor_file = yystack.l_mark[0].str;
}
- break;
-
- case 159:
-/* Line 1787 of yacc.c */
+break;
+case 158:
#line 505 "util/configparser.y"
- {
- OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_dlv_anchor:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 160:
-/* Line 1787 of yacc.c */
+break;
+case 159:
#line 512 "util/configparser.y"
- {
- OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
if(!cfg_strlist_insert(&cfg_parser->cfg->
- auto_trust_anchor_file_list, (yyvsp[(2) - (2)].str)))
+ auto_trust_anchor_file_list, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 161:
-/* Line 1787 of yacc.c */
+break;
+case 160:
#line 520 "util/configparser.y"
- {
- OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_trust_anchor_file:%s)\n", yystack.l_mark[0].str));
if(!cfg_strlist_insert(&cfg_parser->cfg->
- trust_anchor_file_list, (yyvsp[(2) - (2)].str)))
+ trust_anchor_file_list, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 162:
-/* Line 1787 of yacc.c */
+break;
+case 161:
#line 528 "util/configparser.y"
- {
- OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_trusted_keys_file:%s)\n", yystack.l_mark[0].str));
if(!cfg_strlist_insert(&cfg_parser->cfg->
- trusted_keys_file_list, (yyvsp[(2) - (2)].str)))
+ trusted_keys_file_list, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 163:
-/* Line 1787 of yacc.c */
+break;
+case 162:
#line 536 "util/configparser.y"
- {
- OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_trust_anchor:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 164:
-/* Line 1787 of yacc.c */
+break;
+case 163:
#line 543 "util/configparser.y"
- {
- OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_domain_insecure:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 165:
-/* Line 1787 of yacc.c */
+break;
+case 164:
#line 550 "util/configparser.y"
- {
- OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_hide_identity:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->hide_identity = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 166:
-/* Line 1787 of yacc.c */
+break;
+case 165:
#line 559 "util/configparser.y"
- {
- OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_hide_version:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->hide_version = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 167:
-/* Line 1787 of yacc.c */
+break;
+case 166:
#line 568 "util/configparser.y"
- {
- OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_identity:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->identity);
- cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->identity = yystack.l_mark[0].str;
}
- break;
-
- case 168:
-/* Line 1787 of yacc.c */
+break;
+case 167:
#line 575 "util/configparser.y"
- {
- OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_version:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->version);
- cfg_parser->cfg->version = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->version = yystack.l_mark[0].str;
}
- break;
-
- case 169:
-/* Line 1787 of yacc.c */
+break;
+case 168:
#line 582 "util/configparser.y"
- {
- OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
+ {
+ OUTYY(("P(server_so_rcvbuf:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_rcvbuf))
yyerror("buffer size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 170:
-/* Line 1787 of yacc.c */
+break;
+case 169:
#line 590 "util/configparser.y"
- {
- OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
+ {
+ OUTYY(("P(server_so_sndbuf:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_sndbuf))
yyerror("buffer size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 171:
-/* Line 1787 of yacc.c */
+break;
+case 170:
#line 598 "util/configparser.y"
- {
- OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_edns_buffer_size:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else if (atoi((yyvsp[(2) - (2)].str)) < 12)
+ else if (atoi(yystack.l_mark[0].str) < 12)
yyerror("edns buffer size too small");
- else if (atoi((yyvsp[(2) - (2)].str)) > 65535)
+ else if (atoi(yystack.l_mark[0].str) > 65535)
cfg_parser->cfg->edns_buffer_size = 65535;
- else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->edns_buffer_size = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 172:
-/* Line 1787 of yacc.c */
+break;
+case 171:
#line 611 "util/configparser.y"
- {
- OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_msg_buffer_size:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else if (atoi((yyvsp[(2) - (2)].str)) < 4096)
+ else if (atoi(yystack.l_mark[0].str) < 4096)
yyerror("message buffer size too small (use 4096)");
- else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->msg_buffer_size = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 173:
-/* Line 1787 of yacc.c */
+break;
+case 172:
#line 622 "util/configparser.y"
- {
- OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
+ {
+ OUTYY(("P(server_msg_cache_size:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->msg_cache_size))
yyerror("memory size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 174:
-/* Line 1787 of yacc.c */
+break;
+case 173:
#line 630 "util/configparser.y"
- {
- OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_msg_cache_slabs:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
else {
- cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->msg_cache_slabs = atoi(yystack.l_mark[0].str);
if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
yyerror("must be a power of 2");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 175:
-/* Line 1787 of yacc.c */
+break;
+case 174:
#line 643 "util/configparser.y"
- {
- OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_num_queries_per_thread:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->num_queries_per_thread = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 176:
-/* Line 1787 of yacc.c */
+break;
+case 175:
#line 652 "util/configparser.y"
- {
- OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_jostle_timeout:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->jostle_time = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 177:
-/* Line 1787 of yacc.c */
+break;
+case 176:
#line 661 "util/configparser.y"
- {
- OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
+ {
+ OUTYY(("P(server_rrset_cache_size:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->rrset_cache_size))
yyerror("memory size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 178:
-/* Line 1787 of yacc.c */
+break;
+case 177:
#line 669 "util/configparser.y"
- {
- OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_rrset_cache_slabs:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
else {
- cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->rrset_cache_slabs = atoi(yystack.l_mark[0].str);
if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
yyerror("must be a power of 2");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 179:
-/* Line 1787 of yacc.c */
+break;
+case 178:
#line 682 "util/configparser.y"
- {
- OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_infra_host_ttl:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->host_ttl = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 180:
-/* Line 1787 of yacc.c */
+break;
+case 179:
#line 691 "util/configparser.y"
- {
- OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_infra_lame_ttl:%s)\n", yystack.l_mark[0].str));
verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
- "removed, use infra-host-ttl)", (yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ "removed, use infra-host-ttl)", yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 181:
-/* Line 1787 of yacc.c */
+break;
+case 180:
#line 699 "util/configparser.y"
- {
- OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_infra_cache_numhosts:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->infra_cache_numhosts = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 182:
-/* Line 1787 of yacc.c */
+break;
+case 181:
#line 708 "util/configparser.y"
- {
- OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_infra_cache_lame_size:%s)\n", yystack.l_mark[0].str));
verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
- "(option removed, use infra-cache-numhosts)", (yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ "(option removed, use infra-cache-numhosts)", yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 183:
-/* Line 1787 of yacc.c */
+break;
+case 182:
#line 716 "util/configparser.y"
- {
- OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_infra_cache_slabs:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
else {
- cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->infra_cache_slabs = atoi(yystack.l_mark[0].str);
if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
yyerror("must be a power of 2");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 184:
-/* Line 1787 of yacc.c */
+break;
+case 183:
#line 729 "util/configparser.y"
- {
- OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_target_fetch_policy:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->target_fetch_policy);
- cfg_parser->cfg->target_fetch_policy = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->target_fetch_policy = yystack.l_mark[0].str;
}
- break;
-
- case 185:
-/* Line 1787 of yacc.c */
+break;
+case 184:
#line 736 "util/configparser.y"
- {
- OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_short_bufsize:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_short_bufsize =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 186:
-/* Line 1787 of yacc.c */
+break;
+case 185:
#line 746 "util/configparser.y"
- {
- OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_large_queries:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_large_queries =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 187:
-/* Line 1787 of yacc.c */
+break;
+case 186:
#line 756 "util/configparser.y"
- {
- OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_glue:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_glue =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 188:
-/* Line 1787 of yacc.c */
+break;
+case 187:
#line 766 "util/configparser.y"
- {
- OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_dnssec_stripped =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 189:
-/* Line 1787 of yacc.c */
+break;
+case 188:
#line 776 "util/configparser.y"
- {
- OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_below_nxdomain:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_below_nxdomain =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 190:
-/* Line 1787 of yacc.c */
+break;
+case 189:
#line 786 "util/configparser.y"
- {
- OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_harden_referral_path:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->harden_referral_path =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 191:
-/* Line 1787 of yacc.c */
+break;
+case 190:
#line 796 "util/configparser.y"
- {
- OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_use_caps_for_id:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->use_caps_bits_for_id =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 192:
-/* Line 1787 of yacc.c */
+break;
+case 191:
#line 806 "util/configparser.y"
- {
- OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_private_address:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 193:
-/* Line 1787 of yacc.c */
+break;
+case 192:
#line 813 "util/configparser.y"
- {
- OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_private_domain:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 194:
-/* Line 1787 of yacc.c */
+break;
+case 193:
#line 820 "util/configparser.y"
- {
- OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_prefetch:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->prefetch = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 195:
-/* Line 1787 of yacc.c */
+break;
+case 194:
#line 829 "util/configparser.y"
- {
- OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_prefetch_key:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->prefetch_key = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 196:
-/* Line 1787 of yacc.c */
+break;
+case 195:
#line 838 "util/configparser.y"
- {
- OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->unwanted_threshold = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 197:
-/* Line 1787 of yacc.c */
+break;
+case 196:
#line 847 "util/configparser.y"
- {
- OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_do_not_query_address:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 198:
-/* Line 1787 of yacc.c */
+break;
+case 197:
#line 854 "util/configparser.y"
- {
- OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_do_not_query_localhost:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->donotquery_localhost =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 199:
-/* Line 1787 of yacc.c */
+break;
+case 198:
#line 864 "util/configparser.y"
- {
- OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
- if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
- strcmp((yyvsp[(3) - (3)].str), "allow")!=0 &&
- strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) {
+ {
+ OUTYY(("P(server_access_control:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "deny")!=0 && strcmp(yystack.l_mark[0].str, "refuse")!=0 &&
+ strcmp(yystack.l_mark[0].str, "allow")!=0 &&
+ strcmp(yystack.l_mark[0].str, "allow_snoop")!=0) {
yyerror("expected deny, refuse, allow or allow_snoop "
"in access control action");
} else {
- if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
+ if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yystack.l_mark[-1].str, yystack.l_mark[0].str))
fatal_exit("out of memory adding acl");
}
}
- break;
-
- case 200:
-/* Line 1787 of yacc.c */
+break;
+case 199:
#line 878 "util/configparser.y"
- {
- OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_module_conf:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->module_conf);
- cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->module_conf = yystack.l_mark[0].str;
}
- break;
-
- case 201:
-/* Line 1787 of yacc.c */
+break;
+case 200:
#line 885 "util/configparser.y"
- {
- OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
+ {
+ OUTYY(("P(server_val_override_date:%s)\n", yystack.l_mark[0].str));
+ if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
cfg_parser->cfg->val_date_override = 0;
- } else if(strlen((yyvsp[(2) - (2)].str)) == 14) {
+ } else if(strlen(yystack.l_mark[0].str) == 14) {
cfg_parser->cfg->val_date_override =
- cfg_convert_timeval((yyvsp[(2) - (2)].str));
+ cfg_convert_timeval(yystack.l_mark[0].str);
if(!cfg_parser->cfg->val_date_override)
yyerror("bad date/time specification");
} else {
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
- cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->val_date_override = atoi(yystack.l_mark[0].str);
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 202:
-/* Line 1787 of yacc.c */
+break;
+case 201:
#line 903 "util/configparser.y"
- {
- OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
+ {
+ OUTYY(("P(server_val_sig_skew_min:%s)\n", yystack.l_mark[0].str));
+ if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
cfg_parser->cfg->val_sig_skew_min = 0;
} else {
- cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->val_sig_skew_min = atoi(yystack.l_mark[0].str);
if(!cfg_parser->cfg->val_sig_skew_min)
yyerror("number expected");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 203:
-/* Line 1787 of yacc.c */
+break;
+case 202:
#line 916 "util/configparser.y"
- {
- OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
+ {
+ OUTYY(("P(server_val_sig_skew_max:%s)\n", yystack.l_mark[0].str));
+ if(strlen(yystack.l_mark[0].str) == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) {
cfg_parser->cfg->val_sig_skew_max = 0;
} else {
- cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->val_sig_skew_max = atoi(yystack.l_mark[0].str);
if(!cfg_parser->cfg->val_sig_skew_max)
yyerror("number expected");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 204:
-/* Line 1787 of yacc.c */
+break;
+case 203:
#line 929 "util/configparser.y"
- {
- OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_cache_max_ttl:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->max_ttl = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 205:
-/* Line 1787 of yacc.c */
+break;
+case 204:
#line 938 "util/configparser.y"
- {
- OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_cache_min_ttl:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->min_ttl = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 206:
-/* Line 1787 of yacc.c */
+break;
+case 205:
#line 947 "util/configparser.y"
- {
- OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_bogus_ttl:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->bogus_ttl = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 207:
-/* Line 1787 of yacc.c */
+break;
+case 206:
#line 956 "util/configparser.y"
- {
- OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_val_clean_additional:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->val_clean_additional =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 208:
-/* Line 1787 of yacc.c */
+break;
+case 207:
#line 966 "util/configparser.y"
- {
- OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_val_permissive_mode:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->val_permissive_mode =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 209:
-/* Line 1787 of yacc.c */
+break;
+case 208:
#line 976 "util/configparser.y"
- {
- OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_ignore_cd_flag:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->ignore_cd = (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 210:
-/* Line 1787 of yacc.c */
+break;
+case 209:
#line 985 "util/configparser.y"
- {
- OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_val_log_level:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->val_log_level = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 211:
-/* Line 1787 of yacc.c */
+break;
+case 210:
#line 994 "util/configparser.y"
- {
- OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->val_nsec3_key_iterations);
- cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->val_nsec3_key_iterations = yystack.l_mark[0].str;
}
- break;
-
- case 212:
-/* Line 1787 of yacc.c */
+break;
+case 211:
#line 1001 "util/configparser.y"
- {
- OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_add_holddown:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->add_holddown = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 213:
-/* Line 1787 of yacc.c */
+break;
+case 212:
#line 1010 "util/configparser.y"
- {
- OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_del_holddown:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->del_holddown = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 214:
-/* Line 1787 of yacc.c */
+break;
+case 213:
#line 1019 "util/configparser.y"
- {
- OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
+ {
+ OUTYY(("P(server_keep_missing:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0)
yyerror("number expected");
- else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->keep_missing = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 215:
-/* Line 1787 of yacc.c */
+break;
+case 214:
#line 1028 "util/configparser.y"
- {
- OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
+ {
+ OUTYY(("P(server_key_cache_size:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->key_cache_size))
yyerror("memory size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 216:
-/* Line 1787 of yacc.c */
+break;
+case 215:
#line 1036 "util/configparser.y"
- {
- OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(server_key_cache_slabs:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("number expected");
else {
- cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str));
+ cfg_parser->cfg->key_cache_slabs = atoi(yystack.l_mark[0].str);
if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
yyerror("must be a power of 2");
}
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 217:
-/* Line 1787 of yacc.c */
+break;
+case 216:
#line 1049 "util/configparser.y"
- {
- OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
+ {
+ OUTYY(("P(server_neg_cache_size:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->neg_cache_size))
yyerror("memory size expected");
- free((yyvsp[(2) - (2)].str));
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 218:
-/* Line 1787 of yacc.c */
+break;
+case 217:
#line 1057 "util/configparser.y"
- {
- OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
- if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
- strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 &&
- strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0
- && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0)
+ {
+ OUTYY(("P(server_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 &&
+ strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 &&
+ strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0
+ && strcmp(yystack.l_mark[0].str, "typetransparent")!=0)
yyerror("local-zone type: expected static, deny, "
"refuse, redirect, transparent, "
"typetransparent or nodefault");
- else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) {
+ else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) {
if(!cfg_strlist_insert(&cfg_parser->cfg->
- local_zones_nodefault, (yyvsp[(2) - (3)].str)))
+ local_zones_nodefault, yystack.l_mark[-1].str))
fatal_exit("out of memory adding local-zone");
- free((yyvsp[(3) - (3)].str));
+ free(yystack.l_mark[0].str);
} else {
if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
- (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)))
+ yystack.l_mark[-1].str, yystack.l_mark[0].str))
fatal_exit("out of memory adding local-zone");
}
}
- break;
-
- case 219:
-/* Line 1787 of yacc.c */
+break;
+case 218:
#line 1079 "util/configparser.y"
- {
- OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(server_local_data:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yystack.l_mark[0].str))
fatal_exit("out of memory adding local-data");
}
- break;
-
- case 220:
-/* Line 1787 of yacc.c */
+break;
+case 219:
#line 1086 "util/configparser.y"
- {
+ {
char* ptr;
- OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
- ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ OUTYY(("P(server_local_data_ptr:%s)\n", yystack.l_mark[0].str));
+ ptr = cfg_ptr_reverse(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
if(ptr) {
if(!cfg_strlist_insert(&cfg_parser->cfg->
local_data, ptr))
@@ -3307,472 +2077,254 @@ yyreduce:
yyerror("local-data-ptr could not be reversed");
}
}
- break;
-
- case 221:
-/* Line 1787 of yacc.c */
+break;
+case 220:
#line 1101 "util/configparser.y"
- {
- OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_minimal_responses:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->minimal_responses =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 222:
-/* Line 1787 of yacc.c */
+break;
+case 221:
#line 1111 "util/configparser.y"
- {
- OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(server_rrset_roundrobin:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->rrset_roundrobin =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 223:
-/* Line 1787 of yacc.c */
+break;
+case 222:
#line 1121 "util/configparser.y"
- {
- OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
if(cfg_parser->cfg->stubs->name)
yyerror("stub name override, there must be one name "
"for one stub-zone");
free(cfg_parser->cfg->stubs->name);
- cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->stubs->name = yystack.l_mark[0].str;
}
- break;
-
- case 224:
-/* Line 1787 of yacc.c */
+break;
+case 223:
#line 1131 "util/configparser.y"
- {
- OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(stub-host:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 225:
-/* Line 1787 of yacc.c */
+break;
+case 224:
#line 1138 "util/configparser.y"
- {
- OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(stub-addr:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 226:
-/* Line 1787 of yacc.c */
+break;
+case 225:
#line 1145 "util/configparser.y"
- {
- OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(stub-first:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->stubs->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 227:
-/* Line 1787 of yacc.c */
+break;
+case 226:
#line 1154 "util/configparser.y"
- {
- OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(stub-prime:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->stubs->isprime =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 228:
-/* Line 1787 of yacc.c */
+break;
+case 227:
#line 1164 "util/configparser.y"
- {
- OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(name:%s)\n", yystack.l_mark[0].str));
if(cfg_parser->cfg->forwards->name)
yyerror("forward name override, there must be one "
"name for one forward-zone");
free(cfg_parser->cfg->forwards->name);
- cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->forwards->name = yystack.l_mark[0].str;
}
- break;
-
- case 229:
-/* Line 1787 of yacc.c */
+break;
+case 228:
#line 1174 "util/configparser.y"
- {
- OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(forward-host:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 230:
-/* Line 1787 of yacc.c */
+break;
+case 229:
#line 1181 "util/configparser.y"
- {
- OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(forward-addr:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 231:
-/* Line 1787 of yacc.c */
+break;
+case 230:
#line 1188 "util/configparser.y"
- {
- OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(forward-first:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
- else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->forwards->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 232:
-/* Line 1787 of yacc.c */
+break;
+case 231:
#line 1197 "util/configparser.y"
- {
+ {
OUTYY(("\nP(remote-control:)\n"));
}
- break;
-
- case 242:
-/* Line 1787 of yacc.c */
+break;
+case 241:
#line 1208 "util/configparser.y"
- {
- OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+ {
+ OUTYY(("P(control_enable:%s)\n", yystack.l_mark[0].str));
+ if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->remote_control_enable =
- (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
- free((yyvsp[(2) - (2)].str));
+ (strcmp(yystack.l_mark[0].str, "yes")==0);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 243:
-/* Line 1787 of yacc.c */
+break;
+case 242:
#line 1218 "util/configparser.y"
- {
- OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
- if(atoi((yyvsp[(2) - (2)].str)) == 0)
+ {
+ OUTYY(("P(control_port:%s)\n", yystack.l_mark[0].str));
+ if(atoi(yystack.l_mark[0].str) == 0)
yyerror("control port number expected");
- else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str));
- free((yyvsp[(2) - (2)].str));
+ else cfg_parser->cfg->control_port = atoi(yystack.l_mark[0].str);
+ free(yystack.l_mark[0].str);
}
- break;
-
- case 244:
-/* Line 1787 of yacc.c */
+break;
+case 243:
#line 1227 "util/configparser.y"
- {
- OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
- if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
+ {
+ OUTYY(("P(control_interface:%s)\n", yystack.l_mark[0].str));
+ if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, yystack.l_mark[0].str))
yyerror("out of memory");
}
- break;
-
- case 245:
-/* Line 1787 of yacc.c */
+break;
+case 244:
#line 1234 "util/configparser.y"
- {
- OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(rc_server_key_file:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->server_key_file);
- cfg_parser->cfg->server_key_file = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->server_key_file = yystack.l_mark[0].str;
}
- break;
-
- case 246:
-/* Line 1787 of yacc.c */
+break;
+case 245:
#line 1241 "util/configparser.y"
- {
- OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(rc_server_cert_file:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->server_cert_file);
- cfg_parser->cfg->server_cert_file = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->server_cert_file = yystack.l_mark[0].str;
}
- break;
-
- case 247:
-/* Line 1787 of yacc.c */
+break;
+case 246:
#line 1248 "util/configparser.y"
- {
- OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(rc_control_key_file:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->control_key_file);
- cfg_parser->cfg->control_key_file = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->control_key_file = yystack.l_mark[0].str;
}
- break;
-
- case 248:
-/* Line 1787 of yacc.c */
+break;
+case 247:
#line 1255 "util/configparser.y"
- {
- OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(rc_control_cert_file:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->control_cert_file);
- cfg_parser->cfg->control_cert_file = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->control_cert_file = yystack.l_mark[0].str;
}
- break;
-
- case 249:
-/* Line 1787 of yacc.c */
+break;
+case 248:
#line 1262 "util/configparser.y"
- {
+ {
OUTYY(("\nP(python:)\n"));
}
- break;
-
- case 253:
-/* Line 1787 of yacc.c */
+break;
+case 252:
#line 1271 "util/configparser.y"
- {
- OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
+ {
+ OUTYY(("P(python-script:%s)\n", yystack.l_mark[0].str));
free(cfg_parser->cfg->python_script);
- cfg_parser->cfg->python_script = (yyvsp[(2) - (2)].str);
+ cfg_parser->cfg->python_script = yystack.l_mark[0].str;
}
- break;
-
-
-/* Line 1787 of yacc.c */
-#line 3545 "util/configparser.c"
- default: break;
+break;
+#line 2269 "util/configparser.c"
}
- /* User semantic actions sometimes alter yychar, and that requires
- that yytoken be updated with the new translation. We take the
- approach of translating immediately before every use of yytoken.
- One alternative is translating here after every semantic action,
- but that translation would be missed if the semantic action invokes
- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
- incorrect destructor might then be invoked immediately. In the
- case of YYERROR or YYBACKUP, subsequent parser actions might lead
- to an incorrect destructor call or verbose syntax error message
- before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
+ yystack.s_mark -= yym;
+ yystate = *yystack.s_mark;
+ yystack.l_mark -= yym;
+ yym = yylhs[yyn];
+ if (yystate == 0 && yym == 0)
{
- ++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
- {
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
- }
-# undef YYSYNTAX_ERROR
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
#endif
- }
-
-
-
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
- else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval);
- yychar = YYEMPTY;
- }
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR. |
-`---------------------------------------------------*/
-yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
-
- /* Do not reclaim the symbols of the rule which action triggered
- this YYERROR. */
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
- yystate = *yyssp;
- goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR. |
-`-------------------------------------------------------------*/
-yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact[yystate];
- if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
- YYABORT;
-
-
- yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
- YYPOPSTACK (1);
- yystate = *yyssp;
- YY_STACK_PRINT (yyss, yyssp);
- }
-
- *++yyvsp = yylval;
-
-
- /* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-#if !defined yyoverflow || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
-yyexhaustedlab:
- yyerror (YY_("memory exhausted"));
- yyresult = 2;
- /* Fall through. */
+ yystate = YYFINAL;
+ *++yystack.s_mark = YYFINAL;
+ *++yystack.l_mark = yyval;
+ if (yychar < 0)
+ {
+ if ((yychar = YYLEX) < 0) yychar = 0;
+#if YYDEBUG
+ if (yydebug)
+ {
+ yys = 0;
+ if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+ if (!yys) yys = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, YYFINAL, yychar, yys);
+ }
#endif
-
-yyreturn:
- if (yychar != YYEMPTY)
- {
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ }
+ if (yychar == 0) goto yyaccept;
+ goto yyloop;
}
- /* Do not reclaim the symbols of the rule which action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK (yylen);
- YY_STACK_PRINT (yyss, yyssp);
- while (yyssp != yyss)
+ if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
+ yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+ yystate = yytable[yyn];
+ else
+ yystate = yydgoto[yym];
+#if YYDEBUG
+ if (yydebug)
+ printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+ if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
{
- yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
- YYPOPSTACK (1);
+ goto yyoverflow;
}
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
- /* Make sure YYID is used. */
- return YYID (yyresult);
-}
-
+ *++yystack.s_mark = (short) yystate;
+ *++yystack.l_mark = yyval;
+ goto yyloop;
-/* Line 2048 of yacc.c */
-#line 1276 "util/configparser.y"
+yyoverflow:
+ yyerror("yacc stack overflow");
+yyabort:
+ yyfreestack(&yystack);
+ return (1);
-/* parse helper routines could be here */
-
+yyaccept:
+ yyfreestack(&yystack);
+ return (0);
+}
diff --git a/contrib/unbound/util/configparser.h b/contrib/unbound/util/configparser.h
index 8d9c3c4..7bf4235 100644
--- a/contrib/unbound/util/configparser.h
+++ b/contrib/unbound/util/configparser.h
@@ -1,342 +1,138 @@
-/* A Bison parser, made by GNU Bison 2.6.1. */
-
-/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-#ifndef YY_UTIL_CONFIGPARSER_H
-# define YY_UTIL_CONFIGPARSER_H
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
+#define SPACE 257
+#define LETTER 258
+#define NEWLINE 259
+#define COMMENT 260
+#define COLON 261
+#define ANY 262
+#define ZONESTR 263
+#define STRING_ARG 264
+#define VAR_SERVER 265
+#define VAR_VERBOSITY 266
+#define VAR_NUM_THREADS 267
+#define VAR_PORT 268
+#define VAR_OUTGOING_RANGE 269
+#define VAR_INTERFACE 270
+#define VAR_DO_IP4 271
+#define VAR_DO_IP6 272
+#define VAR_DO_UDP 273
+#define VAR_DO_TCP 274
+#define VAR_CHROOT 275
+#define VAR_USERNAME 276
+#define VAR_DIRECTORY 277
+#define VAR_LOGFILE 278
+#define VAR_PIDFILE 279
+#define VAR_MSG_CACHE_SIZE 280
+#define VAR_MSG_CACHE_SLABS 281
+#define VAR_NUM_QUERIES_PER_THREAD 282
+#define VAR_RRSET_CACHE_SIZE 283
+#define VAR_RRSET_CACHE_SLABS 284
+#define VAR_OUTGOING_NUM_TCP 285
+#define VAR_INFRA_HOST_TTL 286
+#define VAR_INFRA_LAME_TTL 287
+#define VAR_INFRA_CACHE_SLABS 288
+#define VAR_INFRA_CACHE_NUMHOSTS 289
+#define VAR_INFRA_CACHE_LAME_SIZE 290
+#define VAR_NAME 291
+#define VAR_STUB_ZONE 292
+#define VAR_STUB_HOST 293
+#define VAR_STUB_ADDR 294
+#define VAR_TARGET_FETCH_POLICY 295
+#define VAR_HARDEN_SHORT_BUFSIZE 296
+#define VAR_HARDEN_LARGE_QUERIES 297
+#define VAR_FORWARD_ZONE 298
+#define VAR_FORWARD_HOST 299
+#define VAR_FORWARD_ADDR 300
+#define VAR_DO_NOT_QUERY_ADDRESS 301
+#define VAR_HIDE_IDENTITY 302
+#define VAR_HIDE_VERSION 303
+#define VAR_IDENTITY 304
+#define VAR_VERSION 305
+#define VAR_HARDEN_GLUE 306
+#define VAR_MODULE_CONF 307
+#define VAR_TRUST_ANCHOR_FILE 308
+#define VAR_TRUST_ANCHOR 309
+#define VAR_VAL_OVERRIDE_DATE 310
+#define VAR_BOGUS_TTL 311
+#define VAR_VAL_CLEAN_ADDITIONAL 312
+#define VAR_VAL_PERMISSIVE_MODE 313
+#define VAR_INCOMING_NUM_TCP 314
+#define VAR_MSG_BUFFER_SIZE 315
+#define VAR_KEY_CACHE_SIZE 316
+#define VAR_KEY_CACHE_SLABS 317
+#define VAR_TRUSTED_KEYS_FILE 318
+#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 319
+#define VAR_USE_SYSLOG 320
+#define VAR_OUTGOING_INTERFACE 321
+#define VAR_ROOT_HINTS 322
+#define VAR_DO_NOT_QUERY_LOCALHOST 323
+#define VAR_CACHE_MAX_TTL 324
+#define VAR_HARDEN_DNSSEC_STRIPPED 325
+#define VAR_ACCESS_CONTROL 326
+#define VAR_LOCAL_ZONE 327
+#define VAR_LOCAL_DATA 328
+#define VAR_INTERFACE_AUTOMATIC 329
+#define VAR_STATISTICS_INTERVAL 330
+#define VAR_DO_DAEMONIZE 331
+#define VAR_USE_CAPS_FOR_ID 332
+#define VAR_STATISTICS_CUMULATIVE 333
+#define VAR_OUTGOING_PORT_PERMIT 334
+#define VAR_OUTGOING_PORT_AVOID 335
+#define VAR_DLV_ANCHOR_FILE 336
+#define VAR_DLV_ANCHOR 337
+#define VAR_NEG_CACHE_SIZE 338
+#define VAR_HARDEN_REFERRAL_PATH 339
+#define VAR_PRIVATE_ADDRESS 340
+#define VAR_PRIVATE_DOMAIN 341
+#define VAR_REMOTE_CONTROL 342
+#define VAR_CONTROL_ENABLE 343
+#define VAR_CONTROL_INTERFACE 344
+#define VAR_CONTROL_PORT 345
+#define VAR_SERVER_KEY_FILE 346
+#define VAR_SERVER_CERT_FILE 347
+#define VAR_CONTROL_KEY_FILE 348
+#define VAR_CONTROL_CERT_FILE 349
+#define VAR_EXTENDED_STATISTICS 350
+#define VAR_LOCAL_DATA_PTR 351
+#define VAR_JOSTLE_TIMEOUT 352
+#define VAR_STUB_PRIME 353
+#define VAR_UNWANTED_REPLY_THRESHOLD 354
+#define VAR_LOG_TIME_ASCII 355
+#define VAR_DOMAIN_INSECURE 356
+#define VAR_PYTHON 357
+#define VAR_PYTHON_SCRIPT 358
+#define VAR_VAL_SIG_SKEW_MIN 359
+#define VAR_VAL_SIG_SKEW_MAX 360
+#define VAR_CACHE_MIN_TTL 361
+#define VAR_VAL_LOG_LEVEL 362
+#define VAR_AUTO_TRUST_ANCHOR_FILE 363
+#define VAR_KEEP_MISSING 364
+#define VAR_ADD_HOLDDOWN 365
+#define VAR_DEL_HOLDDOWN 366
+#define VAR_SO_RCVBUF 367
+#define VAR_EDNS_BUFFER_SIZE 368
+#define VAR_PREFETCH 369
+#define VAR_PREFETCH_KEY 370
+#define VAR_SO_SNDBUF 371
+#define VAR_HARDEN_BELOW_NXDOMAIN 372
+#define VAR_IGNORE_CD_FLAG 373
+#define VAR_LOG_QUERIES 374
+#define VAR_TCP_UPSTREAM 375
+#define VAR_SSL_UPSTREAM 376
+#define VAR_SSL_SERVICE_KEY 377
+#define VAR_SSL_SERVICE_PEM 378
+#define VAR_SSL_PORT 379
+#define VAR_FORWARD_FIRST 380
+#define VAR_STUB_FIRST 381
+#define VAR_MINIMAL_RESPONSES 382
+#define VAR_RRSET_ROUNDROBIN 383
+#ifdef YYSTYPE
+#undef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- SPACE = 258,
- LETTER = 259,
- NEWLINE = 260,
- COMMENT = 261,
- COLON = 262,
- ANY = 263,
- ZONESTR = 264,
- STRING_ARG = 265,
- VAR_SERVER = 266,
- VAR_VERBOSITY = 267,
- VAR_NUM_THREADS = 268,
- VAR_PORT = 269,
- VAR_OUTGOING_RANGE = 270,
- VAR_INTERFACE = 271,
- VAR_DO_IP4 = 272,
- VAR_DO_IP6 = 273,
- VAR_DO_UDP = 274,
- VAR_DO_TCP = 275,
- VAR_CHROOT = 276,
- VAR_USERNAME = 277,
- VAR_DIRECTORY = 278,
- VAR_LOGFILE = 279,
- VAR_PIDFILE = 280,
- VAR_MSG_CACHE_SIZE = 281,
- VAR_MSG_CACHE_SLABS = 282,
- VAR_NUM_QUERIES_PER_THREAD = 283,
- VAR_RRSET_CACHE_SIZE = 284,
- VAR_RRSET_CACHE_SLABS = 285,
- VAR_OUTGOING_NUM_TCP = 286,
- VAR_INFRA_HOST_TTL = 287,
- VAR_INFRA_LAME_TTL = 288,
- VAR_INFRA_CACHE_SLABS = 289,
- VAR_INFRA_CACHE_NUMHOSTS = 290,
- VAR_INFRA_CACHE_LAME_SIZE = 291,
- VAR_NAME = 292,
- VAR_STUB_ZONE = 293,
- VAR_STUB_HOST = 294,
- VAR_STUB_ADDR = 295,
- VAR_TARGET_FETCH_POLICY = 296,
- VAR_HARDEN_SHORT_BUFSIZE = 297,
- VAR_HARDEN_LARGE_QUERIES = 298,
- VAR_FORWARD_ZONE = 299,
- VAR_FORWARD_HOST = 300,
- VAR_FORWARD_ADDR = 301,
- VAR_DO_NOT_QUERY_ADDRESS = 302,
- VAR_HIDE_IDENTITY = 303,
- VAR_HIDE_VERSION = 304,
- VAR_IDENTITY = 305,
- VAR_VERSION = 306,
- VAR_HARDEN_GLUE = 307,
- VAR_MODULE_CONF = 308,
- VAR_TRUST_ANCHOR_FILE = 309,
- VAR_TRUST_ANCHOR = 310,
- VAR_VAL_OVERRIDE_DATE = 311,
- VAR_BOGUS_TTL = 312,
- VAR_VAL_CLEAN_ADDITIONAL = 313,
- VAR_VAL_PERMISSIVE_MODE = 314,
- VAR_INCOMING_NUM_TCP = 315,
- VAR_MSG_BUFFER_SIZE = 316,
- VAR_KEY_CACHE_SIZE = 317,
- VAR_KEY_CACHE_SLABS = 318,
- VAR_TRUSTED_KEYS_FILE = 319,
- VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320,
- VAR_USE_SYSLOG = 321,
- VAR_OUTGOING_INTERFACE = 322,
- VAR_ROOT_HINTS = 323,
- VAR_DO_NOT_QUERY_LOCALHOST = 324,
- VAR_CACHE_MAX_TTL = 325,
- VAR_HARDEN_DNSSEC_STRIPPED = 326,
- VAR_ACCESS_CONTROL = 327,
- VAR_LOCAL_ZONE = 328,
- VAR_LOCAL_DATA = 329,
- VAR_INTERFACE_AUTOMATIC = 330,
- VAR_STATISTICS_INTERVAL = 331,
- VAR_DO_DAEMONIZE = 332,
- VAR_USE_CAPS_FOR_ID = 333,
- VAR_STATISTICS_CUMULATIVE = 334,
- VAR_OUTGOING_PORT_PERMIT = 335,
- VAR_OUTGOING_PORT_AVOID = 336,
- VAR_DLV_ANCHOR_FILE = 337,
- VAR_DLV_ANCHOR = 338,
- VAR_NEG_CACHE_SIZE = 339,
- VAR_HARDEN_REFERRAL_PATH = 340,
- VAR_PRIVATE_ADDRESS = 341,
- VAR_PRIVATE_DOMAIN = 342,
- VAR_REMOTE_CONTROL = 343,
- VAR_CONTROL_ENABLE = 344,
- VAR_CONTROL_INTERFACE = 345,
- VAR_CONTROL_PORT = 346,
- VAR_SERVER_KEY_FILE = 347,
- VAR_SERVER_CERT_FILE = 348,
- VAR_CONTROL_KEY_FILE = 349,
- VAR_CONTROL_CERT_FILE = 350,
- VAR_EXTENDED_STATISTICS = 351,
- VAR_LOCAL_DATA_PTR = 352,
- VAR_JOSTLE_TIMEOUT = 353,
- VAR_STUB_PRIME = 354,
- VAR_UNWANTED_REPLY_THRESHOLD = 355,
- VAR_LOG_TIME_ASCII = 356,
- VAR_DOMAIN_INSECURE = 357,
- VAR_PYTHON = 358,
- VAR_PYTHON_SCRIPT = 359,
- VAR_VAL_SIG_SKEW_MIN = 360,
- VAR_VAL_SIG_SKEW_MAX = 361,
- VAR_CACHE_MIN_TTL = 362,
- VAR_VAL_LOG_LEVEL = 363,
- VAR_AUTO_TRUST_ANCHOR_FILE = 364,
- VAR_KEEP_MISSING = 365,
- VAR_ADD_HOLDDOWN = 366,
- VAR_DEL_HOLDDOWN = 367,
- VAR_SO_RCVBUF = 368,
- VAR_EDNS_BUFFER_SIZE = 369,
- VAR_PREFETCH = 370,
- VAR_PREFETCH_KEY = 371,
- VAR_SO_SNDBUF = 372,
- VAR_HARDEN_BELOW_NXDOMAIN = 373,
- VAR_IGNORE_CD_FLAG = 374,
- VAR_LOG_QUERIES = 375,
- VAR_TCP_UPSTREAM = 376,
- VAR_SSL_UPSTREAM = 377,
- VAR_SSL_SERVICE_KEY = 378,
- VAR_SSL_SERVICE_PEM = 379,
- VAR_SSL_PORT = 380,
- VAR_FORWARD_FIRST = 381,
- VAR_STUB_FIRST = 382,
- VAR_MINIMAL_RESPONSES = 383,
- VAR_RRSET_ROUNDROBIN = 384
- };
-#endif
-/* Tokens. */
-#define SPACE 258
-#define LETTER 259
-#define NEWLINE 260
-#define COMMENT 261
-#define COLON 262
-#define ANY 263
-#define ZONESTR 264
-#define STRING_ARG 265
-#define VAR_SERVER 266
-#define VAR_VERBOSITY 267
-#define VAR_NUM_THREADS 268
-#define VAR_PORT 269
-#define VAR_OUTGOING_RANGE 270
-#define VAR_INTERFACE 271
-#define VAR_DO_IP4 272
-#define VAR_DO_IP6 273
-#define VAR_DO_UDP 274
-#define VAR_DO_TCP 275
-#define VAR_CHROOT 276
-#define VAR_USERNAME 277
-#define VAR_DIRECTORY 278
-#define VAR_LOGFILE 279
-#define VAR_PIDFILE 280
-#define VAR_MSG_CACHE_SIZE 281
-#define VAR_MSG_CACHE_SLABS 282
-#define VAR_NUM_QUERIES_PER_THREAD 283
-#define VAR_RRSET_CACHE_SIZE 284
-#define VAR_RRSET_CACHE_SLABS 285
-#define VAR_OUTGOING_NUM_TCP 286
-#define VAR_INFRA_HOST_TTL 287
-#define VAR_INFRA_LAME_TTL 288
-#define VAR_INFRA_CACHE_SLABS 289
-#define VAR_INFRA_CACHE_NUMHOSTS 290
-#define VAR_INFRA_CACHE_LAME_SIZE 291
-#define VAR_NAME 292
-#define VAR_STUB_ZONE 293
-#define VAR_STUB_HOST 294
-#define VAR_STUB_ADDR 295
-#define VAR_TARGET_FETCH_POLICY 296
-#define VAR_HARDEN_SHORT_BUFSIZE 297
-#define VAR_HARDEN_LARGE_QUERIES 298
-#define VAR_FORWARD_ZONE 299
-#define VAR_FORWARD_HOST 300
-#define VAR_FORWARD_ADDR 301
-#define VAR_DO_NOT_QUERY_ADDRESS 302
-#define VAR_HIDE_IDENTITY 303
-#define VAR_HIDE_VERSION 304
-#define VAR_IDENTITY 305
-#define VAR_VERSION 306
-#define VAR_HARDEN_GLUE 307
-#define VAR_MODULE_CONF 308
-#define VAR_TRUST_ANCHOR_FILE 309
-#define VAR_TRUST_ANCHOR 310
-#define VAR_VAL_OVERRIDE_DATE 311
-#define VAR_BOGUS_TTL 312
-#define VAR_VAL_CLEAN_ADDITIONAL 313
-#define VAR_VAL_PERMISSIVE_MODE 314
-#define VAR_INCOMING_NUM_TCP 315
-#define VAR_MSG_BUFFER_SIZE 316
-#define VAR_KEY_CACHE_SIZE 317
-#define VAR_KEY_CACHE_SLABS 318
-#define VAR_TRUSTED_KEYS_FILE 319
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320
-#define VAR_USE_SYSLOG 321
-#define VAR_OUTGOING_INTERFACE 322
-#define VAR_ROOT_HINTS 323
-#define VAR_DO_NOT_QUERY_LOCALHOST 324
-#define VAR_CACHE_MAX_TTL 325
-#define VAR_HARDEN_DNSSEC_STRIPPED 326
-#define VAR_ACCESS_CONTROL 327
-#define VAR_LOCAL_ZONE 328
-#define VAR_LOCAL_DATA 329
-#define VAR_INTERFACE_AUTOMATIC 330
-#define VAR_STATISTICS_INTERVAL 331
-#define VAR_DO_DAEMONIZE 332
-#define VAR_USE_CAPS_FOR_ID 333
-#define VAR_STATISTICS_CUMULATIVE 334
-#define VAR_OUTGOING_PORT_PERMIT 335
-#define VAR_OUTGOING_PORT_AVOID 336
-#define VAR_DLV_ANCHOR_FILE 337
-#define VAR_DLV_ANCHOR 338
-#define VAR_NEG_CACHE_SIZE 339
-#define VAR_HARDEN_REFERRAL_PATH 340
-#define VAR_PRIVATE_ADDRESS 341
-#define VAR_PRIVATE_DOMAIN 342
-#define VAR_REMOTE_CONTROL 343
-#define VAR_CONTROL_ENABLE 344
-#define VAR_CONTROL_INTERFACE 345
-#define VAR_CONTROL_PORT 346
-#define VAR_SERVER_KEY_FILE 347
-#define VAR_SERVER_CERT_FILE 348
-#define VAR_CONTROL_KEY_FILE 349
-#define VAR_CONTROL_CERT_FILE 350
-#define VAR_EXTENDED_STATISTICS 351
-#define VAR_LOCAL_DATA_PTR 352
-#define VAR_JOSTLE_TIMEOUT 353
-#define VAR_STUB_PRIME 354
-#define VAR_UNWANTED_REPLY_THRESHOLD 355
-#define VAR_LOG_TIME_ASCII 356
-#define VAR_DOMAIN_INSECURE 357
-#define VAR_PYTHON 358
-#define VAR_PYTHON_SCRIPT 359
-#define VAR_VAL_SIG_SKEW_MIN 360
-#define VAR_VAL_SIG_SKEW_MAX 361
-#define VAR_CACHE_MIN_TTL 362
-#define VAR_VAL_LOG_LEVEL 363
-#define VAR_AUTO_TRUST_ANCHOR_FILE 364
-#define VAR_KEEP_MISSING 365
-#define VAR_ADD_HOLDDOWN 366
-#define VAR_DEL_HOLDDOWN 367
-#define VAR_SO_RCVBUF 368
-#define VAR_EDNS_BUFFER_SIZE 369
-#define VAR_PREFETCH 370
-#define VAR_PREFETCH_KEY 371
-#define VAR_SO_SNDBUF 372
-#define VAR_HARDEN_BELOW_NXDOMAIN 373
-#define VAR_IGNORE_CD_FLAG 374
-#define VAR_LOG_QUERIES 375
-#define VAR_TCP_UPSTREAM 376
-#define VAR_SSL_UPSTREAM 377
-#define VAR_SSL_SERVICE_KEY 378
-#define VAR_SSL_SERVICE_PEM 379
-#define VAR_SSL_PORT 380
-#define VAR_FORWARD_FIRST 381
-#define VAR_STUB_FIRST 382
-#define VAR_MINIMAL_RESPONSES 383
-#define VAR_RRSET_ROUNDROBIN 384
-
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-{
-/* Line 2049 of yacc.c */
-#line 64 "util/configparser.y"
-
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union {
char* str;
-
-
-/* Line 2049 of yacc.c */
-#line 320 "util/configparser.h"
} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
+#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE yylval;
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-#endif /* !YY_UTIL_CONFIGPARSER_H */
diff --git a/contrib/unbound/util/fptr_wlist.c b/contrib/unbound/util/fptr_wlist.c
index 6bb95a5..2d5ba5c 100644
--- a/contrib/unbound/util/fptr_wlist.c
+++ b/contrib/unbound/util/fptr_wlist.c
@@ -46,8 +46,6 @@
#include "config.h"
#include "util/fptr_wlist.h"
#include "util/mini_event.h"
-#include "daemon/worker.h"
-#include "daemon/remote.h"
#include "services/outside_network.h"
#include "services/mesh.h"
#include "services/localzone.h"
@@ -69,6 +67,7 @@
#include "util/locks.h"
#include "libunbound/libworker.h"
#include "libunbound/context.h"
+#include "libunbound/worker.h"
#include "util/tube.h"
#include "util/config_file.h"
#ifdef UB_ON_WINDOWS
OpenPOWER on IntegriCloud