Index: services/listen_dnsport.c =================================================================== RCS file: /cvs/src/usr.sbin/unbound/services/listen_dnsport.c,v retrieving revision 1.33 diff -u -p -r1.33 listen_dnsport.c --- services/listen_dnsport.c 20 Oct 2022 08:26:14 -0000 1.33 +++ services/listen_dnsport.c 16 Aug 2023 00:06:25 -0000 @@ -1291,6 +1291,13 @@ ports_create_if(const char* ifname, int } return 0; } + /* getting source addr packet info is highly non-portable */ + if(!set_recvpktinfo(s, hints->ai_family)) { + sock_close(s); + freeaddrinfo(ub_sock->addr); + free(ub_sock); + return 0; + } if(!port_insert(list, s, is_dnscrypt ?listen_type_udp_dnscrypt:listen_type_udp, is_pp2, ub_sock)) { @@ -1416,7 +1423,7 @@ listen_create(struct comm_base* base, st struct comm_point* cp = NULL; if(ports->ftype == listen_type_udp || ports->ftype == listen_type_udp_dnscrypt) { - cp = comm_point_create_udp(base, ports->fd, + cp = comm_point_create_udp_ancil(base, ports->fd, front->udp_buff, ports->pp2_enabled, cb, cb_arg, ports->socket); } else if(ports->ftype == listen_type_tcp ||