]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Use SO_REUSEPORT at sockopts so that the RTR port can be reused
authorpcarana <pc.moreno2099@gmail.com>
Thu, 16 Jan 2020 21:34:03 +0000 (15:34 -0600)
committerpcarana <pc.moreno2099@gmail.com>
Thu, 16 Jan 2020 21:34:03 +0000 (15:34 -0600)
src/rtr/rtr.c

index 740a45f0b568a9ca1df01c69498876071a2954b8..8da7c0a49e9b1189c60587bf1abaae7334a0c908 100644 (file)
@@ -86,12 +86,12 @@ create_server_socket(int *result)
        struct addrinfo *addrs;
        struct addrinfo *addr;
        unsigned long port;
-       int reusaddr;
+       int reuse;
        int fd; /* "file descriptor" */
        int error;
 
        *result = 0; /* Shuts up gcc */
-       reusaddr = 1;
+       reuse = 1;
 
        error = init_addrinfo(&addrs);
        if (error)
@@ -110,12 +110,19 @@ create_server_socket(int *result)
                }
 
                /* enable SO_REUSEADDR */
-               if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reusaddr,
+               if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse,
                    sizeof(int)) < 0) {
                        pr_errno(errno, "setsockopt(SO_REUSEADDR) failed");
                        continue;
                }
 
+               /* enable SO_REUSEPORT */
+               if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &reuse,
+                   sizeof(int)) < 0) {
+                       pr_errno(errno, "setsockopt(SO_REUSEPORT) failed");
+                       continue;
+               }
+
                if (bind(fd, addr->ai_addr, addr->ai_addrlen) < 0) {
                        pr_errno(errno, "bind() failed");
                        continue;