Provided by: manpages-es_1.55-9_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)