Manpages

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:

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 [AT] usa.net> (tradução) André L. Fassone Canova <lonelywolf [AT] blv.br> (revisão