netdevice(7) | Miscellaneous Information Manual | netdevice(7) |
netdevice - acceso de bajo nivel a los dispositivos de red de Linux
#include <sys/ioctl.h> #include <net/if.h>
Esta página de manual describe la interfaz de conectores que se usa para configurar los dispositivos de red.
Linux incluye soporte para algunas ioctls estándares para configurar los dispositivos de red. Se pueden usar sobre cualquier descriptor de fichero de un conector sin importar la familia o el tipo. La mayoría 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; }; };
AF_INET6 es una excepción. Passa un estructura in6_ifreq:
struct in6_ifreq { struct in6_addr ifr6_addr; u32 ifr6_prefixlen; int ifr6_ifindex; /* Índice de la interfaz */ };
En general, el usuario especifica a qué dispositivo va a afectar asignando a ifr_name el nombre de la interfaz o a ifr6_ifindex el índice de la misma. Todos los otros miembros de la estructura pueden compartir memoria.
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.
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. |
IFF_LOWER_UP | Driver signals L1 up (since Linux 2.6.17) |
IFF_DORMANT | Driver signals dormant (since Linux 2.6.17) |
IFF_ECHO | Echo sent packets (since Linux 2.6.25) |
La configuración de la palabra de banderas activas es una operación privilegiada pero cualquier proceso puede leerla.
Banderas privadas | |
IFF_802_1Q_VLAN | Interface is 802.1Q VLAN device. |
IFF_EBRIDGE | La interfaz es un disposotivo puente Ethernet. |
IFF_SLAVE_INACTIVE | La interfaz es un enlace esclavo inactivo. |
IFF_MASTER_8023AD | La interfaz es un enlace maestro 802.3ad. |
IFF_MASTER_ALB | La interfaz es un enlaze maestro balanceado-alb. |
IFF_BONDING | La interfaz es un enlace maestro o esclavo. |
IFF_SLAVE_NEEDARP | La interfaz necesita ARP para la validación. |
IFF_ISATAP | La interfaz es una ISATAP RFC4214. |
La configuración de las opciones extendidas (privada) de la interfaz necesita privilegios especiales.
struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; };
struct ifconf { int ifc_len; /* tamaño del buffer */ union { char *ifc_buf; /* dirección del buffer */ struct ifreq *ifc_req; /* vector de estructuras */ }; };
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í.
SIOCGIFCONF y otros ioctls que aceptan o devuelven solamente direcciones de conectores AF_INET son específicos de IP y seguramente sea buena idea que se documenten en 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.
AF_INET6 IPv6 addresses can be read from /proc/net/if_inet6 or via rtnetlink(7). Adding a new IPv6 address and deleting an existing IPv6 address can be done via SIOCSIFADDR and SIOCDIFADDR or via rtnetlink(7). Retrieving or changing destination IPv6 addresses of a point-to-point interface is possible only via rtnetlink(7).
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
proc(5), capabilities(7), ip(7), rtnetlink(7)
La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.
15 Diciembre 2022 | Páginas de manual de Linux 6.03 |