NOME¶
netdevice - Acesso de baixo nível a dispositivos de rede Linux.
SINOPSE¶
#include <sys/ioctl.h> #include <net/if.h>
DESCRIÇÃO¶
Esta man page descreve a interface de sockets que é usada para configurar
dispositivos de rede.
O Linux suporta alguns ioctls padronizados para configurar dispositivos de rede.
Eles podem ser usados em qualquer descritor de arquivos de socket,
independente da família ou tipo. Eles passam uma estrutura
ifreq
:
struct ifreq
{
char ifr_name[IFNAMSIZ]; /* Nome da interface */
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 */
};
};
Normalmente, o usuário especifica qual dispositivo será afetado
pela seleção
ifr_name to the name of the interface. Todos
os outros membros da estrutura podem compartilhar memória.
IOCTLS¶
Se um ioctl é marcado como privilegiado, então o seu uso requer um
id efetivo de usuário, ou a propriedade
CAP_NET_ADMIN. Se este
não é o caso,
EPERM será retornado.
- SIOCGIFNAME
- Dado o ifr_ifindex, returna o nome da interface em ifr_name.
Este é o único ioctl que retorna seu resultado em
ifr_name.
- SIOCGIFINDEX
- Recupera o índice da interface para ifr_ifindex.
- SIOCGIFFLAGS, SIOCSIFFLAGS
- Recebe ou seta a palavra de flag ativa do dispositivo. ifr_flags
contém uma máscara de bits com os seguintes valores:
Sinalizadores do dispositivo |
|
IFF_UP |
Interface está rodando. |
IFF_BROADCAST |
Conjunto de endereço de broadcast válido. |
IFF_DEBUG |
Flag de debugging interno. |
IFF_LOOPBACK |
Interface é uma interface do tipo loopback. |
IFF_POINTOPOINT |
Interface é um link do tipo ponto-a-ponto. |
IFF_RUNNING |
Recursos alocados. |
IFF_NOARP |
Nenhum protocolo arp. |
IFF_PROMISC |
Interface está em modo promíscuo. |
IFF_NOTRAILERS |
Evita uso de trailers. |
IFF_ALLMULTI |
Recebe todos os pacotes multicast. |
IFF_MASTER |
Mestre de um load balancing bundle. |
IFF_SLAVE |
Escravo de um load balancing bundle. |
IFF_MULTICAST |
Suporta multicast |
IFF_PORTSEL |
É capaz de selecionar tipo de meio via ifmap. |
IFF_AUTOMEDIA |
Auto-seleção ativa de meio. |
IFF_DYNAMIC |
Os endereços são perdidos quando a interface é
fechada. |
Ajustar a palavra de flag ativa é uma operação
privilegiada, mas qualquer processo pode lê-la.
- SIOCGIFMETRIC, SIOCSIFMETRIC
- Recebe ou seta a métrica do dispositivo usando ifr_metric.
Isto não está implementado atualmente; ele seta
ifr_metric em 0 se você tenta lê-lo e retorna
EOPNOTSUPP se você tenta setá-lo.
- SIOCGIFMTU, SIOCSIFMTU
- Recebe ou seta o MTU (Maximum Transfer Unit - Unidade Máxima de
Transferência) de um dispositivo, usando ifr_mtu. Setar o
MTU é uma operação privilegiada. Selecionando a MTU
para valores baixos pode-se provocar erros no kernel.
- SIOCGIFHWADDR, SIOCSIFHWADDR
- Recebe ou seta o endereço de hardware de um dispositivo, usando
ifr_hwaddr. Setar o endereço de hardware é uma
operação privilegiada.
- SIOCSIFHWBROADCAST
- Seta o endereço de hardware de broadcast de um dispositivo, de
ifr_hwaddr. Esta é uma operação privilegiada.
- SIOCGIFMAP, SIOCSIFMAP
- Recebe ou seta os parâmetros de hardware da interface usando
ifr_map. Setar os parâmetros é uma
operação privilegiada.
struct ifmap
{
unsigned long mem_start;
unsigned long mem_end;
unsigned short base_addr;
unsigned char irq;
unsigned char dma;
unsigned char port;
};
A interpretação de uma estrutura ifmap depende do driver de
dispositivo e da arquitetura.
- SIOCADDMULTI, SIOCDELMULTI
- Acrescenta ou apaga um endereço dos filtros de multicast da camada
de link do dispositivo, usando ifr_hwaddr. Estas são
operações privilegiadas. Veja também packet(7)
para uma alternativa.
- SIOCGIFTXQLEN, SIOCSIFTXQLEN
- Recebe ou seta o comprimento da fila de transmissão de um
dispositivo, usando ifr_qlen. Setar o comprimento da fila de
transmissão é uma operação privilegiada.
- SIOCSIFNAME
- Muda o nome da interface especificada em ifr_ifindex para
ifr_newname. Esta é uma operação privilegiada.
- SIOCGIFCONF
- Devolve uma listagem de endereços de interfaces (camada de
transporte). Isto, atualmente, significa somente endereços da
família AF_INET para compatibilidade. O usuários transmite
uma estrutura ifconf como argumento para ioctl. Ele contém
um ponteiro para uma array de estruturas ifreq dentro de
ifc_req e o seu tamanho em bytes é ifc_len. O kernel
enche as ifreqs com todos os atuais endereços L3 que estão
sendo executados: ifr_name contém o nome da interface
(eth0:1 etc.), ifr_addr é o endereço. O kernel
retorno o tamanho atual dentro do ifc_len; se ele é igual ao
tamanho original o usuário deve assumir que houve estouro e tenta
novamente com um buffer maior. Quando não ocorrem erros d ioctl
devolve 0; de outro modo -1. Estouro não é erro.
Muitos protocolos suportam seus próprios ioctls para configurar
opções de interface específicas do protocolo. Veja as
páginas de manual de protocolos para uma descrição. Para
configuração de endereços IP veja
ip(7).
Além disso, alguns dispositivos suportam ioctls privados. Estes
não são descritos aqui.
NOTAS¶
Vendo estritamente
SIOCGIFCONF é específico o IP e faz
parte do
ip(7).
NOTAS¶
Os nomes das interfaces sem endereços ou que não tem um
sinalizador
IFF_RUNNING selecionado pode ser localizado através
de
/proc/net/dev.
VEJA TAMBÉM¶
ip(7),
proc(7)
TRADUZIDO POR LDP-BR em 21/08/2000.¶
Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução)
André L. Fassone Canova <lonelywolf@blv.com.br>
(revisão