1/* 2 * configparser.y -- yacc grammar for unbound configuration files 3 * 4 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved. 5 * 6 * Copyright (c) 2007, NLnet Labs. All rights reserved. 7 * 8 * This software is open source. --- 30 unchanged lines hidden (view full) --- 39#include "config.h" 40 41#include <stdarg.h> 42#include <stdio.h> 43#include <string.h> 44#include <stdlib.h> 45#include <assert.h> 46 |
47#include "util/configyyrename.h" |
48#include "util/config_file.h" 49#include "util/net_help.h" 50 51int ub_c_lex(void); 52void ub_c_error(const char *message); 53 54/* these need to be global, otherwise they cannot be used inside yacc */ 55extern struct config_parser_state* cfg_parser; --- 45 unchanged lines hidden (view full) --- 101%token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL 102%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN 103%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH 104%token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN 105%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM 106%token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST 107%token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN 108%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UNBLOCK_LAN_ZONES |
109%token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL 110%token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH 111%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION 112%token VAR_DNSTAP_IDENTITY VAR_DNSTAP_VERSION 113%token VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 114%token VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 115%token VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 116%token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 117%token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 118%token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES |
119 120%% 121toplevelvars: /* empty */ | toplevelvars toplevelvar ; 122toplevelvar: serverstart contents_server | stubstart contents_stub | 123 forwardstart contents_forward | pythonstart contents_py | |
124 rcstart contents_rc | dtstart contents_dt |
125 ; 126 127/* server: declaration */ 128serverstart: VAR_SERVER 129 { 130 OUTYY(("\nP(server:)\n")); 131 } 132 ; --- 35 unchanged lines hidden (view full) --- 168 server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | 169 server_auto_trust_anchor_file | server_add_holddown | 170 server_del_holddown | server_keep_missing | server_so_rcvbuf | 171 server_edns_buffer_size | server_prefetch | server_prefetch_key | 172 server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag | 173 server_log_queries | server_tcp_upstream | server_ssl_upstream | 174 server_ssl_service_key | server_ssl_service_pem | server_ssl_port | 175 server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | |
176 server_so_reuseport | server_delay_close | server_unblock_lan_zones | 177 server_dns64_prefix | server_dns64_synthall |
178 ; 179stubstart: VAR_STUB_ZONE 180 { 181 struct config_stub* s; 182 OUTYY(("\nP(stub_zone:)\n")); 183 s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); 184 if(s) { 185 s->next = cfg_parser->cfg->stubs; --- 978 unchanged lines hidden (view full) --- 1164 ; 1165server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG 1166 { 1167 OUTYY(("P(server_max_udp_size:%s)\n", $2)); 1168 cfg_parser->cfg->max_udp_size = atoi($2); 1169 free($2); 1170 } 1171 ; |
1172server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG 1173 { 1174 OUTYY(("P(dns64_prefix:%s)\n", $2)); 1175 free(cfg_parser->cfg->dns64_prefix); 1176 cfg_parser->cfg->dns64_prefix = $2; 1177 } 1178 ; 1179server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG 1180 { 1181 OUTYY(("P(server_dns64_synthall:%s)\n", $2)); 1182 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1183 yyerror("expected yes or no."); 1184 else cfg_parser->cfg->dns64_synthall = (strcmp($2, "yes")==0); 1185 free($2); 1186 } 1187 ; |
1188stub_name: VAR_NAME STRING_ARG 1189 { 1190 OUTYY(("P(name:%s)\n", $2)); 1191 if(cfg_parser->cfg->stubs->name) 1192 yyerror("stub name override, there must be one name " 1193 "for one stub-zone"); 1194 free(cfg_parser->cfg->stubs->name); 1195 cfg_parser->cfg->stubs->name = $2; --- 125 unchanged lines hidden (view full) --- 1321 ; 1322rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG 1323 { 1324 OUTYY(("P(rc_control_cert_file:%s)\n", $2)); 1325 free(cfg_parser->cfg->control_cert_file); 1326 cfg_parser->cfg->control_cert_file = $2; 1327 } 1328 ; |
1329dtstart: VAR_DNSTAP 1330 { 1331 OUTYY(("\nP(dnstap:)\n")); 1332 } 1333 ; 1334contents_dt: contents_dt content_dt 1335 | ; 1336content_dt: dt_dnstap_enable | dt_dnstap_socket_path | 1337 dt_dnstap_send_identity | dt_dnstap_send_version | 1338 dt_dnstap_identity | dt_dnstap_version | 1339 dt_dnstap_log_resolver_query_messages | 1340 dt_dnstap_log_resolver_response_messages | 1341 dt_dnstap_log_client_query_messages | 1342 dt_dnstap_log_client_response_messages | 1343 dt_dnstap_log_forwarder_query_messages | 1344 dt_dnstap_log_forwarder_response_messages 1345 ; 1346dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG 1347 { 1348 OUTYY(("P(dt_dnstap_enable:%s)\n", $2)); 1349 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1350 yyerror("expected yes or no."); 1351 else cfg_parser->cfg->dnstap = (strcmp($2, "yes")==0); 1352 } 1353 ; 1354dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG 1355 { 1356 OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2)); 1357 free(cfg_parser->cfg->dnstap_socket_path); 1358 cfg_parser->cfg->dnstap_socket_path = $2; 1359 } 1360 ; 1361dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG 1362 { 1363 OUTYY(("P(dt_dnstap_send_identity:%s)\n", $2)); 1364 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1365 yyerror("expected yes or no."); 1366 else cfg_parser->cfg->dnstap_send_identity = (strcmp($2, "yes")==0); 1367 } 1368 ; 1369dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG 1370 { 1371 OUTYY(("P(dt_dnstap_send_version:%s)\n", $2)); 1372 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1373 yyerror("expected yes or no."); 1374 else cfg_parser->cfg->dnstap_send_version = (strcmp($2, "yes")==0); 1375 } 1376 ; 1377dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG 1378 { 1379 OUTYY(("P(dt_dnstap_identity:%s)\n", $2)); 1380 free(cfg_parser->cfg->dnstap_identity); 1381 cfg_parser->cfg->dnstap_identity = $2; 1382 } 1383 ; 1384dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG 1385 { 1386 OUTYY(("P(dt_dnstap_version:%s)\n", $2)); 1387 free(cfg_parser->cfg->dnstap_version); 1388 cfg_parser->cfg->dnstap_version = $2; 1389 } 1390 ; 1391dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG 1392 { 1393 OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", $2)); 1394 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1395 yyerror("expected yes or no."); 1396 else cfg_parser->cfg->dnstap_log_resolver_query_messages = 1397 (strcmp($2, "yes")==0); 1398 } 1399 ; 1400dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG 1401 { 1402 OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", $2)); 1403 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1404 yyerror("expected yes or no."); 1405 else cfg_parser->cfg->dnstap_log_resolver_response_messages = 1406 (strcmp($2, "yes")==0); 1407 } 1408 ; 1409dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG 1410 { 1411 OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", $2)); 1412 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1413 yyerror("expected yes or no."); 1414 else cfg_parser->cfg->dnstap_log_client_query_messages = 1415 (strcmp($2, "yes")==0); 1416 } 1417 ; 1418dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG 1419 { 1420 OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", $2)); 1421 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1422 yyerror("expected yes or no."); 1423 else cfg_parser->cfg->dnstap_log_client_response_messages = 1424 (strcmp($2, "yes")==0); 1425 } 1426 ; 1427dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG 1428 { 1429 OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", $2)); 1430 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1431 yyerror("expected yes or no."); 1432 else cfg_parser->cfg->dnstap_log_forwarder_query_messages = 1433 (strcmp($2, "yes")==0); 1434 } 1435 ; 1436dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG 1437 { 1438 OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", $2)); 1439 if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) 1440 yyerror("expected yes or no."); 1441 else cfg_parser->cfg->dnstap_log_forwarder_response_messages = 1442 (strcmp($2, "yes")==0); 1443 } 1444 ; |
1445pythonstart: VAR_PYTHON 1446 { 1447 OUTYY(("\nP(python:)\n")); 1448 } 1449 ; 1450contents_py: contents_py content_py 1451 | ; 1452content_py: py_script 1453 ; 1454py_script: VAR_PYTHON_SCRIPT STRING_ARG 1455 { 1456 OUTYY(("P(python-script:%s)\n", $2)); 1457 free(cfg_parser->cfg->python_script); 1458 cfg_parser->cfg->python_script = $2; 1459 } 1460%% 1461 1462/* parse helper routines could be here */ |