.\" -*- coding: UTF-8 -*- '\" t .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $ .\" .\" FIXME The following socket options are yet to be documented .\" .\" IP_XFRM_POLICY (2.5.48) .\" Needs CAP_NET_ADMIN .\" .\" IP_IPSEC_POLICY (2.5.47) .\" Needs CAP_NET_ADMIN .\" .\" IP_MINTTL (2.6.34) .\" commit d218d11133d888f9745802146a50255a4781d37a .\" Author: Stephen Hemminger .\" .\" MCAST_JOIN_GROUP (2.4.22 / 2.6) .\" .\" MCAST_BLOCK_SOURCE (2.4.22 / 2.6) .\" .\" MCAST_UNBLOCK_SOURCE (2.4.22 / 2.6) .\" .\" MCAST_LEAVE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_JOIN_SOURCE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_LEAVE_SOURCE_GROUP (2.4.22 / 2.6) .\" .\" MCAST_MSFILTER (2.4.22 / 2.6) .\" .\" IP_UNICAST_IF (3.4) .\" commit 76e21053b5bf33a07c76f99d27a74238310e3c71 .\" Author: Erich E. Hoover .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ip 7 "2 Mayo 2024" "Páginas de Manual de Linux 6.9.1" .SH NOMBRE ip \- Implementación del protocolo IPv4 en Linux .SH SINOPSIS .nf .\" .B #include -- does not exist anymore .\" .B #include -- never include \fB#include \fP \fB#include \fP \fB#include \fP/* contiene a los anteriores */ .P \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP \fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP \fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocolo\fP\fB);\fP .fi .SH DESCRIPCIÓN Linux implementa el Protocolo de Internet (Internet Protocol, IP), version 4, descrito en RFC\ 791 y RFC\ 1122. \fBip\fP contiene una implementación de multidestino del Nivel 2 según el RFC\ 1112. También contiene un enrutador IP incluyendo un filtro de paquetes. .P La interfaz del programador es compatible con la de los conectores BSD. Consulte \fBsocket\fP(7) para más información sobre conectores. .P Los conectores IP se generan mediante \fBsocket\fP(2): .P .in +4n .EX socket(AF_INET, socket_type, protocolo); .EE .in .P Los tipos de conector válidos serían \fBSOCK_STREAM\fP para un conector de flujo, \fBSOCK_DGRAM\fP para abrir un conector de datagrama y \fBSOCK_RAW\fP para abrir un conector \fBraw\fP(7) que accede al protocolo IP directamente. .P \fIprotocol\fP representa el protocolo IP en el encabezado IP que se envía o recibe. Valores validos para \fIprotocol\fP serían: .IP \[bu] 3 0 y \fBIPPROTO_TCP\fP para conectores de flujo \fBtcp\fP(7); .IP \[bu] 0 y \fBIPPROTO_UDP\fP para conectores de datagrama \fBudp\fP(7); .IP \[bu] \fBIPPROTO_SCTP\fP para conectores de flujo \fBsctp\fP(7); y .IP \[bu] \fBIPPROTO_UDPLITE\fP para conectores de datagrama \fBudplite\fP(7). .P Para \fBSOCK_RAW\fP puede definir un protocolo IP válido según el IANA tal como se define en el RFC\ 1700. .P Cuando un proceso quiere recibir nuevos paquetes de entrada o conexiones, debe enlazar un conector a una dirección de la interfaz local usando \fBbind\fP(2). Sólo se puede ligar un conector IP a un par (dirección, puerto) dado. Cuando en la llamada a \fBbind\fP se especifica \fBINADDR_ANY\fP, el conector será ligado a \fItodas\fP las interfaces locales. Cuando se llama a \fBconnect\fP(2) con un conector no enlazado, el conector será automáticamente ligado a un puerto aleatorio libre cuya dirección local sea \fBINADDR_ANY\fP. .P Una dirección local de conector TCP que haya sido enlazada, no estará disponible durante un cierto tiempo después de que se cierre, a menos que se haya activado la opción \fBSO_REUSEADDR\fP. Se debe tener cuidado al usar esta opción ya que hace que TCP sea menos fiable. .SS "Formato de las direcciones" Una dirección de conector IP se define como una combinación de una dirección de interfaz IP y un número de puerto 16\-bit. El protocolo IP básico no proporciona números de puerto. Estos son implementados por protocolos de un nivel más alto como \fBudp\fP(7) y \fBtcp\fP(7). En los conectores directos, a \fIsin_port\fP se le asigna el protocolo IP. .P .in +4n .EX struct sockaddr_in { sa_family_t sin_family; /* familia de direcciones: AF_INET */ in_port_t sin_port; /* puerto en el orden de bytes de la red */ struct in_addr sin_addr; /* dirección de internet */ }; \& /* Irección de internet */ struct in_addr { uint32_t s_addr; /* Dirección de red en bytes */ }; .EE .in .P A \fIsin_family\fP siempre se le asigna el valor \fBAF_INET\fP. Este valor es necesario. En Linux 2.2, la mayoría de las funciones de red devuelven \fBEINVAL\fP cuando se ha omitido este valor. \fIsin_port\fP contiene el puerto con los bytes en orden de red. Los números de puerto por debajo de 1024 se llaman \fIpuertos privilegiados\fP (algunas veces \fIpuertos reservados\fP). Sólo los procesos privilegiados o con la capacidad \fBCAP_NET_BIND_SERVICE\fP pueden realizar enlaces mediante \fBbind\fP(2) a estos conectores. Observer que el protocolo IPv4 puro no posee como tal el concepto de puerto. Estos son implementados por protocolos de capas superiores como \fBtcp\fP(7) y \fBudp\fP(7). .P \fIsin_addr\fP es la dirección IP del equipo. El miembro \fIs_addr\fP de \fIstruct in_addr\fP contiene la dirección de la interfaz del equipo con los bytes en orden de red. Sólo se debería acceder a \fBin_addr\fP usando las funciones de biblioteca \fBinet_aton\fP(3), \fBinet_addr\fP(3) y \fBinet_makeaddr\fP(3), o directamente mediante el mecanismo de resolución de nombres (vea \fBgethostbyname\fP(3)). .P .\" Leave a loophole for XTP @) Las direcciones IPv4 se dividen en direcciones unidestino, de difusión y multidestino. Las direcciones unidestino especifican una única interfaz de un anfitrión, las direcciones de difusión especifican todos los anfitriones de una red y las direcciones multidestino identifican a todos los anfitriones de un grupo multidestino. Sólo se pueden enviar datagramas a o recibir datagramas de direcciones de difusión cuando está activa la opción de conector \fBSO_BROADCAST\fP. En la implementación actual, los conectores orientados a conexión sólo pueden usar direcciones unidestino. .P Dese cuenta que la dirección y el puerto se almacenan siempre en orden de red. En particular, esto significa que necesita llamar a \fBhtons\fP(3) con el número que se ha asignado al puerto. Todas las funciones de manipulación de dirección/puerto en la biblioteca estándar trabajan en orden de red. .SS "Direcciones especiales y reservadas" Hay varias direcciones especiales: .TP \fBINADDR_LOOPBACK\fP (127.0.0.1) siempre hace referencia al equipo local a través del dispositivo loopback; .TP \fBINADDR_ANY\fP (0.0.0.0) representa dirección para vinculación de sockets; .TP \fBINADDR_BROADCAST\fP (255.255.255.255) Por razones históricas, tiene el mismo efecto en \fBbind\fP(2) que \fBINADDR_ANY\fP. Un paquete dirigido a \fBINADDR_BROADCAST\fP a través de un socket con \fBSO_BROADCAST\fP configurado se transmitirá a todos los equipos en el segmento de la red local, siempre que el enlace sea apto para esta transmisión. .TP Dirección con el número más alto .TQ Dirección con el número más bajo .\" commit 58fee5fc83658aaacf60246aeab738946a9ba516 En cualquier subred IP conectada localmente no punto a punto con un tipo de enlace que admita transmisiones, la dirección con el número más alto (por ejemplo, la dirección .255 en una subred con máscara de red 255.255.255.0) se designará como dirección de transmisión. No es práctica asignarla a una interfaz individual y solo se podrá direccionar con un socket en el que se haya configurado la opción \fBSO_BROADCAST\fP. Históricamente, los estándares de Internet también han reservado la dirección con el número más bajo (por ejemplo, la dirección .0 en una subred con máscara de red 255.255.255.0) para transmisión, aunque suele considerarse 'obsoleta' para este propósito. Algunas fuentes también se refieren a esto como 'dirección de red'. A partir de la versión 5.14 de Linux , se trata como una dirección de unidifusión ordinaria y se puede asignar a una interfaz. .P Los estándares de Internet tradicionalmente también han reservado varias direcciones para usos particulares, aunque Linux ya no las trata de manera especial. .TP [0.0.0.1, 0.255.255.255] .TQ [240.0.0.0, 255.255.255.254] .\" commit 96125bf9985a75db00496dd2bc9249b777d2b19b .\" commit 1e637c74b0f84eaca02b914c0b8c6f67276e9697 Las direcciones en estos intervalos (0/8 y 240/4) están reservadas globalmente. Desde Linux 5.3 y Linux 2.6.25, respectivamente, las direcciones 0/8 y 240/4, distintas de \fBINADDR_ANY\fP y \fBINADDR_BROADCAST\fP, se tratan como direcciones de unidifusión ordinarias. Estas direcciones se consideraron siempre reservadas y, tradicionalmente, los equipos no pueden interoperar con ellas. .TP [127.0.0.1, 127.255.255.254] Las direcciones en este intervalo (127/8) se tratan como direcciones de loopback similares a la dirección loopback local estandarizada \fBINADDR_LOOPBACK\fP (127.0.0.1); .TP [224.0.0.0, 239.255.255.255] Las direcciones en este rango (224/4) están dedicadas al uso de multidifusión. .SS "Opciones de los conectores" .\" or SOL_IP on Linux IP soporta algunas opciones de conector específicas del protocolo que se pueden configurar con \fBsetsockopt\fP(2) y leer con \fBgetsockopt\fP(2). El nivel de opciones de conector para IP es \fBIPPROTO_IP\fP. Una opción entera booleana es cero cuando es falsa y cualquier otra cosa cuando es cierta. .P Si se define una opción no válida, \fBgetsockopt\fP(2) y \fBsetsockopt\fP(2) emiten el error \fBENOPROTOOPT\fP. .TP \fBIP_ADD_MEMBERSHIP\fP (desde Linux 1.2) Unirse a un grupo multidestino. El argumento es una estructura \fIip_mreqn\fP. .IP .in +4n .EX struct ip_mreqn { struct in_addr imr_multiaddr; /* Dirección IP del grupo multidestino */ struct in_addr imr_address; /* Dirección IP de la interfaz local */ int imr_ifindex; /* Índice de la interfaz */ }; .EE .in .IP .\" (i.e., within the 224.0.0.0-239.255.255.255 range) \fIimr_multiaddr\fP contiene la dirección del grupo multidestino al que la aplicación se quiere unir o quiere dejar (\fBsetsockopt\fP(2) falla con un error \fBEINVAL\fP). Debe ser una dirección multidestino válida. \fIimr_address\fP es la dirección de la interfaz local con la que el sistema debe unirse al grupo multidestino. Si es igual a \fBINADDR_ANY\fP el sistema elige una interfaz adecuada. \fIimr_ifindex\fP es el índice de la interfaz que debe unirse a o dejar el grupo \fIimr_multiaddr\fP, o 0 para indicar cualquier interfaz. .IP La estructura \fIip_mreqn\fP está disponible desde la versión 2.2 de Linux. Para preservar la compatibilidad, la antigua estructura \fIip_mreq\fP (existente desde la versión 1.2) sigue teniendo soporte. Sólo difiere de \fIip_mreqn\fP en que no incluye el campo \fIimr_ifindex\fP. El núcleo identifica qué estructura se está empleando en base al tamaño de \fIoptlen\fP. .IP .\" \fBIP_ADD_MEMBERSHIP\fP sólo es válido para \fBsetsockopt\fP(2). .TP \fBIP_ADD_SOURCE_MEMBERSHIP\fP (desde Linux 2.4.22 hasta Linux 2.5.68) Se une a un grupo multidestino permitiendo recibir datos de una única fuente. El argumento es una estructura \fBip_mreq_source\fP. .IP .in +4n .EX struct ip_mreq_source { struct in_addr imr_multiaddr; /* Dirección IP del grupo de multidifusión struct in_addr imr_interface; /* Dirección IP de la interfaz local */ struct in_addr imr_sourceaddr; /* Dirección IP multidifusión del origen */ }; .EE .in .IP La estructura \fIip_mreq_source\fP es similar a \fIip_mreqn\fP descrita en \fBIP_ADD_MEMBERSHIP\fP. El campo \fIimr_multiaddr\fP contiene la dirección del grupo de multidifusión al que la aplicación se desea unir o abandonar. El campo \fIimr_interface\fP es la dirección de la interfaz local con la que el sistema debe unirse al grupo de multidifusión. Finalmente, el campo \fIimr_sourceaddr\fP contiene la dirección de la fuente de la que la aplicación desea recibir datos. .IP Es posible emplear esta opción varias veces para recibir datos de varias fuentes. .TP \fBIP_BIND_ADDRESS_NO_PORT\fP (desde Linux 4.2) .\" commit 90c337da1524863838658078ec34241f45d8394d Indica al núcleo que no se reserve brevemente un puerto al usar \fBbind\fP(2) con el cero como número de puerto. Dicho puerto se seleccionará posteriormente durante \fBconnect\fP(2) de forma que se puede compartir un puerto origen mientras la tupla de 4 sea única. .TP \fBIP_BLOCK_SOURCE\fP (desde Linux 2.4.22 / 2.5.68) Dejar de recibir datos de multidifusión de una fuente específica en un grupo determinado. Esto es válido solo después de que la aplicación se haya suscrito al grupo de multidifusión utilizando \fBIP_ADD_MEMBERSHIP\fP o \fBIP_ADD_SOURCE_MEMBERSHIP\fP. .IP El argumento es una estructura \fBip_mreq_source\fP tal como se describe en \fIIP_ADD_MEMBERSHIP\fP. .TP \fBIP_DROP_MEMBERSHIP\fP (desde Linux 1.2) Dejar un grupo multidestino. El argumento es una estructura \fIip_mreqn\fP o \fIip_mreq\fP similar a la de \fBIP_ADD_MEMBERSHIP\fP. .TP \fBIP_DROP_SOURCE_MEMBERSHIP\fP (desde Linux 2.4.22 / 2.5.68) Abandona un grupo de fuente específica\[em]es decir, dejar de recibir datos de un grupo de multidifusión determinado que provenga de una fuente concreta. Si la aplicación se ha suscrito a varias fuentes dentro del mismo grupo, se seguirán entregando datos de las fuentes restantes. Para dejar de recibir datos de todas las fuentes a la vez, use \fBIP_DROP_MEMBERSHIP\fP. .IP El argumento es una estructura \fBip_mreq_source\fP tal como se describe en \fIIP_ADD_MEMBERSHIP\fP. .TP \fBIP_FREEBIND\fP (desde Linux 2.4) .\" Precisely: since Linux 2.4.0-test10 Si está habilitada, esta opción booleana permite vincularse a una dirección IP no local o que (todavía) no existe. Esto permite estar a la escucha en un socket, sin necesidad de que la interfaz de red subyacente o la dirección IP dinámica especificada estén activas en el momento en que la aplicación intenta conectarse a ella. Esta opción es la equivalente por socket de la interfaz \fIip_nonlocal_bind\fP \fI/proc\fP que se describe a continuación. .TP \fBIP_HDRINCL\fP (desde Linux 2.0) Cuando está activa, el usuario proporciona una cabecera IP delante de los datos de usuario. Sólo válida para conectores \fBSOCK_RAW\fP; vea \fBraw\fP(7) para más información. Cuando esta opción está activa los valores configurados mediante \fBIP_OPTIONS\fP, \fBIP_TTL\fP y \fBIP_TOS\fP se ignoran. .TP \fBIP_LOCAL_PORT_RANGE\fP (desde Linux 6.31) Establezca u obtenga el rango de puertos locales predeterminado por socket. Esta opción se puede utilizar para limitar el intervalo de puertos locales globales, definido por la interfaz \fIip_local_port_range\fP \fI/proc\fP descrita a continuación, para un socket determinado. .IP La opción toma un valor \fIuint32_t\fP con los 16 bits superiores establecidos en el límite superior del intervalo y los 16 bits inferiores establecidos en el límite inferior. Los límites de intervalo son inclusivos. Los valores de 16 bits deben estar en orden de bytes del equipo. .IP El límite inferior tiene que ser menor que el límite superior cuando ambos límites son distintos de cero. De lo contrario, la configuración de la opción falla con EINVAL. .IP Si alguno de los límites está fuera del intervalo de puertos locales globales o es cero, no tendrá efecto. .IP Para resetear la configuración, defina los límites superior e inferior a cero. .TP \fBIP_MSFILTER\fP (desde Linux 2.4.22 / 2.5.68) Esta opción proporciona acceso a la API de filtrado avanzado de estado. El argumento es una estructura \fIip_msfilter\fP. .IP .in +4n .EX struct ip_msfilter { struct in_addr imsf_multiaddr; /* Dirección IP del grupo multidestino */ struct in_addr imsf_interface; /* Dirección IP de la interfaz local */ uint32_t imsf_fmode; /* Modo de filtrado */ \& uint32_t imsf_numsrc; /* Cantidad de fuentes en el siguiente vector */ struct in_addr imsf_slist[1]; /* Vector de direcciones de fuente */ }; .EE .in .IP Hay dos macros, \fBMCAST_INCLUDE\fP y \fBMCAST_EXCLUDE\fP, que se pueden utilizar para especificar el modo de filtrado. Además, la macro \fBIP_MSFILTER_SIZE\fP(n) existe para determinar cuánta memoria se necesita para almacenar la estructura \fIip_msfilter\fP con \fIn\fP fuentes en la lista de fuentes. .IP Para completa descripción del filtrado de fuentes de multidifusión, consulte el RFC 3376. .TP \fBIP_MTU\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.124 Obtiene la MTU de la ruta conocida actualmente para el conector actual. Devuelve un entero. .IP \fBIP_MTU\fP sólo es válido para \fBgetsockopt\fP(2) y sólo puede emplearse cuando el conector se ha conectado. .TP \fBIP_MTU_DISCOVER\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.124 Establece o recibe la configuración del descubrimiento de la MTU de la rutapara el conector. Cuando se activa, Linux realizará el descubrimiento de la MTU de la ruta en este conector tal y como se define en RFC\ 1191 para los conectores \fBSOCK_STREAM\fP. Para los conectores \fBSOCK_STREAM\fP, \fBIP_PMTUDISC_DO\fP fuerza la opción de no fragmentar en todos los datagramas de salida. Es responsabilidad del usuario enpaquetar los datos en fragmentos de tamaño MTU y realizar la retransmisión si es necesario. El núcleo rechazará aquellos paquetes que sean más grandes que la MTU de ruta conocida si esta opción está activa (con \fBEMSGSIZE\fP). \fBIP_PMTUDISC_WANT\fP fragmentará un datagrama si necesario, en base al MTU, o activará la opción de no fragmentar. .IP El valor predeterminado en todo el sistema se puede alternar entre \fBIP_PMTUDISC_WANT\fP y \fBIP_PMTUDISC_DONT\fP escribiendo (respectivamente, cero y distintos de cero) en el archivo \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP. .TS tab(:); c l l l. Opciones del descubrimiento del MTU de la ruta:Significado IP_PMTUDISC_WANT:Usar configuraciones por ruta. IP_PMTUDISC_DONT:Nunca realizar el descubrimiento de la MTU de la ruta. IP_PMTUDISC_DO:Realizar siempre el descubrimiento de la MTU de la ruta. IP_PMTUDISC_PROBE:Define DF pero ignora el MTU de la ruta. .TE .IP Cuando se activa el descubrimiento de la MTU de la ruta, el núcleo automáticamente memoriza la MTU de la ruta por anfitrión de destino. Cuando se está conectado a un extremo específico mediante \fBconnect\fP(2), se puede obtener convenientemente la MTU de la ruta conocida actualmente usando la opción de conector \fBIP_MTU\fP (por ejemplo, después de que haya ocurrido un error \fBEMSGSIZE\fP). La MTU puede cambiar con el tiempo. Para conectores no orientados a conexión con muchos destinos, también se puede acceder a la nueva MTU usando la cola de errores (vea \fBIP_RECVERR\fP). Se encolará un nuevo error para cada actualización que llegue de la MTU. .IP Mientras se está realizando el descubrimiento de la MTU, se pueden perder paquetes iniciales de los conectores de datagramas. Las aplicaciones que usan UDP deben se conscientes de esto y no tenerlo en cuenta para sus estrategias de retransmisión de paquetes. .IP Para iniciar el proceso de descubrimiento de la MTU de la ruta en conectores no orientados a conexión, es posible comenzar con un tamaño grande de datagramas (con longitudes de bytes de hasta 64KB en las cabeceras) y dejar que se reduzca mediante actualizaciones de la MTU de la ruta. .IP Para obtener una estimación inicial de la MTU de la ruta, conecte un conector de datagramas a una dirección de destino usando \fBconnect\fP(2) y obtenga la MTU llamando a \fBgetsockopt\fP(2) con la opción \fBIP_MTU\fP. .IP Es posible implementar el sondeo MTU RFC 4821 con sockets \fBSOCK_DGRAM\fP o \fBSOCK_RAW\fP estableciendo un valor de \fBIP_PMTUDISC_PROBE\fP (disponible desde Linux 2.6.22). Esto también es particularmente útil para herramientas de diagnóstico como \fBtracepath\fP(8) que envían deliberadamente paquetes de sondeo más grandes que la MTU de ruta observada. .TP \fBIP_MULTICAST_ALL\fP (desde Linux 2.6.31) Esta opción se puede utilizar para modificar la normativa de entrega de mensajes de multidifusión. El argumento es un número entero booleano (el valor predeterminado es 1). Si se establece en 1, el socket recibirá mensajes de todos los grupos que se hayan unido globalmente en todo el sistema, sino entregará mensajes solo de los grupos a los que se haya unido explícitamente (por ejemplo, mediante la opción \fBIP_ADD_MEMBERSHIP\fP) en este socket en particular. .TP \fBIP_MULTICAST_IF\fP (desde Linux 1.2) .\" net: IP_MULTICAST_IF setsockopt now recognizes struct mreq .\" Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7 Configura el dispositivo local para un socket de multidifusión. El argumento para \fBsetsockopt\fP(2) es una estructura \fIip_mreqn\fP o (desde Linux 3.5) \fIip_mreq\fP similar a \fBIP_ADD_MEMBERSHIP\fP, o una estructura \fIin_addr\fP. El núcleo determinará qué estructura se pasa según el tamaño pasado en \fIoptlen\fP.) Para \fBgetsockopt\fP(2), el argumento es una estructura \fIin_addr\fP. .TP \fBIP_MULTICAST_LOOP\fP (desde Linux 1.2) Establece o lee un argumento entero booleano que indica si los paquetes multidestino enviados deben o no ser devueltos a los conectores locales. .TP \fBIP_MULTICAST_TTL\fP (desde Linux 1.2) Establece o lee el valor "tiempo de vida" (time\-to\-live, TTL) de los paquetes multidestino de salida para este conector. Es muy importante para los paquetes multidestino utilizar el TTL más pequeño posible. El valor por defecto es 1 lo que significa que los paquetes multidestino no abandonarán la red local a menos que el programa de usuario lo solicite explícitamente. El argumento es un entero. .TP \fBIP_NODEFRAG\fP (desde Linux 2.6.36) si está activo (el argumento es distinto de cero), el reensamblado de los paquetes salientes está desactivado en la capa de netfilter. El argumento es un número entero. .IP Esta opción sólo es válida para los conectores \fBSOCK_RAW\fP .TP \fBIP_OPTIONS\fP (desde Linux 2.0) .\" Precisely: since Linux 1.3.30 Establece u obtiene las opciones IP a enviar con cada paquete desde este conector. Los argumentos son punteros a un buffer de memoria que contiene las opciones y la longitud de las opciones. La llamada \fBsetsockopt\fP(2) establece las opciones IP asociadas a un conector. El tamaño máximo de opción para IPv4 es de 40 bytes. Vea RFC\ 791 para las opciones permitidas. Cuando el paquete inicial de petición de conexión para un conector \fBSOCK_STREAM\fP contiene opciones IP, las opciones IP se configurarán automáticamente al valor de las opciónes del paquete inicial con las cabeceras de enrutamiento invertidas. No se permite que los paquetes de entrada cambien las opciones después de que la conexión se haya establecido. El procesamiento de todas las opciones de enrutamiento de la fuente de entrada está desactivado por defecto y se puede activar mediante la interfaz en \fI/proc\fP \fBaccept_source_route\fP. Otras opciones, como las marcas de tiempo, todavía se siguen manejando. Para los conectores de datagramas, las opciones IP sólo pueden ser configuradas por el usuario local. Llamar a \fBgetsockopt\fP(2) con \fIIP_OPTIONS\fP coloca en el buffer proporcionado las opciones IP actuales usadas para enviar. .TP \fBIP_PASSSEC\fP (desde Linux 2.6.17) .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c Si se configura IPSEC o NetLabel con etiqueta en los equipos de envío y recepción, esta opción permite recibir el contexto de seguridad del socket del mismo nivel en un mensaje auxiliar de tipo \fBSCM_SECURITY\fP recuperado mediante \fBrecvmsg\fP(2). Esta opción sólo se admite para sockets UDP; para sockets TCP o SCTP, consulte la descripción de la opción \fBSO_PEERSEC\fP a continuación. .IP El valor dado como argumento para \fBsetsockopt\fP(2) y devuelto como resultado de \fBgetsockopt\fP(2) es un indicador booleano entero. .IP El contexto de seguridad devuelto en el mensaje auxiliar \fBSCM_SECURITY\fP tiene el mismo formato que el que se describe a continuación en la opción \fBSO_PEERSEC\fP. .IP Obervación: seguramente haya sido un error la reutilización del tipo de mensaje \fBSCM_SECURITY\fP para la opción de socket \fBIP_PASSSEC\fP. Otros mensajes de control de IP usan su propio esquema de numeración en el espacio de nombres de IP y a menudo usan el valor de la opción de socket como tipo de mensaje. Actualmente no hay ningún conflicto ya que la opción IP con el mismo valor que \fBSCM_SECURITY\fP es \fBIP_HDRINCL\fP y nunca se usa para un tipo de mensaje de control. .TP \fBIP_PKTINFO\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.68 Pasa un mensaje auxiliar \fBIP_PKTINFO\fP que contiene una estructura \fIpktinfo\fP que proporciona alguna información sobre los paquetes de entrada. Esto sólo funciona para conectores orientados a datagramas. El argumento es un indicador que le dice al conector si debería pasar el mensaje \fBIP_PKTINFO\fP. El mensaje en sí mismo sólo puede ser enviado/obtenido como un mensaje de control con un paquete usando \fBrecvmsg\fP(2) o \fBsendmsg\fP(2). .IP .in +4n .EX struct in_pktinfo { unsigned int ipi_ifindex; /* Índice de la interfaz */ struct in_addr ipi_spec_dst; /* Dirección local */ struct in_addr ipi_addr; /* Dirección de destino en la cabecera */ }; .EE .in .IP .\" This field is grossly misnamed \fIipi_ifindex\fP es el índice único de la interfaz en la que se recibió el paquete. \fIipi_spec_dst\fP es la dirección local del paquete y \fIipi_addr\fP es la dirección de destino en el encabezado del paquete. Si \fBIP_PKTINFO\fP se pasa a \fBsendmsg\fP(2) y \fIipi_spec_dst\fP no es cero, entonces se utiliza como dirección de origen local para la búsqueda de la tabla de enrutamiento y para configurar las opciones de ruta de origen IP. Cuando \fIipi_ifindex\fP no es cero, la dirección local principal de la interfaz especificada por el índice sobrescribe \fIipi_spec_dst\fP para la búsqueda de la tabla de enrutamiento. .IP No compatible con sockets \fBSOCK_STREAM\fP. .TP \fBIP_RECVERR\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.15 .\" or SOL_IP on Linux Habilita el paso adicional fiable de mensajes de error. Cuando se activa en un conector de datagramas todos los errores generados se encolarán en una cola de errores por conector. Cuando el usuario recibe un errore procedente de una operación con un conector, se pueden recibir el errore llamando a \fBrecvmsg\fP(2) con la opción \fBMSG_ERRQUEUE\fP activa. La estructura \fIsock_extended_err\fP que describe el error se pasará en un mensaje auxiliar con el tipo \fBIP_RECVERR\fP y el nivel \fBIPPROTO_IP\fP. Esto es útil para el manejo fiable de errores en conectores no conectados. La parte de datos recibida de la cola de errores contiene el paquete de error. .IP El mensaje de control \fBIP_RECVERR\fP contiene una estructura \fIsock_extended_err\fP: .IP .in +4n .EX #define SO_EE_ORIGIN_NONE 0 #define SO_EE_ORIGIN_LOCAL 1 #define SO_EE_ORIGIN_ICMP 2 #define SO_EE_ORIGIN_ICMP6 3 \& struct sock_extended_err { uint32_t ee_errno; /* número de error */ uint8_t ee_origin; /* dónde sucedió */ uint8_t ee_type; /* tipo */ uint8_t ee_code; /* código */ uint8_t ee_pad; uint32_t ee_info; /* información adicional */ uint32_t ee_data; /* otros datos */ /* Puede haber más info a continuación */ }; \& struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *); .EE .in .IP \fIee_errno\fP contiene el número de \fIerrno\fP del error puesto en cola. \fIee_origin\fP es el código de origen que identifica al origen del error. Los otros campos son específicos del protocolo. La macro \fBSO_EE_OFFENDER\fP devuelve un puntero a la dirección del objeto de red dónde se originó el error dado un puntero al mensaje auxiliar. Si la dirección no es conocida, el miembro \fIsa_family\fP de \fIsockaddr\fP valdrá \fBAF_UNSPEC\fP y los otros campos de \fIsockaddr\fP serán indefinidos. .IP .\" FIXME . Is it a good idea to document that? It is a dubious feature. .\" On .\" .B SOCK_STREAM .\" sockets, .\" .B IP_RECVERR .\" has slightly different semantics. Instead of .\" saving the errors for the next timeout, it passes all incoming .\" errors immediately to the user. .\" This might be useful for very short-lived TCP connections which .\" need fast error handling. Use this option with care: .\" it makes TCP unreliable .\" by not allowing it to recover properly from routing .\" shifts and other normal .\" conditions and breaks the protocol specification. IP usa la estructura \fBsock_extended_err\fP como sigue: a \fIee_origin\fP se le asigna el valor \fBSO_EE_ORIGIN_ICMP\fP para errores recibidos en un paquete ICMP o \fBSO_EE_ORIGIN_LOCAL\fP para errores generados localmente. Los valores desconocidos deben ser ignorados. A \fIee_type\fP y \fIee_code\fP se les asignan los campos tipo y código de la cabecera ICMP. \fIee_info\fP contiene la MTU descubierta para errores \fBEMSGSIZE\fP. El mensaje contiene también la estructura \fIsockaddr_in\fP del nodo que provocó el error, a la cual se puede acceder con la macro \fBSO_EE_OFFENDER\fP. El campo \fIsin_family\fP de la dirección devuelta por SO_EE_OFFENDER valdrá \fIAF_UNSPEC\fP cuando la fuente sea desconocida. Cuando el error se originó en la red, todas las opciones IP(\fIIP_OPTIONS\fP, \fIIP_TTL\fP etc.) activas en el conector y contenidas en el paquete de error, se pasan como mensajes de control. El contenido útil del paquete que ha provocado el error se devuelve como datos normales. Observe que TCP no posee una cola de errores. \fBMSG_ERRQUEUE\fP es ilegal en conectores \fBSOCK_STREAM\fP. \fIIP_RECERR\fP sí es válido en TCP pero todos los errores son devueltos únicamente mediante funciones de conector o a través de \fBSO_ERROR\fP. .IP Para conectores directos (raw), \fBIP_RECVERR\fP activa el paso de todos los errores ICMP recibidos a la aplicación. En cualquier otro caso, sólo se informa de los errores que se producen en conectores conectados. .IP Esta opción establece u obtiene un valor booleano entero. Por defecto, \fBIP_RECVERR\fP está desactivada. .TP \fBIP_RECVOPTS\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.15 Pasa todas las opciones IP de entrada al usuario en un mensaje de control \fBIP_OPTIONS\fP. La cabecera de enrutamiento y otras opciones ya las completa el anfitrión local. No soportada para conectores \fBSOCK_STREAM\fP. .TP \fBIP_RECVORIGDSTADDR\fP (desde Linux 2.6.29) .\" commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69 Esta opción booleana habilita el mensaje auxiliar \fBIP_ORIGDSTADDR\fP en \fBrecvmsg\fP(2), en el que el núcleo retorna la dirección de destino original del datagrama que se recibe. El mensaje auxiliar contiene una \fIstruct sockaddr_in\fP. No es compatible con sockets \fBSOCK_STREAM\fP. .TP \fBIP_RECVTOS\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.68 Si está habilitado, el mensaje auxiliar \fBIP_TOS\fP se pasa con los paquetes entrantes. Contiene un byte que especifica el campo Tipo de servicio/precedencia del encabezado del paquete. Espera un indicador de número entero booleano. No es compatible con sockets \fBSOCK_STREAM\fP. .TP \fBIP_RECVTTL\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.68 Cuando esta opción está activa, pasa un mensaje de control \fIIP_TTL\fP con el campo "tiempo de vida" (time to live) del paquete recibido en forma de entero de 32 bits. Los conectores \fBSOCK_STREAM\fP no lo implementan. .TP \fBIP_RETOPTS\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.15 Idéntico a \fBIP_RECVOPTS\fP, pero devuelve opciones sin procesar con opciones de marca temporal y registro de ruta no completadas para este tránsito. No compatible con sockets \fBSOCK_STREAM\fP. .TP \fBIP_ROUTER_ALERT\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.68 Pasar a este conector todos los paquetes a reenviar que tengan activa la opción alarma del enrutador IP (IP Router Alert). Sólo válida para conectores directos. Esto es útil, por ejemplo, para demonios RSVP en el espacio de usuario. Los paquetes interceptados no son reenviados por el núcleo, es responsabilidad de los usuarios envilarlos de nuevo. Se ignora el enlace del conector, tales paquetes sólo son filtrados por el protocolo. Espera una opción entera. .TP \fBIP_TOS\fP (desde Linux 1.0) .\" FIXME elaborate on this .\" The priority can also be set in a protocol-independent way by the .\" .RB ( SOL_SOCKET ", " SO_PRIORITY ) .\" socket option (see .\" .BR socket (7)). Establece o devuelve el campo Tipo de Servicio (Type\-Of\-Service, TOS) a enviar con cada paquete IP creado desde este conector. Se usa para priorizar los paquetes en la red. TOS es un byte. Existen algunas opciones TOS estándares definidas: \fBIPTOS_LOWDELAY\fP para minizar los retrasos en el caso de tráfico interactivo, \fBIPTOS_THROUGHPUT\fP para optimizar el rendimiento, \fBIPTOS_RELIABILITY\fP para optimizar la fiabilidad e \fBIPTOS_MINCOST\fP, que se debería usar para "datos de relleno" donde no tenga sentido una transmisión lenta. Como mucho, se puede especificar uno de estos valores TOS. Los otros bits son inválidos y se limpiarán. Por defecto, Linux envía primero datagramas \fBIPTOS_LOWDELAY\fP pero el comportamiento exacto depende de la configuración de la cola. Algunos niveles de prioridad alta pueden necesitar privilegios de administrador (consulte la capacidad \fBCAP_NET_ADMIN\fP. .TP \fBIP_TRANSPARENT\fP (desde Linux 2.6.24) .\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e .\" This patch introduces the IP_TRANSPARENT socket option: enabling that .\" will make the IPv4 routing omit the non-local source address check on .\" output. Setting IP_TRANSPARENT requires NET_ADMIN capability. .\" http://lwn.net/Articles/252545/ Establecer esta opción booleana permite el proxy transparente en este socket. Esta opción de socket permite que la aplicación que realiza la llamada se vincule a una dirección IP no local y funcione como cliente y servidor con la dirección externa como punto final local. OBSERVACIÓN: esto requiere que el enrutamiento se configure de manera que los paquetes que van a la dirección externa se enruten a través del cuadro TProxy (es decir, el sistema que aloja la aplicación que emplea la opción de socket \fBIP_TRANSPARENT\fP). Habilitar esta opción de socket requiere privilegios de administrador (la capacidad \fBCAP_NET_ADMIN\fP). .IP La redirección de TProxy con el destino TPROXY de iptables también requiere que esta opción esté configurada en el socket redirigido. .TP \fBIP_TTL\fP (desde Linux 1.0) Establece u obtiene el campo "tiempo de vida" actual que se envía en cada paquete enviado desde este conector. .TP \fBIP_UNBLOCK_SOURCE\fP (desde Linux 2.4.22 / 2.5.68) Desbloquea fuentes multidifusión bloqueadas con anterioridad. Devuelve \fBEADDRNOTAVAIL\fP cuando no se está bloqueando la fuente. .IP El argumento es una estructura \fBip_mreq_source\fP tal como se describe en \fIIP_ADD_MEMBERSHIP\fP. .TP \fBSO_PEERSEC\fP (desde Linux 2.6.17) Si IPSEC o NetLabel están configurados en los equipos de envío y recepción, esta opción de socket de solo lectura devuelve el contexto de seguridad del socket del mismo nivel conectado a él. Por defecto, será el mismo que el contexto de seguridad del proceso que creó el socket del mismo nivel, salvo que sea anulado por normativa o por un proceso con los permisos necesarios. .IP El argumento de \fBgetsockopt\fP(2) es un puntero a un búfer de la longitud especificada en bytes en el que se copiará la cadena contextual de seguridad. Si la longitud del búfer es menor que la longitud de la cadena de contexto de seguridad, entonces \fBgetsockopt\fP(2) devuelve \-1, establece \fIerrno\fP en \fBERANGE\fP y devuelve la longitud requerida mediante \fIoptlen\fP. El invocante debe asignar al menos \fBNAME_MAX\fP bytes para el búfer inicialmente, aunque no se garantiza que esto sea suficiente. Es posible que sea necesario cambiar el tamaño del búfer a la longitud devuelta y volver a intentarlo. .IP La cadena contextual de seguridad puede incluir un carácter nulo de terminación en la longitud devuelta, pero no se garantiza que así sea: un contexto de seguridad 'foo'podría representarse como {'f','o','o'} de longitud 3 o {'f','o','o','\e0'} de longitud 4, que se consideran intercambiables. La cadena es imprimible, no contiene caracteres nulos no terminantes y tiene una codificación no especificada (no se garantiza que sea ASCII o UTF\-8). .IP .\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c .\" commit d452930fd3b9031e59abfeddb2fa383f1403d61a El empleo de esta opción para conectores de la familia \fBAF_INET\fP está implementado desde la versión 2.6.17 para conectores TCP y desde la 4.17 para los SCTP. .IP .\" Para SELinux, NetLabel transmite solo la parte MLS del contexto de seguridad a través del cable, y establece de forma predeterminada el resto del contexto de seguridad en los valores definidos en la normativa para el identificador de seguridad inicial (SID) de netmsg. Sin embargo, NetLabel se puede configurar para pasar contextos de seguridad completos a través de loopback. IPSEC siempre pasa contextos de seguridad completos como parte del establecimiento de la asociación de seguridad (SA) y los busca en función de la asociación para cada paquete. .SS "Interfaces /proc" .\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented: .\" ip_queue_maxlen .\" ip_conntrack_max .\" El protocolo IP admite un conjunto de interfaces \fI/proc\fP para configurar algunos parámetros globales. Se puede acceder a los parámetros leyendo o escribiendo archivos en el directorio \fI/proc/sys/net/ipv4/\fP. Las interfaces descritas como \fIBoolean\fP toman un valor entero, con un valor distinto de cero ('true') que significa que la opción correspondiente está habilitada y un valor cero ('false') que significa que la opción está deshabilitada. .TP \fIip_always_defrag\fP (Booleano; desde Linux 2.2.13) [Nueva con la versión 2.2.13 del núcleo. En anteriores versiones del núcleo esta característica se activaba durante la compilación del núcleo mediante la opción \fBCONFIG_IP_ALWAYS_DEFRAG\fP] que ya no está presente en versiones 2.4.x y posteriores. .IP Cuanda esta opción booleana se habilita (es distinta de 0) los fragmentos de entrada (partes de paquetes IP que aparecen cuando algún anfitrión entre el origen y el destino decidió que los paquetes eran demasiado grandes y los dividió en pedazos) se reensamblarán (desfragmentarán) antes de ser procesados, incluso aunque vayan a ser reenviados. .IP Habilítelo sólo cuando tenga en funcionamiento un cortafuegos que sea el único enlace de su red o un proxy transparente. Nunca lo active para un router o un equipo. Podría perturbarse la comunicación fragmentada cuando los fragmentos viajen a través de diferentes enlaces. La desfragmentación también tiene un alto coste de tiempo de CPU y de memoria. .IP .\" Esto se activa 'automágicamente' cuando se configura un enmascaramiento o un proxy transparente. .TP \fIip_autoconfig\fP (desde Linux 2.2 hasta Linux 2.6.17) .\" Precisely: since Linux 2.1.68 .\" FIXME document ip_autoconfig .\" No documentado. .TP \fIip_default_ttl\fP (entero; por defecto: 64; a partir de la versión 2.2) .\" Precisely: since Linux 2.1.15 .\" Establece el valor "tiempo de vida" (TTL) por defecto de los paquetes de salida. Éste se puede cambiar para cada conector con la opción \fBIP_TTL\fP. .TP \fIip_dynaddr\fP (Booleano; por defecto: deshabilitado; a partir de Linux 2.0.31) .\" Activa la reescritura dinámica de la dirección del conector y de las entradas de enmascaramiento (masquerading) para cuando cambie la dirección de la interfaz. Esto es útil para interfaces dialup (como las telefónicas) con direcciones IP cambiantes. 0 significa no reescritura, 1 la activa y 2 activa el modo verboso. .TP \fIip_forward\fP (Booleano; por defecto: dehabilitado; a partir de la versión 1.2) .\" Activa el reenvío IP con una opción booleana. También se puede configurar el reenvío IP interfaz a interfaz. .TP \fIip_local_port_range\fP (desde Linux 2.2) .\" Precisely: since Linux 2.1.68 Este archivo contiene dos números enteros que definen el intervalo de puertos locales predeterminado asignado a sockets que no están vinculados explícitamente a un número de puerto\[em]es decir, el intervalo utilizado para \fIpuertos efímeros\fP. Se asignará un puerto efímero a un socket en las siguientes circunstancias: .RS .IP \[bu] 3 el número de puerto aparece como 0 en una dirección de conector al invocar \fBbind\fP(2); .IP \[bu] se invoca \fBlisten\fP(2) en un conector de flujo sin enlzar previamente; .IP \[bu] Se ha invocado \fBconnect\fP(2) en un conector no conectado previamente. .IP \[bu] se invoca \fBsendto\fP(2) en un conector de datagrama no conectado previamente. .RE .IP La asignación de puertos efímeros comienza con el primer número en \fIip_local_port_range\fP y termina con el segundo número. Si se agota el intervalo de puertos efímeros, la llamada al sistema correspondiente devuelve un error (pero consulte ERRORES). .IP .\" Debe tenerse en cuenta que el intervalo de puertos en \fIip_local_port_range\fP no debe entrar en conflicto con los puertos utilizados por el enmascaramiento (aunque a veces se maneje). Además, las elecciones arbitrarias pueden causar problemas con filtros de paquetes del firewall que hacen suposiciones sobre los puertos locales en uso. El primer número debería ser al menos mayor que 1024, o mejor, mayor que 4096, para evitar conflictos con puertos conocidos y minimizar los problemas del firewall. .TP \fIip_no_pmtu_disc\fP (booleano; predeterminado: deshabilitado; desde Linux 2.2) .\" Precisely: 2.1.15 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Si está activa, por defecto no realiza el descubrimiento de la MTU de la ruta para los conectores TCP. El descubrimiento de la MTU de la ruta puede fallar si se encuentran en la ruta cortafuegos mal configurados (como los que pierden todos los paquetes ICMP) o interfaces mal configuradas (por ejemplo, un enlace punto a punto en donde ambos extremos no se ponen de acuerdo en la MTU). Es mejor arreglar los enrutadores defectuosos de la ruta que desactivar globalmente el descubrimiento de la MTU de la ruta ya que el no realizarlo incurre en un alto coste para la red. .TP \fIip_nonlocal_bind\fP (booleano; predeterminado: deshabilitado; desde Linux 2.4) .\" Precisely: patch-2.4.0-test10 .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Si se establece, permite que los procesos \fBbind\fP(2) (se enlacen) a direcciones IP no locales, lo que puede ser bastante útil, pero puede dañar algunas aplicaciones. .TP \fIip6frag_time\fP (entero; predeterminado: 30) .\" .\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt Tiempo en segundos para mantener un fragmento de IPv6 en memoria. .TP \fIip6frag_secret_interval\fP (entero; predeterminado: 600) Intervalo de regeneración (en segundos) del secreto hash (o vida útil del secreto hash) para fragmentos de IPv6. .TP \fIipfrag_high_thresh\fP (entero) .TQ \fIipfrag_low_thresh\fP (entero) Si el número de fragmentos IP encolados alcanza el valor \fIipfrag_high_thresh\fP, la cola se recorta al valor \fIipfrag_low_thresh\fP. Contiene un entero con el número de bytes. .TP \fIneigh/*\fP .\" FIXME Document the conf/*/* interfaces .\" .\" FIXME Document the route/* interfaces Vea \fBarp\fP(7). .SS Ioctls Todas las ioctls descritas en \fBsocket\fP(7) se aplican a \fBip\fP. .P .\" FIXME Add a discussion of multicasting Las ioctls para configurar los parámetros de los dispositivos genéricos se describen en \fBnetdevice\fP(7). .SH ERRORES .\" FIXME document all errors. .\" We should really fix the kernels to give more uniform .\" error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.) .TP \fBEACCES\fP El usuario intentó ejecutar una operación sin los permisos necesarios. Estos incluyen: enviar un paquete a una dirección de transmisión sin tener configurado el indicador \fBSO_BROADCAST\fP; enviar un paquete a través de una ruta \fIprohibida\fP; modificar la configuración del firewall sin privilegios de administrador (la capacidad \fBCAP_NET_ADMIN\fP); enlazar a un puerto privilegiado sin privilegios de administrador (la capacidad \fBCAP_NET_BIND_SERVICE\fP). .TP \fBEADDRINUSE\fP Se ha intentado el enlace a una dirección ya en uso. .TP \fBEADDRNOTAVAIL\fP Se ha solicitado una interfaz inexistente o la dirección fuente solicitada no es local. .TP \fBEAGAIN\fP La operación se bloquearía sobre un conector bloqueante. .TP \fBEALREADY\fP Ya se está realizando una operación de conexión sobre un conector no bloqueante. .TP \fBECONNABORTED\fP Se ha cerrado la conexión durante un \fBaccept\fP(2). .TP \fBEHOSTUNREACH\fP Ninguna entrada válida de la tabla de enrutamiento coincide con la dirección de destino. Este error puede ser provocado por un mensaje ICMP procedente de un enrutador remoto o por la tabla local de enrutamiento. .TP \fBEINVAL\fP Se ha pasado un argumento inválido. Para las operaciones de envío, éste se puede producir al enviar a una ruta \fIblackhole\fP. .TP \fBEISCONN\fP Se ha llamado a \fBconnect\fP(2) sobre un conector ya conectado. .TP \fBEMSGSIZE\fP El datagrama es mayor que una MTU de la ruta y no puede ser fragmentado. .TP \fBENOBUFS\fP .TQ \fBENOMEM\fP No hay suficiente memoria libre. Esto a menudo significa que la reserva de memoria está limitada por los límites del búfer de conectores, no por la memoria del sistema, aunque esto no es coherente al 100%. .TP \fBENOENT\fP Se ha llamado a \fBSIOCGSTAMP\fP sobre un conector en donde no han llegado paquetes. .TP \fBENOPKG\fP No se ha configurado un subsistema del núcleo. .TP \fBENOPROTOOPT\fP y \fBEOPNOTSUPP\fP Se han pasado opciones de conector inválidas. .TP \fBENOTCONN\fP La operación solo está definida en un conector conectado pero el conector no está conectado. .TP \fBEPERM\fP El usuario no tiene permiso para establecer una prioridad alta, cambiar la configuración o enviar señales al proceso o grupo solicitado. .TP \fBEPIPE\fP La conexión ha sido cerrada o cancelada por el otro extremo. .TP \fBESOCKTNOSUPPORT\fP El conector no está configurado o se ha solicitado un tipo de conector desconocido. .P Los protocolos superpuestos pueden generar otros errores. Vea \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7) y \fBsocket\fP(7). .SH NOTAS .\" IP_XFRM_POLICY is Linux-specific .\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs \fBIP_FREEBIND\fP, \fBIP_MSFILTER\fP, \fBIP_MTU\fP, \fBIP_MTU_DISCOVER\fP, \fBIP_RECVORIGDSTADDR\fP, \fBIP_PASSSEC\fP, \fBIP_PKTINFO\fP, \fBIP_RECVERR\fP, \fBIP_ROUTER_ALERT\fP y \fBIP_TRANSPARENT\fP son específicas de Linux. .P Debe tenerse especial precaución con la opción \fBSO_BROADCAST\fP: no tiene privilegios en Linux y es fácil sobrecargar la red con transmisiones descuidadas. Para nuevos protocolos de aplicación, es preferible utilizar un grupo de multidifusión en lugar de transmisión. Se desaconseja la radiodifusión. Consulte RFC 6762 para ver un ejemplo de un protocolo (mDNS) que utiliza el enfoque de multidifusión más moderno para comunicarse con un grupo abierto de hosts en la red local. .P Otras implementaciones de conectores BSD proporcionan las opciones de conector \fBIP_RCVDSTADDR\fP y \fBIP_RECVIF\fP para obtener la dirección de destino y la interfaz de los datagramas recibidos. Linux posee la opción más general \fBIP_PKTINFO\fP para la misma tarea. .P Algunas implementaciones de conectores de BSD también proporcionan una opción \fBIP_RECVTTL\fP, pasando un mensaje auxiliar con el tipo \fBIP_RECVTTL\fP en el paquete entrante. Esta opción es diferente de \fBIP_TTL\fP empleada en Linux. .P El empleo de la opción de nivel \fBSOL_IP\fP en conectores no es portable. Las pilas basadas en BSD emplean el nivel \fBIPPROTO_IP\fP .P \fBINADDR_ANY\fP (0.0.0.0) y \fBINADDR_BROADCAST\fP (255.255.255.255) son neutrales en el orden de bytes. Esto hace que \fBhtonl\fP(3) no tenga ningún efecto sobre ellos. .SS Compatibilidad Por compatibilidad con Linux 2.0, todavía se soporta la sintáxis obsoleta \fBsocket(AF_INET, SOCK_PACKET, \fP\fIprotocol\fP\fB)\fP para abrir un conector de paquetes (\fBpacket\fP(7)). Se recomienda no usar esta sintaxis y debería reemplazarse por \fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotocol\fP\fB)\fP. La principal diferencia es la nueva estructura de direcciones \fIsockaddr_ll\fP para la información genérica de la capa de enlace en lugar de la antigua \fBsockaddr_pkt\fP. .SH ERRORES Hay demasiados valores de error inconsistentes. .P El error utilizado para diagnosticar el agotamiento del intervalo de puertos efímeros difiere entre las distintas llamadas al sistema que pueden asignar puertos efímeros (\fBconnect\fP(2), \fBbind\fP(2), \fBlisten\fP(2), \fBsendto\fP(2). .P .\" .P .\" Some versions of glibc forget to declare .\" .IR in_pktinfo . .\" Workaround currently is to copy it into your program from this man page. No se han descrito las ioctls para configurar las opciones de interfaz específicas de IP y las tablas ARP. .P .\" .SH AUTHORS .\" This man page was written by Andi Kleen. Recibir la dirección de destino original con \fBMSG_ERRQUEUE\fP en \fImsg_name\fP mediante \fBrecvmsg\fP(2) no funciona en algunos núcleos de Linux 2.2. .SH "VÉASE TAMBIÉN" \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBcapabilities\fP(7), \fBicmp\fP(7), \fBipv6\fP(7), \fBnetdevice\fP(7), \fBnetlink\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBip\fP(8) .P Documentación del código fuente del núcleo \fIDocumentation/networking/ip\-sysctl.txt\fP. .P RFC\ 791 para la especificación IP original. RFC\1122 para los requerimientos IPv4 para lo anfitriones. RFC\ 1812 para los requeremientos IPv4 para los enrutadores. .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan Piernas , Miguel Pérez Ibars y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .