| Index: nspr/pr/src/io/prmapopt.c
|
| diff --git a/nspr/pr/src/io/prmapopt.c b/nspr/pr/src/io/prmapopt.c
|
| index 43e8f9cb7662e803ea0a6ef09b7b437bc91f3c58..f92a76b2bd6d0d0fd4ab12a3a9b9ea3da2e6b62e 100644
|
| --- a/nspr/pr/src/io/prmapopt.c
|
| +++ b/nspr/pr/src/io/prmapopt.c
|
| @@ -85,6 +85,7 @@ PRStatus PR_CALLBACK _PR_SocketGetSocketOption(PRFileDesc *fd, PRSocketOptionDat
|
| case PR_SockOpt_Keepalive:
|
| case PR_SockOpt_NoDelay:
|
| case PR_SockOpt_Broadcast:
|
| + case PR_SockOpt_Reuseport:
|
| {
|
| #ifdef WIN32 /* Winsock */
|
| BOOL value;
|
| @@ -236,6 +237,7 @@ PRStatus PR_CALLBACK _PR_SocketSetSocketOption(PRFileDesc *fd, const PRSocketOpt
|
| case PR_SockOpt_Keepalive:
|
| case PR_SockOpt_NoDelay:
|
| case PR_SockOpt_Broadcast:
|
| + case PR_SockOpt_Reuseport:
|
| {
|
| #ifdef WIN32 /* Winsock */
|
| BOOL value;
|
| @@ -412,10 +414,14 @@ PRStatus PR_CALLBACK _PR_SocketSetSocketOption(PRFileDesc *fd, const PRSocketOpt
|
| #define TCP_MAXSEG _PR_NO_SUCH_SOCKOPT
|
| #endif
|
|
|
| -#ifndef SO_BROADCAST /* enable broadcast on udp sockets */
|
| +#ifndef SO_BROADCAST /* enable broadcast on UDP sockets */
|
| #define SO_BROADCAST _PR_NO_SUCH_SOCKOPT
|
| #endif
|
|
|
| +#ifndef SO_REUSEPORT /* allow local address & port reuse */
|
| +#define SO_REUSEPORT _PR_NO_SUCH_SOCKOPT
|
| +#endif
|
| +
|
| PRStatus _PR_MapOptionName(
|
| PRSockOption optname, PRInt32 *level, PRInt32 *name)
|
| {
|
| @@ -424,14 +430,14 @@ PRStatus _PR_MapOptionName(
|
| 0, SO_LINGER, SO_REUSEADDR, SO_KEEPALIVE, SO_RCVBUF, SO_SNDBUF,
|
| IP_TTL, IP_TOS, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP,
|
| IP_MULTICAST_IF, IP_MULTICAST_TTL, IP_MULTICAST_LOOP,
|
| - TCP_NODELAY, TCP_MAXSEG, SO_BROADCAST
|
| + TCP_NODELAY, TCP_MAXSEG, SO_BROADCAST, SO_REUSEPORT
|
| };
|
| static PRInt32 socketLevels[PR_SockOpt_Last] =
|
| {
|
| 0, SOL_SOCKET, SOL_SOCKET, SOL_SOCKET, SOL_SOCKET, SOL_SOCKET,
|
| IPPROTO_IP, IPPROTO_IP, IPPROTO_IP, IPPROTO_IP,
|
| IPPROTO_IP, IPPROTO_IP, IPPROTO_IP,
|
| - IPPROTO_TCP, IPPROTO_TCP, SOL_SOCKET
|
| + IPPROTO_TCP, IPPROTO_TCP, SOL_SOCKET, SOL_SOCKET
|
| };
|
|
|
| if ((optname < PR_SockOpt_Linger)
|
|
|