From: Daniel Salzman Date: Mon, 4 Dec 2023 16:31:22 +0000 (+0100) Subject: quic-handler: fix source address setting on BSDs X-Git-Tag: v3.4.0~238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff7026eae8174863bf93b4aa261c0cd5db73e8ca;p=thirdparty%2Fknot-dns.git quic-handler: fix source address setting on BSDs --- diff --git a/src/knot/server/quic-handler.c b/src/knot/server/quic-handler.c index 0dfa1c4eed..0944900e9a 100644 --- a/src/knot/server/quic-handler.c +++ b/src/knot/server/quic-handler.c @@ -155,11 +155,19 @@ int uq_send_sweep(struct knot_quic_reply *r) sizeof(struct in6_addr)); } else { cmsg.cmsg.cmsg_level = IPPROTO_IP; +#if defined(IP_PKTINFO) cmsg.cmsg.cmsg_type = IP_PKTINFO; cmsg.cmsg.cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo)); memcpy(&((struct in_pktinfo *)CMSG_DATA(&cmsg.cmsg))->ipi_addr, &((const struct sockaddr_in *)r->ip_loc)->sin_addr, sizeof(struct in_addr)); +#elif defined(IP_SENDSRCADDR) + cmsg.cmsg.cmsg_type = IP_SENDSRCADDR; + cmsg.cmsg.cmsg_len = CMSG_LEN(sizeof(struct in_addr)); + memcpy((struct in_addr *)CMSG_DATA(&cmsg.cmsg), + &((const struct sockaddr_in *)r->ip_loc)->sin_addr, + sizeof(struct in_addr)); +#endif } // this only says "send it with given outgoing IP address" assert(r->ip_rem != NULL);