getsockopt(2)

NOMBRE
getsockopt, setsockopt - obtiene y pone opciones en conectores (sockets)

BIBLIOTECA
Biblioteca Estándar C (libc, -lc)

SINOPSIS
#include <sys/socket.h>

int getsockopt(socklen_t *restrict optlen;
               int sockfd, int level, int optname,
               void optval[_Nullable restrict *optlen],
               socklen_t *restrict optlen);
int setsockopt(socklen_t optlen;
               int sockfd, int level, int optname,
               const void optval[optlen],
               socklen_t optlen);

DESCRIPCIÓN
getsockopt() y setsockopt() manipulan las opciones del socket al que hace referencia el descriptor de archivo sockfd. Las opciones pueden existir en varios niveles de protocolo; siempre están presentes en el nivel de socket superior.

Al manipular las opciones de socket, se debe definir el nivel en el que reside la opción y su nombre. Para manipular opciones al nivel de la API de sockets, level se define como SOL_SOCKET. Para manipular opciones en cualquier otro nivel, se indica el número del protocolo correspondiente que controla la opción. Por ejemplo, para indicar que una opción debe ser interpretada por el protocolo TCP, level deberá establecerse en el número de protocolo de TCP; consulte getprotoent(3).

Los argumentos optval y optlen sirven para acceder a los valores de las opciones de setsockopt(). En getsockopt(), identifican un búfer que retornará el valor de las opciones solicitadas. Para getsockopt(), optlen es un argumento de valor-resultado que inicialmente contiene el tamaño del búfer al que apunta optval y se modifica al regresar para indicar el tamaño real del valor devuelto. Si no se proporciona ni se devuelve ningún valor, optval puede ser NULL.

Optname y cualesquiera opciones especificadas se pasan sin interpretar al módulo de protocolo apropiado para su interpretación. El fichero de cabecera <sys/socket.h> contiene definiciones para opciones de nivel de conector, descritas más abajo. Las opciones a otros niveles de protocolo varían en formato y nombre; consulte las páginas apropiadas de la sección 4 del Manual.

La mayoría de las opciones de nivel-conector utilizan un parámetro int para optval. Para setsockopt(), el parámetro debe ser distinto de cero para permitir una opción booleana, o cero si la opción va a ser deshabilitada.

Para una descripción de las opciones disponibles para conectores vea socket(7) y las páginas de manual del protocolo apropiado.

VALOR DEVUELTO
En caso de éxito, se devuelve cero en las operaciones estándar. En caso de error, -1, y se define errno al valor correspondiente.

Netfilter permite al programador definir opciones de socket personalizadas con controladores asociados; para estas opciones, el valor de retorno, en caso de éxito, será el valor devuelto por el controlador.

ERRORES

EBADF
    El argumento sockfd no es un descriptor de archivo válido.

EFAULT
    La dirección apuntada por optval no está en un sitio válido del espacio de direcciones del proceso. Para getsockopt(), este error puede también ser devuelto si optlen no está en un sitio válido del espacio de direcciones del proceso.

EINVAL
    optlen no válido en setsockopt(). En algunos casos, este error también puede ocurrir si el valor de optval no es válido (por ejemplo, para la opción IP_ADD_MEMBERSHIP descrita en ip(7)).

ENOPROTOOPT
    La opción es desconocida al nivel indicado.

ENOTSOCK
    El descriptor de archivo sockfd no se refiere a un conector.

ESTÁNDARES
POSIX.1-2024.

HISTORIAL
POSIX.1-2001, SVr4, 4.4BSD (apareció por primera vez en 4.2BSD).

ERRORES
Algunas de las opciones de conector deberían ser manejadas a niveles más bajos del sistema.

VÉASE TAMBIÉN
ioctl(2), socket(2), getprotoent(3), protocols(5), ip(7), packet(7), socket(7), tcp(7), udp(7), unix(7)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es>, Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.