From: George Thessalonikefs Date: Wed, 26 Apr 2023 13:14:39 +0000 (+0200) Subject: Merge branch 'nat64' of https://github.com/eqvinox/unbound into eqvinox-nat64 X-Git-Tag: release-1.18.0rc1~24^2~45^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e1ec3cf8934aa77bd756b9b84fdb1b6267da7bde;p=thirdparty%2Funbound.git Merge branch 'nat64' of https://github.com/eqvinox/unbound into eqvinox-nat64 --- e1ec3cf8934aa77bd756b9b84fdb1b6267da7bde diff --cc iterator/iter_utils.c index b2a2309ab,98fac8186..c8c41a196 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@@ -172,11 -178,35 +178,37 @@@ iter_apply_cfg(struct iter_env* iter_en } } + + nat64_prefix = cfg->nat64_prefix; + if (!nat64_prefix) + nat64_prefix = cfg->dns64_prefix; + if (!nat64_prefix) + nat64_prefix = DEFAULT_NAT64_PREFIX; + if (!netblockstrtoaddr(nat64_prefix, 0, &iter_env->nat64_prefix_addr, + &iter_env->nat64_prefix_addrlen, + &iter_env->nat64_prefix_net)) { + log_err("cannot parse nat64-prefix netblock: %s", nat64_prefix); + return 0; + } + if (!addr_is_ip6(&iter_env->nat64_prefix_addr, + iter_env->nat64_prefix_addrlen)) { + log_err("nat64_prefix is not IPv6: %s", cfg->nat64_prefix); + return 0; + } + if (iter_env->nat64_prefix_net != 32 && iter_env->nat64_prefix_net != 40 && + iter_env->nat64_prefix_net != 48 && iter_env->nat64_prefix_net != 56 && + iter_env->nat64_prefix_net != 64 && iter_env->nat64_prefix_net != 96 ) { + log_err("dns64-prefix length it not 32, 40, 48, 56, 64 or 96: %s", + nat64_prefix); + return 0; + } + iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; + iter_env->use_nat64 = cfg->do_nat64; iter_env->outbound_msg_retry = cfg->outbound_msg_retry; + iter_env->max_sent_count = cfg->max_sent_count; + iter_env->max_query_restarts = cfg->max_query_restarts; return 1; } diff --cc util/configparser.y index 06118e04a,91f8af0a7..d07b8788f --- a/util/configparser.y +++ b/util/configparser.y @@@ -73,10 -73,9 +73,10 @@@ extern struct config_parser_state* cfg_ %token VAR_FORCE_TOPLEVEL %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT %token VAR_OUTGOING_RANGE VAR_INTERFACE VAR_PREFER_IP4 - %token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP + %token VAR_DO_IP4 VAR_DO_IP6 VAR_DO_NAT64 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP %token VAR_TCP_MSS VAR_OUTGOING_TCP_MSS VAR_TCP_IDLE_TIMEOUT %token VAR_EDNS_TCP_KEEPALIVE VAR_EDNS_TCP_KEEPALIVE_TIMEOUT +%token VAR_SOCK_QUEUE_TIMEOUT %token VAR_CHROOT VAR_USERNAME VAR_DIRECTORY VAR_LOGFILE VAR_PIDFILE %token VAR_MSG_CACHE_SIZE VAR_MSG_CACHE_SLABS VAR_NUM_QUERIES_PER_THREAD %token VAR_RRSET_CACHE_SIZE VAR_RRSET_CACHE_SLABS VAR_OUTGOING_NUM_TCP @@@ -224,11 -223,10 +225,11 @@@ contents_server: contents_server conten | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | - server_do_ip6 | server_prefer_ip4 | server_prefer_ip6 | - server_do_udp | server_do_tcp | + server_do_ip6 | server_do_nat64 | server_prefer_ip4 | + server_prefer_ip6 | server_do_udp | server_do_tcp | server_tcp_mss | server_outgoing_tcp_mss | server_tcp_idle_timeout | server_tcp_keepalive | server_tcp_keepalive_timeout | + server_sock_queue_timeout | server_interface | server_chroot | server_username | server_directory | server_logfile | server_pidfile | server_msg_cache_size | server_msg_cache_slabs |