'\" t .\" Don't change the first line, it tells man that tbl is needed. .\" This man page is Copyright (C) 1999 Andi Kleen . .\" Permission is granted to distribute possibly modified copies .\" of this page provided the header is included verbatim, .\" and in case of nontrivial modification author and date .\" of the modification is added to the header. .\" $Id: netdevice.7,v 1.3 2005/05/30 07:34:03 juan.piernas Exp $ .\" .\" Translated on Fri Jul 2 1999 by Juan Piernas .\" Translation revised Thu Apr 20 2000 by Juan Piernas .\" .TH NETDEVICE 7 "2 mayo 1999" "Página man de Linux" "Manual del Programador de Linux" .SH NOMBRE netdevice \- Acceso de bajo nivel a los dispositivos de red de Linux. .SH SINOPSIS .B "#include " .br .B "#include " .SH 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 .BR ifreq : .nf .ta 4 12 20 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; /* size of buffer */ union { char * ifc_buf; /* buffer address */ struct ifreq *ifc_req; /* array of structures */ }; }; .ta .fi Normalmente, el usuario especifica a qué dispositivo va a afectar asignando a .B ifr_name el nombre de la interfaz. Todos los otros miembros de la estructura pueden compartir memoria. .SH IOCTLS Si se marca una ioctl como privilegiada entonces su uso requiere un identificador de usuario efectivo 0 o la capacidad .BR CAP_NET_ADMIN . Si éste no es el caso se devuelve .BR EPERM . .TP .B SIOCGIFNAME Dado un .BR ifr_ifindex , devuelve el nombre de la interfaz en .BR ifr_name . Ésta es la única ioctl que devuelve su resultado en .BR ifr_name . .TP .B SIOCGIFINDEX Devuelve el índice de interfaz de la interfaz en .BR ifr_ifindex . .TP .BR SIOCGIFFLAGS ", " SIOCSIFFLAGS Obtiene o establece la palabra de banderas activas del dispositivo. .B ifr_flags contiene una máscara de bits de los siguientes valores: .TS tab(:) allbox; c s l l. 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:T{ Sin protocolo ARP, la dirección de destino de Nivel 2 no está configurada. T} 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:T{ Interfaz maestra de un grupo de balanceo de carga. T} IFF_SLAVE:T{ Interfaz esclava de un grupo de balanceo de carga. T} IFF_MULTICAST:La interfaz soporta multidestino. IFF_PORTSEL:T{ La interfaz es capaz de seleccionar el tipo de medio mediante ifmap. T} IFF_AUTOMEDIA:Autoselección de medios activa. IFF_DYNAMIC:T{ Las direcciones se pierden cuando la interfaz se desactiva. T} .TE La configuración de la palabra de banderas activas es una operación privilegiada pero cualquier proceso puede leerla. .TP .BR SIOCGIFMETRIC ", " SIOCSIFMETRIC Obtiene o establece la métrica del dispositivo usando .BR ifr_metric . Todavía no implementado. Asigna un 0 a .B ifr_metric cuando se intenta leer y devuelve .B EOPNOTSUPP cuando se intenta asignarle un valor. .TP .BR SIOCGIFMTU ", " SIOCSIFMTU Obtiene o establece la MTU (unidad de transferencia máxima) del dispositivo usando .BR 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. .TP .BR SIOCGIFHWADDR ", " SIOCSIFHWADDR Obtiene o establece la dirección hardware del dispositivo usando .BR ifr_hwaddr . La configuración de la dirección hardware es una operación privilegiada. .TP .B SIOCSIFHWBROADCAST Establece la dirección de difusión hardware del dispositivo a partir de .BR ifr_hwaddr . Es una operación privilegiada. .TP .BR SIOCGIFMAP ", " SIOCSIFMAP Obtiene o establece los parámetros hardware de la interfaz usando .BR ifr_map . La configuración de los parámetros es una operación privilegiada. .nf .ta 4 20 42 struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; .ta .fi La interpretación de la estructura ifmap depende del manejador del dispositivo y de la arquitectura. .TP .BR 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 .BR ifr_hwaddr . La dirección hardware queda especificada en una estructura .IR sockaddr . .I sa_family contiene el tipo de dispositivo ARPHRD_*, .I sa_data la dirección hardware L2 comenzando desde el byte 0. Estas operaciones son privilegiadas. Si quiere una alternativa, vea también .BR packet (7). .TP .BR SIOCGIFTXQLEN ", " SIOCSIFTXQLEN Obtiene o establece la longitud de la cola de transmisión de un dispositivo usando .BR ifr_qlen . La configuración de la longitud de la cola de transmisión es una operación privilegiada. .TP .B SIOCSIFNAME Cambia el nombre de la interfaz indicada en .BR ifr_name a .BR ifr_newname . Es una operación privilegiada. Sólo está permitida cuando la interfaz no está activada. .TP .B 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 .B ifconf como argumento. Contiene un puntero a un array de estructuras .I ifreq en .B ifc_req y sus longitudes en bytes en .B ifc_len. El núcleo rellena los ifreqs con todas las direcciones de las interfaces de Nivel 3 actuales que están funcionando: .I ifr_name contiene el nombre de la interfaz (eth0:1 etc.), .I ifr_addr la dirección. El núcleo regresa con la longitud real en .IR ifc_len . Si .I 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. .\" XXX Slaving isn't supported in 2.2 .\" .TP .\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE .\" Get or set the slave device using .\" .BR ifr_slave . .\" Setting the slave device is a privileged operation. .\" .PP .\" XXX add amateur radio stuff. .PP 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 .BR ip (7). .PP Además, algunos dispositivos soportan ioctls privadas. Éstas no se describen aquí. .SH OBSERVACIONES Si lo vemos de forma estricta, .B SIOCGIFCONF es específica de IP y pertenece a .BR ip (7). .LP Los nombres de interfaces que no tiene dirección o que no tienen la opción .B IFF_RUNNING activa, se pueden encontrar a través de .IR /proc/net/dev. .LP Las direcciones IP locales versión 6 (IPv6) se pueden obtener vía /proc/net o vía .BR rtnetlink (7). .SH FALLOS glibc 2.1 no posee la macro .I ifr_newname en net/if.h. Añada lo siguiente a su programa como solución: .sp .RS .nf .ta 4 20 42 #ifndef ifr_newname #define ifr_newname ifr_ifru.ifru_slave #endif .ta .fi .RE .SH "VÉASE TAMBIÉN" .BR ip (7), .BR proc (7), .BR rtnetlink (7)