Provided by: manpages-es_4.21.0-2_all bug

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 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.

   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.
              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.

       SIOCGIFPFLAGS, SIOCSIFPFLAGS
              Obtiene o establece banderas ampliadas (privadas) del dispositivo. ifr_flags contiene una  máscara
              de bits de los siguientes valores:
                                        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.

       SIOCGIFADDR, SIOCSIFADDR, SIOCDIFADDR
              Get,  set,  or  delete the address of the device using ifr_addr, or ifr6_addr with ifr6_prefixlen.
              Setting or  deleting  the  interface  address  is  a  privileged  operation.   For  compatibility,
              SIOCGIFADDR  returns  only  AF_INET addresses, SIOCSIFADDR accepts AF_INET and AF_INET6 addresses,
              and SIOCDIFADDR deletes only AF_INET6 addresses.  A AF_INET address can be deleted by  setting  it
              to zero via SIOCSIFADDR.

       SIOCGIFDSTADDR, SIOCSIFDSTADDR
              Get   or  set  the  destination  address  of  a  point-to-point  device  using  ifr_dstaddr.   For
              compatibility, only AF_INET addresses are accepted or returned.  Setting the  destination  address
              is a privileged operation.

       SIOCGIFBRDADDR, SIOCSIFBRDADDR
              Get  or set the broadcast address for a device using ifr_brdaddr.  For compatibility, only AF_INET
              addresses are accepted or returned.  Setting the broadcast address is a privileged operation.

       SIOCGIFNETMASK, SIOCSIFNETMASK
              Get or set the network mask for a device  using  ifr_netmask.   For  compatibility,  only  AF_INET
              addresses are accepted or returned.  Setting the network mask is a privileged operation.

       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_name a ifr_newname. Es una operación privilegiada.
              Sólo está permitida cuando la interfaz no está activada.

       SIOCGIFCONF
              Return a list of interface (network layer) addresses.  This currently means only addresses of  the
              AF_INET  (IPv4)  family  for  compatibility.   Unlike  the  others,  this  ioctl  passes an ifconf
              structure:

                  struct ifconf {
                      int               ifc_len; /* tamaño del buffer */
                      union {
                          char         *ifc_buf; /* dirección del buffer */
                          struct ifreq *ifc_req; /* vector de estructuras */
                      };
                  };

              If ifc_req is NULL, SIOCGIFCONF returns the necessary buffer  size  in  bytes  for  receiving  all
              available  addresses  in  ifc_len.   Otherwise,  ifc_req  contains  a pointer to an array of ifreq
              structures to be filled with all currently active L3 interface addresses.   ifc_len  contains  the
              size  of  the  array  in  bytes.  Within each ifreq structure, ifr_name will receive the interface
              name, and ifr_addr the address.  The actual number of bytes transferred is returned in ifc_len.

              If the size specified by ifc_len is insufficient to store all the addresses, the kernel will  skip
              the  exceeding ones and return success.  There is no reliable way of detecting this condition once
              it has occurred.  It is therefore recommended  to  either  determine  the  necessary  buffer  size
              beforehand  by  calling  SIOCGIFCONF  with ifc_req set to NULL, or to retry the call with a bigger
              buffer whenever ifc_len upon return differs by less than sizeof(struct ifreq)  from  its  original
              value.

              Si sucediese un error durante el acceso a lasestructuras ifconf o ifreq, se devolvería EFAULT.

       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í.

NOTAS

       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).

ERRORES

       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

VÉASE TAMBIÉN

       proc(5), capabilities(7), ip(7), rtnetlink(7)

TRADUCCIÓN

       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.

Páginas de manual de Linux 6.03                 15 Diciembre 2022                                   netdevice(7)