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)