Provided by: manpages-es_1.55-9_all bug

NOMBRE

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

SINOPSIS

       #include <sys/types.h>
       #include <sys/socket.h>

       int getsockopt(int s, int nivel, int nomopc,  void  *valopc,  socklen_t
       *lonopc);

       int  setsockopt(int  s,  int  nivel,  int  nomopc,  const void *valopc,
       socklen_t lonopc);

DESCRIPCIÓN

       Getsockopt y setsockopt manipulan las opciones asociadas a un conector.
       Éstas  pueden  existir en múltiples niveles de protocolo; siempre están
       presentes en el nivel más alto de conector.

       Al manipular opciones de conector, deben especificarse el nivel  en  el
       que reside la opción, y su nombre.

       Para  manipular  opciones  en el nivel de conector, nivel se especifica
       como SOL_SOCKET.  Para manipular opciones a cualquier  otro  nivel,  se
       suministra el número de protocolo del apropiado que controle la opción.
       Por ejemplo, para indicar que una opción ha de ser interpretada por  el
       protocolo  TCP,  nivel debe ponerse como el número de protocolo de TCP;
       vea getprotoent(3).

       Los parámetros valopc y lonopc se emplean para  acceder  a  valores  de
       opciones  de  setsockopt.  Para getsockopt identifican a un búfer en el
       que se pondrá el  valor  para  la  opción  pedida  (u  opciones).  Para
       getsockopt,  lonopc  es  un  parámetro  por  referencia,  que  contiene
       inicialmente el tamaño  del  búfer   apuntado  por  optval,  y  que  se
       modifica  al  acabar  la función para contener el tamaño real del valor
       devuelto. Si no se va a suministrar o  devolver  un  valor  de  opción,
       valopc puede ser NULL.

       Nomopc  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  valopc.   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

       Se devuelve cero en caso de éxito. En caso de error se  devuelve  -1  y
       errno toma un valor apropiado.

ERRORES

       EBADF  El argumento s no es un descriptor válido.

       ENOTSOCK
              El argumento s es un fichero, no un conector.

       ENOPROTOOPT
              La opción es desconocida al nivel indicado.

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

CONFORME A

       SVr4, 4.4BSD (estas primitivas aparecieron por primera vez en  4.2BSD).
       SVr4 documenta los códigos de error adicionales ENOMEM y ENOSR, pero no
       documenta  las  opciones  SO_SNDLOWAT,  SO_RCVLOWAT,   SO_SNDTIMEO   ni
       SO_RCVTIMEO

NOTA

       El quinto argumento de getsockopt y setsockopt es en realidad un entero
       [*] (y esto es lo que tienen BSD 4.*, libc4 y libc5).  Cierta confusión
       en POSIX dio como resultado el actual socklen_t.  El estándar propuesto
       todavía no ha sido adoptado pero glibc2 ya lo  sigue  y  también  tiene
       socklen_t [*]. Vea también accept(2).

FALLOS

       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), socket(7),  unix(7),
       tcp(7)