]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
We do use SO_REUSEPORT for some clients
authorNick Porter <nick@portercomputing.co.uk>
Wed, 6 Aug 2025 12:58:27 +0000 (13:58 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Thu, 7 Aug 2025 11:31:53 +0000 (12:31 +0100)
src/lib/bio/fd_open.c

index dc38a50d66cbbc9486afe1237c3bc9ae455f1809..c62780bd899859500431d58b6408ca9e7f39976e 100644 (file)
@@ -1253,8 +1253,15 @@ int fr_bio_fd_open(fr_bio_t *bio, fr_bio_fd_config_t const *cfg)
                 */
        case FR_BIO_FD_CONNECTED:
                if (my->info.socket.type == SOCK_DGRAM) {
-                       rcode = fr_bio_fd_common_datagram(fd, &my->info.socket, cfg); /* we don't use SO_REUSEPORT for clients */
-                       if (rcode < 0) goto fail;
+                       switch (my->info.socket.af) {
+                       case AF_INET:
+                       case AF_INET6:
+                               if ((rcode = fr_bio_fd_common_udp(fd, &my->info.socket, cfg)) < 0) goto fail;
+                               break;
+                       default:
+                               if ((rcode = fr_bio_fd_common_datagram(fd, &my->info.socket, cfg)) < 0) goto fail;
+                               break;
+                       }
 
                } else if ((my->info.socket.af == AF_INET) || (my->info.socket.af == AF_INET6)) {
                        rcode = fr_bio_fd_common_tcp(fd, &my->info.socket, cfg);