Make get/setsockopt handle SOREUSEADDR
This commit is contained in:
parent
413a8083b9
commit
1a39ed880a
2 changed files with 24 additions and 0 deletions
|
@ -78,6 +78,12 @@ static int _tcp_getsockopt(int socket, int level, int option_name,
|
||||||
{
|
{
|
||||||
int i, r, err;
|
int i, r, err;
|
||||||
|
|
||||||
|
if (level == SOL_SOCKET && option_name == SO_REUSEADDR)
|
||||||
|
{
|
||||||
|
i = 1; /* Binds to TIME_WAIT sockets never cause errors */
|
||||||
|
getsockopt_copy(&i, sizeof(i), option_value, option_len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (level == SOL_SOCKET && option_name == SO_KEEPALIVE)
|
if (level == SOL_SOCKET && option_name == SO_KEEPALIVE)
|
||||||
{
|
{
|
||||||
i = 1; /* Keepalive is always on */
|
i = 1; /* Keepalive is always on */
|
||||||
|
|
|
@ -63,6 +63,24 @@ static int _tcp_setsockopt(int socket, int level, int option_name,
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (level == SOL_SOCKET && option_name == SO_REUSEADDR)
|
||||||
|
{
|
||||||
|
if (option_len != sizeof(i))
|
||||||
|
{
|
||||||
|
errno= EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
i= *(int *)option_value;
|
||||||
|
if (!i)
|
||||||
|
{
|
||||||
|
/* At the moment there is no way to turn off
|
||||||
|
* reusing addresses.
|
||||||
|
*/
|
||||||
|
errno= ENOSYS;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (level == SOL_SOCKET && option_name == SO_KEEPALIVE)
|
if (level == SOL_SOCKET && option_name == SO_KEEPALIVE)
|
||||||
{
|
{
|
||||||
if (option_len != sizeof(i))
|
if (option_len != sizeof(i))
|
||||||
|
|
Loading…
Reference in a new issue