|
|
|
NETDEVICE
Section: Manual del Programador de Linux (7) Updated: 2 mayo 1999 Index
Return to Main Contents
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 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;
};
}
struct ifconf
{
int ifc_len; /* tamaño del buffer */
union {
char * ifc_buf; /* dirección del buffer */
struct ifreq *ifc_req;/* array de estructuras */
};
};
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.
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_ifindex
a
ifr_newname.
Es una operación privilegiada.
- SIOCGIFCONF
-
Devuelve una lista de direcciones de interfaces (capa de transporte).
Actualmente, esto sólo significa direcciones de la familia AF_INET 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 es igual a la longitud original, el usuario debe asumir que se desbordó y
debe reintentarlo con una 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í.
NOTA
Si lo vemos de forma estricta,
SIOCGIFCONF
es específica de IP y pertence 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.
VÉASE TAMBIÉN
ip(7),
proc(7)
Index
- NOMBRE
-
- SINOPSIS
-
- DESCRIPCIÓN
-
- IOCTLS
-
- NOTA
-
- VÉASE TAMBIÉN
-
|