Voltar à lista
Linux x86_64Rede & sockets#54

setsockopt

Define uma opção de socket em um nível de protocolo específico.

Descrição

Ajusta comportamentos como timeouts (SO_RCVTIMEO), reuso de endereço (SO_REUSEADDR), tamanho de buffers (SO_RCVBUF/SO_SNDBUF), keep-alive TCP, opções de multicast, entre centenas de outras espalhadas por diferentes níveis de protocolo (SOL_SOCKET, IPPROTO_TCP, IPPROTO_IP, ...).

Header: sys/socket.hman 2

Assinatura

int setsockopt(
    int sockfd,
    int level,
    int optname,
    const void * optval,
    socklen_t optlen
);

Parâmetros

ParâmetroTipoDescrição
sockfdintDescritor do socket.
levelintNível de protocolo da opção: SOL_SOCKET, IPPROTO_TCP, IPPROTO_IP, etc.
optnameintNome da opção dentro do nível.
optvalconst void *Novo valor da opção.
optlensocklen_tTamanho de `optval`.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1sockfdint
rsiargumento 2levelint
rdxargumento 3optnameint
r10argumento 4optvalconst void *
r8argumento 5optlensocklen_t

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINVAL(22)
Argumento inválido.
ENOPROTOOPT(92)
Opção de protocolo indisponível.
ENOTSOCK(88)
Operação de socket em descritor que não é um socket.

Relacionadas