aboutsummaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2022-07-13 13:02:01 +0000
committerCy Schubert <cy@FreeBSD.org>2022-07-13 13:02:01 +0000
commitd57351465531b38689892ec862de2725b52842dd (patch)
tree7363167508f031fdb90b9091c07a065f3903325d /services
parent5f9f82264b91e041df7cba2406625146e7268ce4 (diff)
downloadsrc-d57351465531b38689892ec862de2725b52842dd.tar.gz
src-d57351465531b38689892ec862de2725b52842dd.zip
unbound: Vendor import 1.16.1vendor/unbound/1.16.1
Diffstat (limited to 'services')
-rw-r--r--services/authzone.c4
-rw-r--r--services/mesh.c3
-rw-r--r--services/outside_network.c12
-rw-r--r--services/outside_network.h2
4 files changed, 17 insertions, 4 deletions
diff --git a/services/authzone.c b/services/authzone.c
index 02fb621a22ff..5f2b7154a946 100644
--- a/services/authzone.c
+++ b/services/authzone.c
@@ -3967,7 +3967,7 @@ probe_copy_masters_for_allow_notify(struct auth_xfer* xfr)
struct auth_master* list = NULL, *last = NULL;
struct auth_master* p;
/* build up new list with copies */
- for(p = xfr->task_probe->masters; p; p=p->next) {
+ for(p = xfr->task_transfer->masters; p; p=p->next) {
struct auth_master* m = auth_master_copy(p);
if(!m) {
auth_free_masters(list);
@@ -5512,6 +5512,8 @@ xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env)
addr_to_str(&addr, addrlen, as, sizeof(as));
verbose(VERB_ALGO, "auth zone %s transfer next HTTP fetch from %s started", zname, as);
}
+ /* Create or refresh the list of allow_notify addrs */
+ probe_copy_masters_for_allow_notify(xfr);
return 1;
}
diff --git a/services/mesh.c b/services/mesh.c
index fbaa966bdd05..c40eb50dc55c 100644
--- a/services/mesh.c
+++ b/services/mesh.c
@@ -811,7 +811,8 @@ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh,
log_err("prefetch_subnet subnet_option_from_ss: invalid data");
return;
}
- subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, &s->s);
+ subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in,
+ &s->s, s->s.region);
if(!s->s.edns_opts_front_in) {
log_err("prefetch_subnet subnet_ecs_opt_list_append: out of memory");
return;
diff --git a/services/outside_network.c b/services/outside_network.c
index ec37a4a80d71..3f479a3a36fe 100644
--- a/services/outside_network.c
+++ b/services/outside_network.c
@@ -271,7 +271,7 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss,
int s;
int af;
char* err;
-#ifdef SO_REUSEADDR
+#if defined(SO_REUSEADDR) || defined(IP_BIND_ADDRESS_NO_PORT)
int on = 1;
#endif
#ifdef INET6
@@ -317,7 +317,13 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss,
" setsockopt(TCP_MAXSEG) unsupported");
#endif /* defined(IPPROTO_TCP) && defined(TCP_MAXSEG) */
}
-
+#ifdef IP_BIND_ADDRESS_NO_PORT
+ if(setsockopt(s, IPPROTO_IP, IP_BIND_ADDRESS_NO_PORT, (void*)&on,
+ (socklen_t)sizeof(on)) < 0) {
+ verbose(VERB_ALGO, "outgoing tcp:"
+ " setsockopt(.. IP_BIND_ADDRESS_NO_PORT ..) failed");
+ }
+#endif /* IP_BIND_ADDRESS_NO_PORT */
return s;
}
@@ -1608,6 +1614,7 @@ outside_network_create(struct comm_base *base, size_t bufsize,
outnet->tcp_reuse_timeout= tcp_reuse_timeout;
outnet->tcp_auth_query_timeout = tcp_auth_query_timeout;
outnet->num_tcp_outgoing = 0;
+ outnet->num_udp_outgoing = 0;
outnet->infra = infra;
outnet->rnd = rnd;
outnet->sslctx = sslctx;
@@ -2142,6 +2149,7 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout)
portcomm_loweruse(outnet, pend->pc);
return 0;
}
+ outnet->num_udp_outgoing++;
/* system calls to set timeout after sending UDP to make roundtrip
smaller. */
diff --git a/services/outside_network.h b/services/outside_network.h
index 4c5b96f83424..c383b8f09e24 100644
--- a/services/outside_network.h
+++ b/services/outside_network.h
@@ -113,6 +113,8 @@ struct outside_network {
/** if we perform udp-connect, connect() for UDP socket to mitigate
* ICMP side channel leakage */
int udp_connect;
+ /** number of udp packets sent. */
+ size_t num_udp_outgoing;
/** array of outgoing IP4 interfaces */
struct port_if* ip4_ifs;