Provided by: manpages-es_4.27.0-1_all bug

NOMBRE

       netdevice - acceso de bajo nivel a los dispositivos de red de Linux

SINOPSIS

       #include <sys/ioctl.h>
       #include <net/if.h>

DESCRIPCIÓN

       Esta  página  de manual describe la interfaz de conectores que se usa para configurar los dispositivos de
       red.

       Linux incluye soporte para algunas ioctls estándares para configurar los dispositivos de red.  Se  pueden
       usar  sobre  cualquier descriptor de archivo de un conector sin importar la familia o el tipo. La mayoría
       pasa una estructura ifreq:

           struct ifreq {
               char ifr_name[IFNAMSIZ]; /* Nombre de la interfaz */
               union {
                   struct sockaddr ifr_addr;
                   struct sockaddr ifr_dstaddr;
                   struct sockaddr ifr_broadaddr;
                   struct sockaddr ifr_netmask;
                   struct sockaddr ifr_hwaddr;
                   short           ifr_flags;
                   int             ifr_ifindex;
                   int             ifr_metric;
                   int             ifr_mtu;
                   struct ifmap    ifr_map;
                   char            ifr_slave[IFNAMSIZ];
                   char            ifr_newname[IFNAMSIZ];
                   char           *ifr_data;
               };
           };

       AF_INET6 es una excepción. Pasa una estructura in6_ifreq:

           struct in6_ifreq {
               struct in6_addr     ifr6_addr;
               u32                 ifr6_prefixlen;
               int                 ifr6_ifindex; /* Índice de la interfaz */
           };

       En general, el usuario especifica a qué dispositivo va a afectar asignando a ifr_name  el  nombre  de  la
       interfaz  o  a  ifr6_ifindex  el  índice  de  la  misma. Todos los otros miembros de la estructura pueden
       compartir memoria.

   Ioctls
       Si se marca una ioctl como privilegiada entonces su uso requiere un identificador de usuario efectivo 0 o
       la capacidad CAP_NET_ADMIN. Si éste no es el caso se devuelve EPERM.

       SIOCGIFNAME
              Dado un ifr_ifindex, devuelve el nombre de la interfaz en ifr_name. Ésta es  la  única  ioctl  que
              devuelve su resultado en ifr_name.

       SIOCGIFINDEX
              Devuelve el índice de interfaz de la interfaz en ifr_ifindex.

       SIOCGIFFLAGS
       SIOCSIFFLAGS
              Obtiene o establece la palabra de banderas activas del dispositivo. ifr_flags contiene una máscara
              de bits de los siguientes valores:
                                           Significado de las banderas
              IFF_UP            La interfaz está funcionando.
              IFF_BROADCAST     Dirección de difusión válida asignada.
              IFF_DEBUG         Bandera de depuración interna.
              IFF_LOOPBACK      Ésta es una interfaz loopback.
              IFF_POINTOPOINT   La interfaz es un enlace punto a punto.
              IFF_RUNNING       Recursos necesarios reservados.
              IFF_NOARP         Sin protocolo ARP, la dirección de destino de Nivel 2 no está
                                configurada.
              IFF_PROMISC       La interfaz se encuentra en modo promiscuo.
              IFF_NOTRAILERS    Evitar el uso de terminadores.
              IFF_ALLMULTI      Recibir todos los paquetes multidestino.
              IFF_MASTER        Interfaz maestra de un grupo de balanceo de carga.
              IFF_SLAVE         Interfaz esclava de un grupo de balanceo de carga.
              IFF_MULTICAST     La interfaz permite multidestino.
              IFF_PORTSEL       La interfaz es capaz de seleccionar el tipo de medio mediante ifmap.
              IFF_AUTOMEDIA     Autoselección de medios activa.
              IFF_DYNAMIC       Las direcciones se pierden cuando la interfaz se desactiva.
              IFF_LOWER_UP      El controlador señala L1 activa (desde Linux 2.6.17)
              IFF_DORMANT       El controlador señala inactiva (desde Linux 2.6.17)
              IFF_ECHO          Paquetes enviados mediante eco (desde Linux 2.6.25)

       La  configuración  de la palabra de banderas activas es una operación privilegiada pero cualquier proceso
       puede leerla.

       SIOCGIFPFLAGS
       SIOCSIFPFLAGS
              Obtiene o establece banderas ampliadas (privadas) del dispositivo. ifr_flags contiene una  máscara
              de bits de los siguientes valores:
                                        Banderas privadas
              IFF_802_1Q_VLAN      La interfaz es un dispositivo VLAN 802.1Q.
              IFF_EBRIDGE          La interfaz es un disposotivo puente Ethernet.
              IFF_SLAVE_INACTIVE   La interfaz es un enlace esclavo inactivo.
              IFF_MASTER_8023AD    La interfaz es un enlace maestro 802.3ad.
              IFF_MASTER_ALB       La interfaz es un enlaze maestro balanceado-alb.
              IFF_BONDING          La interfaz es un enlace maestro o esclavo.
              IFF_SLAVE_NEEDARP    La interfaz necesita ARP para la validación.
              IFF_ISATAP           La interfaz es una ISATAP RFC4214.

       La configuración de las opciones extendidas (privada) de la interfaz necesita privilegios especiales.

       SIOCGIFADDR
       SIOCSIFADDR
       SIOCDIFADDR
              Obtenga,  configure  o  elimine  la  dirección  del dispositivo mediante ifr_addr, o ifr6_addr con
              ifr6_prefixlen. Configurar o eliminar la dirección de la interfaz es  una  operación  que  precisa
              privilegios  de  administrador. Por compatibilidad, SIOCGIFADDR devuelve solo direcciones AF_INET,
              SIOCSIFADDR acepta  direcciones  AF_INET  y  AF_INET6,  y  SIOCDIFADDR  elimina  solo  direcciones
              AF_INET6.   Una  dirección  AF_INET  se  puede  eliminar  configurándola  como  nula  mediante  de
              SIOCSIFADDR.

       SIOCGIFDSTADDR
       SIOCSIFDSTADDR
              Obtenga o configure la dirección de destino de un dispositivo punto a  punto  usando  ifr_dstaddr.
              Por  compatibilidad,  solo  se aceptarán o retornarán direcciones AF_INET. Necesita privilegios de
              administrador para establecer la dirección de destino.

       SIOCGIFBRDADDR
       SIOCSIFBRDADDR
              Obtenga o configure la dirección de  transmisión  para  un  dispositivo  usando  ifr_brdaddr.  Por
              compatibilidad,  solo  se  aceptarán  o  retornarán  direcciones  AF_INET. Necesita privilegios de
              administrador para configurar la dirección de transmisión.

       SIOCGIFNETMASK
       SIOCSIFNETMASK
              Obtenga o configure la máscara de red para un dispositivo usando ifr_netmask. Por  compatibilidad,
              solo  se  aceptarán  o  retornarán direcciones AF_INET. Necesita privilegios de administrador para
              configurar la máscara de red.

       SIOCGIFMETRIC
       SIOCSIFMETRIC
              Obtiene o establece la métrica del dispositivo usando ifr_metric. Todavía no implementado.  Asigna
              un  0  a  ifr_metric  cuando  se intenta leer y devuelve EOPNOTSUPP cuando se intenta asignarle un
              valor.

       SIOCGIFMTU
       SIOCSIFMTU
              Obtiene o establece la MTU (unidad de transferencia máxima) del  dispositivo  usando  ifr_mtu.  La
              configuración  de  la  MTU  es una operación privilegiada. Configurar la MTU con valores demasiado
              pequeños puede provocar un fallo del núcleo.

       SIOCGIFHWADDR
       SIOCSIFHWADDR
              Obtiene o establece la dirección hardware del dispositivo usando ifr_hwaddr. La  configuración  de
              la dirección hardware es una operación privilegiada.

       SIOCSIFHWBROADCAST
              Establece  la  dirección  de  difusión  hardware  del  dispositivo  a partir de ifr_hwaddr. Es una
              operación privilegiada.

       SIOCGIFMAP
       SIOCSIFMAP
              Obtiene o establece los parámetros hardware de la interfaz usando ifr_map. La configuración de los
              parámetros es una operación privilegiada.

                  struct ifmap {
                      unsigned long   mem_start;
                      unsigned long   mem_end;
                      unsigned short  base_addr;
                      unsigned char   irq;
                      unsigned char   dma;
                      unsigned char   port;
                  };

              La interpretación  de  la  estructura  ifmap  depende  del  manejador  del  dispositivo  y  de  la
              arquitectura.

       SIOCADDMULTI
       SIOCDELMULTI
              Añade una dirección a o borra una dirección de los filtros multidestino de la capa de enlace de la
              interfaz  usando  ifr_hwaddr.  Estas operaciones son privilegiadas. Si quiere una alternativa, vea
              también packet(7).

       SIOCGIFTXQLEN
       SIOCSIFTXQLEN
              Obtiene o establece la longitud de la cola de transmisión de un dispositivo  usando  ifr_qlen.  La
              configuración de la longitud de la cola de transmisión es una operación privilegiada.

       SIOCSIFNAME
              Cambia el nombre de la interfaz indicada en ifr_name a ifr_newname. Es una operación privilegiada.
              Sólo está permitida cuando la interfaz no está activada.

       SIOCGIFCONF
              Devuelve  una  lista  de  direcciones  de  interfaz  (capa  de red). Por compatiilidas, serán sólo
              direcciones de la familia AF_INET (IPv4). A  diferencia  de  los  demás,  este  ioctl  pasará  una
              estructura ifconf:

                  struct ifconf {
                      int               ifc_len; /* tamaño del buffer */
                      union {
                          char         *ifc_buf; /* dirección del buffer */
                          struct ifreq *ifc_req; /* vector de estructuras */
                      };
                  };

              Si ifc_req es NULL, SIOCGIFCONF retornará el tamaño de búfer necesario en bytes para recibir todas
              las  direcciones  disponibles en ifc_len. De lo contrario, ifc_req contiene un puntero a un vector
              de estructuras ifreq que se completarán con todas las direcciones de interfaz L3 activas.  ifc_len
              contiene  el  tamaño  de la matriz en bytes. Dentro de cada estructura ifreq, ifr_name recibirá el
              nombre de la interfaz y ifr_addr la dirección. El número real de bytes transferidos se devuelve en
              ifc_len.

              Si el tamaño definido en ifc_len es insuficiente para almacenar todas las direcciones,  el  núcleo
              omitirá  las  que  sobran  y  finalizará  sin errores. No existe una forma fiable de detectar esta
              condición una vez que ha ocurrido. Por lo tanto, se recomienda determinar de antemano el tamaño de
              búfer necesario invocando a SIOCGIFCONF con ifc_req definido al valor NULL, o volver a intentar la
              llamada con un búfer más grande siempre que ifc_len al regresar difiera en menos de sizeof (struct
              ifreq) de su valor original.

              Si sucediese un error durante el acceso a lasestructuras ifconf o ifreq, se devolvería EFAULT.

       La mayoría de los protocolos soportan sus propias ioctls para configurar  las  opciones  de  la  interfaz
       específicas  del  protocolo. Vea las páginas de manual de los protocolos para una descripción más amplia.
       Para la configuración de direcciones IP, vea ip(7).

       Además, algunos dispositivos soportan ioctls privadas. Éstas no se describen aquí.

NOTAS

       SIOCGIFCONF y otros ioctls que aceptan o  devuelven  solamente  direcciones  de  conectores  AF_INET  son
       específicos de IP y seguramente sea buena idea que se documenten en ip(7).

       Los  nombres de interfaces que no tiene dirección o que no tienen la opción IFF_RUNNING activa, se pueden
       encontrar a través de /proc/net/dev.

       Las direcciones IPv6 de AF_INET6 pueden leerse desde  /proc/net/if_inet6  o  a  través  de  rtnetlink(7).
       Pueden  añadirse  y/o  eliminarse  direcciones  IPv6  a través de SIOCSIFADDR y SIOCDIFADDR o a través de
       rtnetlink(7). Obtener o modificar direcciones IPv6 de destino de una  interfaz  punto  a  punto  sólo  es
       posible a través de rtnetlink(7).

ERRORES

       glibc 2.1 no posee la macro ifr_newname en <net/if.h>. Añada lo siguiente a su programa como solución:

           #ifndef ifr_newname
           #define ifr_newname     ifr_ifru.ifru_slave
           #endif

VÉASE TAMBIÉN

       proc(5), capabilities(7), ip(7), rtnetlink(7)

TRADUCCIÓN

       La  traducción  al  español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es> y
       Marcos Fouces <marcos@debian.org>

       Esta traducción es documentación libre;  lea  la  GNU General Public License Version 3  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.

Páginas de Manual de Linux 6.9.1                   2 Mayo 2024                                      netdevice(7)