From: Wouter Wijngaards Date: Tue, 12 Nov 2013 10:08:54 +0000 (+0000) Subject: - Fix bug#536: acl_deny_non_local and refuse_non_local added. X-Git-Tag: release-1.4.22rc1~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9efb261daea8cdb1115cf48d887f02c77e134de;p=thirdparty%2Funbound.git - Fix bug#536: acl_deny_non_local and refuse_non_local added. git-svn-id: file:///svn/unbound/trunk@3015 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/acl_list.c b/daemon/acl_list.c index 48c8e0fe4..bfe4bd02a 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -103,6 +103,10 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, control = acl_deny; else if(strcmp(s2, "refuse") == 0) control = acl_refuse; + else if(strcmp(s2, "deny_non_local") == 0) + control = acl_deny_non_local; + else if(strcmp(s2, "refuse_non_local") == 0) + control = acl_refuse_non_local; else if(strcmp(s2, "allow_snoop") == 0) control = acl_allow_snoop; else { diff --git a/daemon/acl_list.h b/daemon/acl_list.h index 03ac301bf..be2e34afa 100644 --- a/daemon/acl_list.h +++ b/daemon/acl_list.h @@ -55,6 +55,10 @@ enum acl_access { acl_deny = 0, /** disallow access, send a polite 'REFUSED' reply */ acl_refuse, + /** disallow any access to zones that aren't local, drop it */ + acl_deny_non_local, + /** disallow access to zones that aren't local, 'REFUSED' reply */ + acl_refuse_non_local, /** allow full access for recursion (+RD) queries */ acl_allow, /** allow full access for all queries, recursion and cache snooping */ diff --git a/daemon/worker.c b/daemon/worker.c index a6d3c7063..394bc2137 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -718,31 +718,17 @@ answer_chaos(struct worker* w, struct query_info* qinfo, return 0; } -int -worker_handle_request(struct comm_point* c, void* arg, int error, - struct comm_reply* repinfo) +int +deny_refuse(struct comm_point* c, enum acl_access acl, + enum acl_access deny, enum acl_access refuse, + struct worker* worker, struct comm_reply* repinfo) { - struct worker* worker = (struct worker*)arg; - int ret; - hashvalue_t h; - struct lruhash_entry* e; - struct query_info qinfo; - struct edns_data edns; - enum acl_access acl; - - if(error != NETEVENT_NOERROR) { - /* some bad tcp query DNS formats give these error calls */ - verbose(VERB_ALGO, "handle request called with err=%d", error); - return 0; - } - acl = acl_list_lookup(worker->daemon->acl, &repinfo->addr, - repinfo->addrlen); - if(acl == acl_deny) { + if(acl == deny) { comm_point_drop_reply(repinfo); if(worker->stats.extended) worker->stats.unwanted_queries++; return 0; - } else if(acl == acl_refuse) { + } else if(acl == refuse) { log_addr(VERB_ALGO, "refused query from", &repinfo->addr, repinfo->addrlen); log_buf(VERB_ALGO, "refuse", c->buffer); @@ -760,6 +746,47 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_RCODE_REFUSED); return 1; } + + return -1; +} + +int +deny_refuse_all(struct comm_point* c, enum acl_access acl, + struct worker* worker, struct comm_reply* repinfo) +{ + return deny_refuse(c, acl, acl_deny, acl_refuse, worker, repinfo); +} + +int +deny_refuse_non_local(struct comm_point* c, enum acl_access acl, + struct worker* worker, struct comm_reply* repinfo) +{ + return deny_refuse(c, acl, acl_deny_non_local, acl_refuse_non_local, worker, repinfo); +} + +int +worker_handle_request(struct comm_point* c, void* arg, int error, + struct comm_reply* repinfo) +{ + struct worker* worker = (struct worker*)arg; + int ret; + hashvalue_t h; + struct lruhash_entry* e; + struct query_info qinfo; + struct edns_data edns; + enum acl_access acl; + + if(error != NETEVENT_NOERROR) { + /* some bad tcp query DNS formats give these error calls */ + verbose(VERB_ALGO, "handle request called with err=%d", error); + return 0; + } + acl = acl_list_lookup(worker->daemon->acl, &repinfo->addr, + repinfo->addrlen); + if((ret=deny_refuse_all(c, acl, worker, repinfo)) != -1) + { + return ret; + } if((ret=worker_check_request(c->buffer, worker)) != 0) { verbose(VERB_ALGO, "worker check request: bad query."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); @@ -872,6 +899,16 @@ worker_handle_request(struct comm_point* c, void* arg, int error, server_stats_insrcode(&worker->stats, c->buffer); return 1; } + + /* We've looked in our local zones. If the answer isn't there, we + * might need to bail out based on ACLs now. */ + if((ret=deny_refuse_non_local(c, acl, worker, repinfo)) != -1) + { + return ret; + } + + /* If this request does not have the recursion bit set, verify + * ACLs allow the snooping. */ if(!(LDNS_RD_WIRE(ldns_buffer_begin(c->buffer))) && acl != acl_allow_snoop ) { ldns_buffer_set_limit(c->buffer, LDNS_HEADER_SIZE); diff --git a/doc/Changelog b/doc/Changelog index d7b33fac2..6dc9bc0a5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +12 Nov 2013: Wouter + - Fix bug#536: acl_deny_non_local and refuse_non_local added. + 5 Nov 2013: Wouter - Patch from Neel Goyal to fix async id assignment if callback is called by libunbound in the mesh attach. diff --git a/doc/example.conf.in b/doc/example.conf.in index 81e187618..3054eccab 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -165,6 +165,8 @@ server: # By default everything is refused, except for localhost. # Choose deny (drop message), refuse (polite error reply), # allow (recursive ok), allow_snoop (recursive and nonrecursive ok) + # deny_non_local (drop queries unless can be answered from local-data) + # refuse_non_local (like deny_non_local but polite error reply). # access-control: 0.0.0.0/0 refuse # access-control: 127.0.0.0/8 allow # access-control: ::0/0 refuse diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index dad7c72ed..ac060568c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -334,7 +334,7 @@ a daemon. Default is yes. .B access\-control: \fI 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. +\fIallow\fR, \fIallow_snoop\fR, \fIdeny_non_local\fR or \fIrefuse_non_local\fR. .IP The action \fIdeny\fR stops queries from hosts from that netblock. .IP @@ -363,6 +363,12 @@ 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. +.IP +The deny_non_local and refuse_non_local settings are for hosts that are +only allowed to query for the authoritative local\-data, they are not +allowed full recursion but only the static data. With deny_non_local, +messages that are disallowed are dropped, with refuse_non_local they +receive error code REFUSED. .TP .B chroot: \fI If chroot is enabled, you should pass the configfile (from the diff --git a/util/configlexer.c b/util/configlexer.c index 65ac33056..59b9838e6 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 36 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -143,15 +143,7 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -163,7 +155,12 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -extern int yyleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -189,11 +186,6 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -211,7 +203,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -281,8 +273,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -310,7 +302,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -1699,7 +1691,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1701 "" +#line 1693 "" #define INITIAL 0 #define quotedstring 1 @@ -1743,7 +1735,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * out_str ); -int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -1783,12 +1775,7 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1891,7 +1878,7 @@ YY_DECL #line 198 "./util/configlexer.lex" -#line 1893 "" +#line 1880 "" if ( !(yy_init) ) { @@ -2793,7 +2780,7 @@ YY_RULE_SETUP #line 421 "./util/configlexer.lex" ECHO; YY_BREAK -#line 2795 "" +#line 2782 "" case YY_END_OF_BUFFER: { @@ -2977,21 +2964,21 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3022,7 +3009,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -3117,7 +3104,7 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 1364); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT @@ -3144,7 +3131,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -3304,10 +3291,6 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -3420,7 +3403,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -3517,7 +3500,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -3604,7 +3587,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } diff --git a/util/configparser.c b/util/configparser.c index d03528786..69720ed24 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + 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 @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "2.6.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -58,14 +58,11 @@ /* Pull parsers. */ #define YYPULL 1 -/* Using locations. */ -#define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ - -/* Line 268 of yacc.c */ +/* Line 336 of yacc.c */ #line 38 "./util/configparser.y" #include "config.h" @@ -93,14 +90,16 @@ extern struct config_parser_state* cfg_parser; #endif +/* Line 336 of yacc.c */ +#line 95 "util/configparser.c" -/* Line 268 of yacc.c */ -#line 99 "util/configparser.c" - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# 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 @@ -110,11 +109,17 @@ extern struct config_parser_state* cfg_parser; # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* 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 @@ -384,32 +389,45 @@ extern struct config_parser_state* cfg_parser; - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { - -/* Line 293 of yacc.c */ +/* Line 350 of yacc.c */ #line 64 "./util/configparser.y" char* str; - -/* Line 293 of yacc.c */ -#line 401 "util/configparser.c" +/* Line 350 of yacc.c */ +#line 403 "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; -/* Copy the second part of user declarations. */ +#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 343 of yacc.c */ -#line 413 "util/configparser.c" +/* Line 353 of yacc.c */ +#line 431 "util/configparser.c" #ifdef short # undef short @@ -515,6 +533,7 @@ YYID (yyi) # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif @@ -606,20 +625,20 @@ union yyalloc #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from FROM to TO. The source and destination do +/* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ while (YYID (0)) # endif # endif @@ -815,16 +834,16 @@ static const yytype_uint16 yyrline[] = 582, 590, 598, 611, 622, 630, 643, 652, 661, 669, 682, 691, 699, 708, 716, 729, 736, 746, 756, 766, 776, 786, 796, 806, 813, 820, 829, 838, 847, 854, - 864, 878, 885, 903, 916, 929, 938, 947, 956, 966, - 976, 985, 994, 1001, 1010, 1019, 1028, 1036, 1049, 1057, - 1079, 1086, 1101, 1111, 1121, 1128, 1138, 1145, 1152, 1161, - 1171, 1181, 1188, 1195, 1204, 1209, 1210, 1211, 1211, 1211, - 1212, 1212, 1212, 1213, 1215, 1225, 1234, 1241, 1248, 1255, - 1262, 1269, 1274, 1275, 1276, 1278 + 864, 881, 888, 906, 919, 932, 941, 950, 959, 969, + 979, 988, 997, 1004, 1013, 1022, 1031, 1039, 1052, 1060, + 1082, 1089, 1104, 1114, 1124, 1131, 1141, 1148, 1155, 1164, + 1174, 1184, 1191, 1198, 1207, 1212, 1213, 1214, 1214, 1214, + 1215, 1215, 1215, 1216, 1218, 1228, 1237, 1244, 1251, 1258, + 1265, 1272, 1277, 1278, 1279, 1281 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#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[] = @@ -920,7 +939,7 @@ static const char *const yytname[] = "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", 0 + "contents_py", "content_py", "py_script", YY_NULL }; #endif @@ -1273,17 +1292,18 @@ static const yytype_uint16 yystos[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ +#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; \ } \ @@ -1293,32 +1313,33 @@ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 - /* 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). */ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #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; \ - } \ +# 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)) #endif +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + + /* This macro is provided for backward compatibility. */ @@ -1378,6 +1399,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) YYSTYPE const * const yyvaluep; #endif { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT @@ -1629,12 +1652,12 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[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 = 0; + 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 @@ -1694,7 +1717,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -1786,20 +1809,6 @@ yydestruct (yymsg, yytype, yyvaluep) } -/* Prevent warnings from -Wmissing-prototypes. */ -#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 */ /* The lookahead symbol. */ @@ -1846,7 +1855,7 @@ yyparse () `yyss': related to states. `yyvs': related to semantic values. - Refer to the stacks thru separate pointers, to allow yyoverflow + Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ @@ -1900,7 +1909,6 @@ yyparse () The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; - goto yysetstate; /*------------------------------------------------------------. @@ -2078,8 +2086,7 @@ yyreduce: switch (yyn) { case 9: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 119 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); @@ -2087,8 +2094,7 @@ yyreduce: break; case 111: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 168 "./util/configparser.y" { struct config_stub* s; @@ -2103,8 +2109,7 @@ yyreduce: break; case 119: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 184 "./util/configparser.y" { struct config_stub* s; @@ -2119,8 +2124,7 @@ yyreduce: break; case 126: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 200 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2132,8 +2136,7 @@ yyreduce: break; case 127: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 209 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2145,8 +2148,7 @@ yyreduce: break; case 128: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 218 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2160,8 +2162,7 @@ yyreduce: break; case 129: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 229 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2173,8 +2174,7 @@ yyreduce: break; case 130: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 238 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2186,8 +2186,7 @@ yyreduce: break; case 131: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 247 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2199,8 +2198,7 @@ yyreduce: break; case 132: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 256 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2216,8 +2214,7 @@ yyreduce: break; case 133: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 269 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2235,8 +2232,7 @@ yyreduce: break; case 134: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 284 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2248,8 +2244,7 @@ yyreduce: break; case 135: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 293 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2261,8 +2256,7 @@ yyreduce: break; case 136: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 302 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2274,8 +2268,7 @@ yyreduce: break; case 137: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 311 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2287,8 +2280,7 @@ yyreduce: break; case 138: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 320 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2300,8 +2292,7 @@ yyreduce: break; case 139: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 329 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2313,8 +2304,7 @@ yyreduce: break; case 140: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 338 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2326,8 +2316,7 @@ yyreduce: break; case 141: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 347 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2339,8 +2328,7 @@ yyreduce: break; case 142: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 356 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2352,8 +2340,7 @@ yyreduce: break; case 143: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 365 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2365,8 +2352,7 @@ yyreduce: break; case 144: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 374 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2378,8 +2364,7 @@ yyreduce: break; case 145: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 383 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2391,8 +2376,7 @@ yyreduce: break; case 146: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 392 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2402,8 +2386,7 @@ yyreduce: break; case 147: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 399 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2413,8 +2396,7 @@ yyreduce: break; case 148: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 406 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2426,8 +2408,7 @@ yyreduce: break; case 149: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 415 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2439,8 +2420,7 @@ yyreduce: break; case 150: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 424 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2457,8 +2437,7 @@ yyreduce: break; case 151: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 438 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2470,8 +2449,7 @@ yyreduce: break; case 152: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 447 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2483,8 +2461,7 @@ yyreduce: break; case 153: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 456 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2494,8 +2471,7 @@ yyreduce: break; case 154: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 463 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2505,8 +2481,7 @@ yyreduce: break; case 155: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 470 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2516,8 +2491,7 @@ yyreduce: break; case 156: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 477 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2528,8 +2502,7 @@ yyreduce: break; case 157: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 485 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2539,8 +2512,7 @@ yyreduce: break; case 158: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 492 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2550,8 +2522,7 @@ yyreduce: break; case 159: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 499 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2561,8 +2532,7 @@ yyreduce: break; case 160: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 506 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2572,8 +2542,7 @@ yyreduce: break; case 161: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 513 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2584,8 +2553,7 @@ yyreduce: break; case 162: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 521 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2596,8 +2564,7 @@ yyreduce: break; case 163: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 529 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2608,8 +2575,7 @@ yyreduce: break; case 164: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 537 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2619,8 +2585,7 @@ yyreduce: break; case 165: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 544 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2630,8 +2595,7 @@ yyreduce: break; case 166: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 551 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2643,8 +2607,7 @@ yyreduce: break; case 167: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 560 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2656,8 +2619,7 @@ yyreduce: break; case 168: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 569 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2667,8 +2629,7 @@ yyreduce: break; case 169: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 576 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2678,8 +2639,7 @@ yyreduce: break; case 170: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 583 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2690,8 +2650,7 @@ yyreduce: break; case 171: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 591 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2702,8 +2661,7 @@ yyreduce: break; case 172: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 599 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2719,8 +2677,7 @@ yyreduce: break; case 173: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 612 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2734,8 +2691,7 @@ yyreduce: break; case 174: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 623 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2746,8 +2702,7 @@ yyreduce: break; case 175: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 631 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2763,8 +2718,7 @@ yyreduce: break; case 176: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 644 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2776,8 +2730,7 @@ yyreduce: break; case 177: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 653 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2789,8 +2742,7 @@ yyreduce: break; case 178: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 662 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2801,8 +2753,7 @@ yyreduce: break; case 179: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 670 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2818,8 +2769,7 @@ yyreduce: break; case 180: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 683 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2831,8 +2781,7 @@ yyreduce: break; case 181: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 692 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2843,8 +2792,7 @@ yyreduce: break; case 182: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 700 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2856,8 +2804,7 @@ yyreduce: break; case 183: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 709 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2868,8 +2815,7 @@ yyreduce: break; case 184: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 717 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2885,8 +2831,7 @@ yyreduce: break; case 185: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 730 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2896,8 +2841,7 @@ yyreduce: break; case 186: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 737 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2910,8 +2854,7 @@ yyreduce: break; case 187: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 747 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2924,8 +2867,7 @@ yyreduce: break; case 188: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 757 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2938,8 +2880,7 @@ yyreduce: break; case 189: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 767 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2952,8 +2893,7 @@ yyreduce: break; case 190: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 777 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2966,8 +2906,7 @@ yyreduce: break; case 191: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 787 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2980,8 +2919,7 @@ yyreduce: break; case 192: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 797 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2994,8 +2932,7 @@ yyreduce: break; case 193: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 807 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3005,8 +2942,7 @@ yyreduce: break; case 194: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 814 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3016,8 +2952,7 @@ yyreduce: break; case 195: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 821 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3029,8 +2964,7 @@ yyreduce: break; case 196: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 830 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3042,8 +2976,7 @@ yyreduce: break; case 197: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 839 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3055,8 +2988,7 @@ yyreduce: break; case 198: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 848 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3066,8 +2998,7 @@ yyreduce: break; case 199: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 855 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3080,15 +3011,17 @@ yyreduce: break; case 200: - -/* Line 1806 of yacc.c */ +/* Line 1787 of yacc.c */ #line 865 "./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), "deny_non_local")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) { - yyerror("expected deny, refuse, allow or allow_snoop " + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, 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))) @@ -3098,9 +3031,8 @@ yyreduce: break; case 201: - -/* Line 1806 of yacc.c */ -#line 879 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 882 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -3109,9 +3041,8 @@ yyreduce: break; case 202: - -/* Line 1806 of yacc.c */ -#line 886 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 889 "./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) { @@ -3131,9 +3062,8 @@ yyreduce: break; case 203: - -/* Line 1806 of yacc.c */ -#line 904 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 907 "./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) { @@ -3148,9 +3078,8 @@ yyreduce: break; case 204: - -/* Line 1806 of yacc.c */ -#line 917 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 920 "./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) { @@ -3165,9 +3094,8 @@ yyreduce: break; case 205: - -/* Line 1806 of yacc.c */ -#line 930 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 933 "./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) @@ -3178,9 +3106,8 @@ yyreduce: break; case 206: - -/* Line 1806 of yacc.c */ -#line 939 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 942 "./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) @@ -3191,9 +3118,8 @@ yyreduce: break; case 207: - -/* Line 1806 of yacc.c */ -#line 948 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 951 "./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) @@ -3204,9 +3130,8 @@ yyreduce: break; case 208: - -/* Line 1806 of yacc.c */ -#line 957 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 960 "./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) @@ -3218,9 +3143,8 @@ yyreduce: break; case 209: - -/* Line 1806 of yacc.c */ -#line 967 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 970 "./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) @@ -3232,9 +3156,8 @@ yyreduce: break; case 210: - -/* Line 1806 of yacc.c */ -#line 977 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 980 "./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) @@ -3245,9 +3168,8 @@ yyreduce: break; case 211: - -/* Line 1806 of yacc.c */ -#line 986 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 989 "./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) @@ -3258,9 +3180,8 @@ yyreduce: break; case 212: - -/* Line 1806 of yacc.c */ -#line 995 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 998 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -3269,9 +3190,8 @@ yyreduce: break; case 213: - -/* Line 1806 of yacc.c */ -#line 1002 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1005 "./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) @@ -3282,9 +3202,8 @@ yyreduce: break; case 214: - -/* Line 1806 of yacc.c */ -#line 1011 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1014 "./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) @@ -3295,9 +3214,8 @@ yyreduce: break; case 215: - -/* Line 1806 of yacc.c */ -#line 1020 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1023 "./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) @@ -3308,9 +3226,8 @@ yyreduce: break; case 216: - -/* Line 1806 of yacc.c */ -#line 1029 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1032 "./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)) @@ -3320,9 +3237,8 @@ yyreduce: break; case 217: - -/* Line 1806 of yacc.c */ -#line 1037 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1040 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3337,9 +3253,8 @@ yyreduce: break; case 218: - -/* Line 1806 of yacc.c */ -#line 1050 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1053 "./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)) @@ -3349,9 +3264,8 @@ yyreduce: break; case 219: - -/* Line 1806 of yacc.c */ -#line 1058 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1061 "./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 && @@ -3375,9 +3289,8 @@ yyreduce: break; case 220: - -/* Line 1806 of yacc.c */ -#line 1080 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1083 "./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))) @@ -3386,9 +3299,8 @@ yyreduce: break; case 221: - -/* Line 1806 of yacc.c */ -#line 1087 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1090 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3405,9 +3317,8 @@ yyreduce: break; case 222: - -/* Line 1806 of yacc.c */ -#line 1102 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1105 "./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) @@ -3419,9 +3330,8 @@ yyreduce: break; case 223: - -/* Line 1806 of yacc.c */ -#line 1112 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1115 "./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) @@ -3433,9 +3343,8 @@ yyreduce: break; case 224: - -/* Line 1806 of yacc.c */ -#line 1122 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1125 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); @@ -3444,9 +3353,8 @@ yyreduce: break; case 225: - -/* Line 1806 of yacc.c */ -#line 1129 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1132 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->stubs->name) @@ -3458,9 +3366,8 @@ yyreduce: break; case 226: - -/* Line 1806 of yacc.c */ -#line 1139 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1142 "./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))) @@ -3469,9 +3376,8 @@ yyreduce: break; case 227: - -/* Line 1806 of yacc.c */ -#line 1146 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1149 "./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))) @@ -3480,9 +3386,8 @@ yyreduce: break; case 228: - -/* Line 1806 of yacc.c */ -#line 1153 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1156 "./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) @@ -3493,9 +3398,8 @@ yyreduce: break; case 229: - -/* Line 1806 of yacc.c */ -#line 1162 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1165 "./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) @@ -3507,9 +3411,8 @@ yyreduce: break; case 230: - -/* Line 1806 of yacc.c */ -#line 1172 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1175 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->forwards->name) @@ -3521,9 +3424,8 @@ yyreduce: break; case 231: - -/* Line 1806 of yacc.c */ -#line 1182 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1185 "./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))) @@ -3532,9 +3434,8 @@ yyreduce: break; case 232: - -/* Line 1806 of yacc.c */ -#line 1189 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1192 "./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))) @@ -3543,9 +3444,8 @@ yyreduce: break; case 233: - -/* Line 1806 of yacc.c */ -#line 1196 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1199 "./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) @@ -3556,18 +3456,16 @@ yyreduce: break; case 234: - -/* Line 1806 of yacc.c */ -#line 1205 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1208 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; case 244: - -/* Line 1806 of yacc.c */ -#line 1216 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1219 "./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) @@ -3579,9 +3477,8 @@ yyreduce: break; case 245: - -/* Line 1806 of yacc.c */ -#line 1226 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1229 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3592,9 +3489,8 @@ yyreduce: break; case 246: - -/* Line 1806 of yacc.c */ -#line 1235 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1238 "./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))) @@ -3603,9 +3499,8 @@ yyreduce: break; case 247: - -/* Line 1806 of yacc.c */ -#line 1242 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1245 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3614,9 +3509,8 @@ yyreduce: break; case 248: - -/* Line 1806 of yacc.c */ -#line 1249 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1252 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3625,9 +3519,8 @@ yyreduce: break; case 249: - -/* Line 1806 of yacc.c */ -#line 1256 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1259 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3636,9 +3529,8 @@ yyreduce: break; case 250: - -/* Line 1806 of yacc.c */ -#line 1263 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1266 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3647,18 +3539,16 @@ yyreduce: break; case 251: - -/* Line 1806 of yacc.c */ -#line 1270 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1273 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; case 255: - -/* Line 1806 of yacc.c */ -#line 1279 "./util/configparser.y" +/* Line 1787 of yacc.c */ +#line 1282 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -3667,9 +3557,8 @@ yyreduce: break; - -/* Line 1806 of yacc.c */ -#line 3673 "util/configparser.c" +/* Line 1787 of yacc.c */ +#line 3562 "util/configparser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3856,7 +3745,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#if !defined(yyoverflow) || YYERROR_VERBOSE +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -3898,9 +3787,8 @@ yyreturn: } - -/* Line 2067 of yacc.c */ -#line 1284 "./util/configparser.y" +/* Line 2048 of yacc.c */ +#line 1287 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index f036ada5a..a862769de 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + 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 @@ -30,6 +30,15 @@ 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 +#endif +#if YYDEBUG +extern int yydebug; +#endif /* Tokens. */ #ifndef YYTOKENTYPE @@ -299,20 +308,17 @@ - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { - -/* Line 2068 of yacc.c */ +/* Line 2049 of yacc.c */ #line 64 "./util/configparser.y" char* str; - -/* Line 2068 of yacc.c */ -#line 316 "util/configparser.h" +/* Line 2049 of yacc.c */ +#line 322 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -321,4 +327,18 @@ typedef union YYSTYPE 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/util/configparser.y b/util/configparser.y index 4a0cc1697..b11d7d43f 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -865,9 +865,12 @@ server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG { OUTYY(("P(server_access_control:%s %s)\n", $2, $3)); if(strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && + strcmp($3, "deny_non_local")!=0 && + strcmp($3, "refuse_non_local")!=0 && strcmp($3, "allow")!=0 && strcmp($3, "allow_snoop")!=0) { - yyerror("expected deny, refuse, allow or allow_snoop " + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow or allow_snoop " "in access control action"); } else { if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3))