Index: ossp-pkg/sa/sa.c RCS File: /v/ossp/cvs/ossp-pkg/sa/sa.c,v rcsdiff -q -kk '-r1.47' '-r1.48' -u '/v/ossp/cvs/ossp-pkg/sa/sa.c,v' 2>/dev/null --- sa.c 2002/01/02 13:27:11 1.47 +++ sa.c 2002/01/02 13:35:36 1.48 @@ -1143,6 +1143,25 @@ #endif break; } + case SA_OPTION_REUSEADDR: + case SA_OPTION_REUSEPORT: { + /* enable/disable reusability of binding to address or port */ + int mode = ((int)va_arg(ap, int) ? 1 : 0); + int flag; + if (sa->fdSocket == -1) { + rv = SA_ERR_USE; + break; + } + switch (id) { + case SA_OPTION_REUSEADDR: flag = SO_REUSEADDR; break; + case SA_OPTION_REUSEPORT: flag = SO_REUSEPORT; break; + default: flag = 0; break; + } + if (setsockopt(sa->fdSocket, SOL_SOCKET, flag, + (void *)&mode, sizeof(mode)) < 0) + rv = SA_ERR_SYS; + break; + } case SA_OPTION_NONBLOCK: { /* enable/disable non-blocking I/O mode */ int flags; Index: ossp-pkg/sa/sa.h RCS File: /v/ossp/cvs/ossp-pkg/sa/sa.h,v rcsdiff -q -kk '-r1.26' '-r1.27' -u '/v/ossp/cvs/ossp-pkg/sa/sa.h,v' 2>/dev/null --- sa.h 2002/01/02 12:43:50 1.26 +++ sa.h 2002/01/02 13:35:36 1.27 @@ -138,6 +138,8 @@ /* list of options */ typedef enum { SA_OPTION_NAGLE, + SA_OPTION_REUSEADDR, + SA_OPTION_REUSEPORT, SA_OPTION_NONBLOCK } sa_option_t; Index: ossp-pkg/sa/sa.pod RCS File: /v/ossp/cvs/ossp-pkg/sa/sa.pod,v rcsdiff -q -kk '-r1.20' '-r1.21' -u '/v/ossp/cvs/ossp-pkg/sa/sa.pod,v' 2>/dev/null --- sa.pod 2002/01/02 12:43:50 1.20 +++ sa.pod 2002/01/02 13:35:36 1.21 @@ -435,10 +435,15 @@ the expected following argument(s) are dependent on the particular option. Currently the following options are implement (option arguments in parenthesis): C (C I) for enabling -(I=C<1>) or disabling (I=C<0>) Nagle's Algorithm -(see RFC898); C (C I) for enabling -(I=C<1>) or disabling (I=C<0>) non-blocking I/O mode (see -C of fcntl(2)). +(I=C<1>) or disabling (I=C<0>) Nagle's Algorithm (see +RFC898); C (C I) for enabling +(I=C<1>) or disabling (I=C<0>) the reusability of +the address on binding (see C of setsockopt(2)), +C (C I) for enabling (I=C<1>) +or disabling (I=C<0>) the reusability of the port on binding +(see C of setsockopt(2)), C (C +I) for enabling (I=C<1>) or disabling (I=C<0>) +non-blocking I/O mode (see C of fcntl(2)). Example: C