netdevice(7) Miscellaneous Information Manual netdevice(7) NOMBRE netdevice - acceso de bajo nivel a los dispositivos de red de Linux SINOPSIS #include #include DESCRIPCION Esta pagina de manual describe la interfaz de conectores que se usa para configurar los dispositivos de red. Linux incluye soporte para algunas ioctls estandares para configurar los dispositivos de red. Se pueden usar sobre cualquier descriptor de archivo de un conector sin importar la familia o el tipo. La mayoria 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 excepcion. Pasa una estructura in6_ifreq: struct in6_ifreq { struct in6_addr ifr6_addr; u32 ifr6_prefixlen; int ifr6_ifindex; /* Indice de la interfaz */ }; En general, el usuario especifica a que dispositivo va a afectar asignando a ifr_name el nombre de la interfaz o a ifr6_ifindex el indice de la misma. 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 permite 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. IFF_LOWER_UP El controlador senala L1 activa (desde Linux 2.6.17) IFF_DORMANT El controlador senala inactiva (desde Linux 2.6.17) IFF_ECHO Paquetes enviados mediante eco (desde Linux 2.6.25) La configuracion de la palabra de banderas activas es una operacion privilegiada pero cualquier proceso puede leerla. SIOCGIFPFLAGS SIOCSIFPFLAGS Obtiene o establece banderas ampliadas (privadas) del dispositivo. ifr_flags contiene una mascara de bits de los siguientes valores: Banderas privadas IFF_802_1Q_VLAN La interfaz es un dispositivo VLAN 802.1Q. 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 validacion. IFF_ISATAP La interfaz es una ISATAP RFC4214. La configuracion de las opciones extendidas (privada) de la interfaz necesita privilegios especiales. SIOCGIFADDR SIOCSIFADDR SIOCDIFADDR Obtenga, configure o elimine la direccion del dispositivo mediante ifr_addr, o ifr6_addr con ifr6_prefixlen. Configurar o eliminar la direccion de la interfaz es una operacion que precisa privilegios de administrador. Por compatibilidad, SIOCGIFADDR devuelve solo direcciones AF_INET, SIOCSIFADDR acepta direcciones AF_INET y AF_INET6, y SIOCDIFADDR elimina solo direcciones AF_INET6. Una direccion AF_INET se puede eliminar configurandola como nula mediante de SIOCSIFADDR. SIOCGIFDSTADDR SIOCSIFDSTADDR Obtenga o configure la direccion de destino de un dispositivo punto a punto usando ifr_dstaddr. Por compatibilidad, solo se aceptaran o retornaran direcciones AF_INET. Necesita privilegios de administrador para establecer la direccion de destino. SIOCGIFBRDADDR SIOCSIFBRDADDR Obtenga o configure la direccion de transmision para un dispositivo usando ifr_brdaddr. Por compatibilidad, solo se aceptaran o retornaran direcciones AF_INET. Necesita privilegios de administrador para configurar la direccion de transmision. SIOCGIFNETMASK SIOCSIFNETMASK Obtenga o configure la mascara de red para un dispositivo usando ifr_netmask. Por compatibilidad, solo se aceptaran o retornaran direcciones AF_INET. Necesita privilegios de administrador para configurar la mascara de red. 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. 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 interfaz (capa de red). Por compatiilidas, seran solo direcciones de la familia AF_INET (IPv4). A diferencia de los demas, este ioctl pasara una estructura ifconf: struct ifconf { int ifc_len; /* tamano del buffer */ union { char *ifc_buf; /* direccion del buffer */ struct ifreq *ifc_req; /* vector de estructuras */ }; }; Si ifc_req es NULL, SIOCGIFCONF retornara el tamano de bufer necesario en bytes para recibir todas las direcciones disponibles en ifc_len. De lo contrario, ifc_req contiene un puntero a un vector de estructuras ifreq que se completaran con todas las direcciones de interfaz L3 activas. ifc_len contiene el tamano de la matriz en bytes. Dentro de cada estructura ifreq, ifr_name recibira el nombre de la interfaz y ifr_addr la direccion. El numero real de bytes transferidos se devuelve en ifc_len. Si el tamano definido en ifc_len es insuficiente para almacenar todas las direcciones, el nucleo omitira las que sobran y finalizara sin errores. No existe una forma fiable de detectar esta condicion una vez que ha ocurrido. Por lo tanto, se recomienda determinar de antemano el tamano de bufer necesario invocando a SIOCGIFCONF con ifc_req definido al valor NULL, o volver a intentar la llamada con un bufer mas grande siempre que ifc_len al regresar difiera en menos de sizeof (struct ifreq) de su valor original. Si sucediese un error durante el acceso a lasestructuras ifconf o ifreq, se devolveria EFAULT. 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. NOTAS SIOCGIFCONF y otros ioctls que aceptan o devuelven solamente direcciones de conectores AF_INET son especificos de IP y seguramente sea buena idea que se documenten en 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 IPv6 de AF_INET6 pueden leerse desde /proc/net/if_inet6 o a traves de rtnetlink(7). Pueden anadirse y/o eliminarse direcciones IPv6 a traves de SIOCSIFADDR y SIOCDIFADDR o a traves de rtnetlink(7). Obtener o modificar direcciones IPv6 de destino de una interfaz punto a punto solo es posible a traves de rtnetlink(7). ERRORES glibc 2.1 no posee la macro ifr_newname en . Anada lo siguiente a su programa como solucion: #ifndef ifr_newname #define ifr_newname ifr_ifru.ifru_slave #endif VEASE TAMBIEN proc(5), capabilities(7), ip(7), rtnetlink(7) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Juan Piernas y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de Manual de Linux 6.9.1 2 Mayo 2024 netdevice(7)