Provided by: manpages-es_1.55-10_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 soporta algunas ioctls estándares para configurar los dispositivos de red.  Se  pueden  usar  sobre
       cualquier  descriptor  de  fichero  de un conector sin tener en cuenta la familia o el tipo.  Se pasa una
       estructura ifreq:

       struct ifreq {
           char    ifr_name[IFNAMSIZ];/* Nombre de la interfaz */
           union {
                   struct sockaddrifr_addr;
                   struct sockaddrifr_dstaddr;
                   struct sockaddrifr_broadaddr;
                   struct sockaddrifr_netmask;
                   struct sockaddrifr_hwaddr;
                   short   ifr_flags;
                   int     ifr_ifindex;
                   int     ifr_metric;
                   int     ifr_mtu;
                   struct ifmapifr_map;
                   char    ifr_slave[IFNAMSIZ];
                   char    ifr_newname[IFNAMSIZ];
                   char *  ifr_data;
           };
       };

       struct ifconf {
             int ifc_len;    /* size of buffer */
           union {
                   char *  ifc_buf; /* buffer address */
                   struct ifreq *ifc_req; /* array of structures */
           };
       };

       Normalmente, el usuario especifica a qué dispositivo va a afectar asignando a ifr_name el  nombre  de  la
       interfaz. 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 soporta 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.                      │
              └─────────────────┴─────────────────────────────────────────────┘

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

       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.  La dirección hardware queda especificada en una estructura sockaddr.
              sa_family contiene el tipo de dispositivo ARPHRD_*, sa_data la dirección  hardware  L2  comenzando
              desde  el  byte  0.   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 interfaces (capa  de  transporte).   Actualmente,  esto  sólo
              significa  direcciones de la familia AF_INET (IPV4) por compatibilidad. El usuario pasa a la ioctl
              una estructura ifconf como argumento. Contiene un puntero a  un  array  de  estructuras  ifreq  en
              ifc_req  y  sus  longitudes  en  bytes  en  ifc_len.   El  núcleo rellena los ifreqs con todas las
              direcciones de las interfaces de Nivel 3 actuales que  están  funcionando:  ifr_name  contiene  el
              nombre  de  la  interfaz  (eth0:1 etc.), ifr_addr la dirección.  El núcleo regresa con la longitud
              real en ifc_len.  Si ifc_len es igual a la longitud original,  el  buffer  probablemente  se  haya
              desbordado y debería reintentarlo con un buffer mayor. Cuando no se produce ningún error, la ioctl
              devuelve 0. En otro caso, -1. El desbordamiento no es un error.

       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í.

OBSERVACIONES

       Si lo vemos de forma estricta, SIOCGIFCONF es específica de IP y pertenece a 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 IP locales versión 6 (IPv6) se pueden obtener vía /proc/net o vía rtnetlink(7).

FALLOS

       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

       ip(7), proc(7), rtnetlink(7)

Página man de Linux                                2 mayo 1999                                      NETDEVICE(7)