Provided by:
manpages-es_1.55-10_all 
NOMBRE
netdevice - Acceso de bajo nivel a los dispositivos de red de Linux.
SINOPSIS
#include <sys/ioctl.h>
#include <net/if.h>
DESCRIPCI'ON
Esta pagina de manual describe la interfaz de conectores que se usa
para configurar los dispositivos de red.
Linux soporta algunas ioctls estandares 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 que 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
este no es el caso se devuelve EPERM.
SIOCGIFNAME
Dado un ifr_ifindex, devuelve el nombre de la interfaz en
ifr_name. Esta es la unica ioctl que devuelve su resultado en
ifr_name.
SIOCGIFINDEX
Devuelve el indice de interfaz de la interfaz en ifr_ifindex.
SIOCGIFFLAGS, SIOCSIFFLAGS
Obtiene o establece la palabra de banderas activas del
dispositivo. ifr_flags contiene una mascara de bits de los
siguientes valores:
+--------------------------------------------------------------+
| Significado de las banderas |
+----------------+---------------------------------------------+
|IFF_UP | La interfaz esta funcionando. |
+----------------+---------------------------------------------+
|IFF_BROADCAST | Direccion de difusion valida asignada. |
+----------------+---------------------------------------------+
|IFF_DEBUG | Bandera de depuracion interna. |
+----------------+---------------------------------------------+
|IFF_LOOPBACK | Esta 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 direccion de destino |
| | de Nivel 2 no esta 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 | Autoseleccion de medios activa. |
+----------------+---------------------------------------------+
|IFF_DYNAMIC | Las direcciones se pierden cuando la |
| | interfaz se desactiva. |
+----------------+---------------------------------------------+
La configuracion de la palabra de banderas activas es una
operacion privilegiada pero cualquier proceso puede leerla.
SIOCGIFMETRIC, SIOCSIFMETRIC
Obtiene o establece la metrica del dispositivo usando
ifr_metric. Todavia 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 maxima) del
dispositivo usando ifr_mtu. La configuracion de la MTU es una
operacion privilegiada. Configurar la MTU con valores demasiado
pequenos puede provocar un fallo del nucleo.
SIOCGIFHWADDR, SIOCSIFHWADDR
Obtiene o establece la direccion hardware del dispositivo usando
ifr_hwaddr. La configuracion de la direccion hardware es una
operacion privilegiada.
SIOCSIFHWBROADCAST
Establece la direccion de difusion hardware del dispositivo a
partir de ifr_hwaddr. Es una operacion privilegiada.
SIOCGIFMAP, SIOCSIFMAP
Obtiene o establece los parametros hardware de la interfaz
usando ifr_map. La configuracion de los parametros es una
operacion 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 interpretacion de la estructura ifmap depende del manejador
del dispositivo y de la arquitectura.
SIOCADDMULTI, SIOCDELMULTI
Anade una direccion a o borra una direccion de los filtros
multidestino de la capa de enlace de la interfaz usando
ifr_hwaddr. La direccion hardware queda especificada en una
estructura sockaddr. sa_family contiene el tipo de dispositivo
ARPHRD_*, sa_data la direccion hardware L2 comenzando desde el
byte 0. Estas operaciones son privilegiadas. Si quiere una
alternativa, vea tambien packet(7).
SIOCGIFTXQLEN, SIOCSIFTXQLEN
Obtiene o establece la longitud de la cola de transmision de un
dispositivo usando ifr_qlen. La configuracion de la longitud de
la cola de transmision es una operacion privilegiada.
SIOCSIFNAME
Cambia el nombre de la interfaz indicada en ifr_name a
ifr_newname. Es una operacion privilegiada. Solo esta permitida
cuando la interfaz no esta activada.
SIOCGIFCONF
Devuelve una lista de direcciones de interfaces (capa de
transporte). Actualmente, esto solo 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 nucleo rellena los ifreqs con todas las
direcciones de las interfaces de Nivel 3 actuales que estan
funcionando: ifr_name contiene el nombre de la interfaz (eth0:1
etc.), ifr_addr la direccion. El nucleo regresa con la longitud
real en ifc_len. Si ifc_len es igual a la longitud original, el
buffer probablemente se haya desbordado y deberia reintentarlo
con un buffer mayor. Cuando no se produce ningun error, la ioctl
devuelve 0. En otro caso, -1. El desbordamiento no es un error.
La mayoria de los protocolos soportan sus propias ioctls para
configurar las opciones de la interfaz especificas del protocolo. Vea
las paginas de manual de los protocolos para una descripcion mas
amplia. Para la configuracion de direcciones IP, vea ip(7).
Ademas, algunos dispositivos soportan ioctls privadas. Estas no se
describen aqui.
OBSERVACIONES
Si lo vemos de forma estricta, SIOCGIFCONF es especifica de IP y
pertenece a ip(7).
Los nombres de interfaces que no tiene direccion o que no tienen la
opcion IFF_RUNNING activa, se pueden encontrar a traves de
/proc/net/dev.
Las direcciones IP locales version 6 (IPv6) se pueden obtener via
/proc/net o via rtnetlink(7).
FALLOS
glibc 2.1 no posee la macro ifr_newname en net/if.h. Anada lo siguiente
a su programa como solucion:
#ifndef ifr_newname
#define ifr_newname ifr_ifru.ifru_slave
#endif
V'EASE TAMBI'EN
ip(7), proc(7), rtnetlink(7)
Pagina man de Linux 2 mayo 1999 NETDEVICE(7)