Tipo de dados de endereço MAC

Uma variável do tipo mac_addr_t é usada para manter o valor do endereço MAC. O tipo de dados de endereço MAC é um tipo de dado abstrato e não é possível usá-lo diretamente com operadoras padrão C unárias ou binárias.

Apenas variáveis locais ou globais do tipo mac_addr_t são suportadas.

Uma variável desse tipo também pode ser armazenada em uma matriz associada seja como uma chave ou como um valor.

O Vue suporta as seguintes características e operações para as variáveis de tipo de endereço MAC:

Declaração de variável de endereço MAC

mac_addr_t m1;           																				// global variable of type 
__auto mac_addr_t m2;                             // auto variable of type 
m2 = __etherhdr->src_addr;                        // store source MAC address in a local variable
mac_aso[“src_mac_addr”] = __etherhdr->src_addr ;  // store in an associative array. 

Os qualificadores assinados, não assinados, de registro, estático, thread e kernel não são suportados para as variáveis do tipo mac_addr_t .

Operação de Designação

A operadora de designação (=) permite que uma variável de tipo mac_addr_t seja atribuída a outra variável do tipo mac_addr_t . Os valores originais da variável são sobrescrito. Nenhum tipecasting é permitido de ou para os tipos de variáveis mac_addr_t .

No exemplo a seguir, o conteúdo do mac_addr_t m1 é atribuído a m2.

mac_addr_t m1, m2;              // Declares two MAC address variables. 
m1 = __etherhdr->src_addr;      // Get the source MAC address of the packet in m1. 
m2 = m1 ;                       // Get the content of m1 into m2.

Operação de Comparação

Somente as operadoras de igualdade (==) e desigualdade (! =) são permitidas para as variáveis mac_addr_t . O resultado do operador de igualdade é True (1) se ambos contém os mesmos valores de endereço MAC ou False (0) caso contrário.

O operador da desigualdade é o elogio exato deste comportamento. Nenhum outro operador de comparação (> =,>, <, ou = <) são permitidos para as variáveis do tipo mac_addr_t .
if ( m1 == m2) // comparing two mac_addr_t type variables. 
printf(“Mac addresses are equal”); else printf(“Mac addresses are not equal”);

Imprimir variáveis do tipo de endereço MAC

Uma variável do tipo mac_addr_t pode ser impressa com especificador de formato "%M" na função printf () da Vue. Uma matriz associativa que tem mac_addr_t tipo variáveis como chave ou valor (ou ambos) pode ser impressa usando a função print ().
printf(“ Source MAC address=[%M]\n”, __etherhdr->src_addr); 
mac_aso[“src_mac_address”] = __etherhdr->src_addr ; // Store source MAC address as value in an associative array mac_aso. 
print(mac_aso);
Limitações para a variável de tipo de endereço MAC
  • A matriz da variável mac_addr_t não pode ser declarada.
  • As variáveis mac_addr_t não podem ser usadas como membro de uma estruturação ou de um sindicato.
  • Pointer para variável mac_addr_t não é permitido.
  • Typecasting de mac_addr_t variável para qualquer outro tipo ou digitação qualquer outro tipo para tipo mac_addr_t não é permitido.
  • Nenhum operador aritmético (+,-, *, /, + +, -- etc) pode ser usado com variável de tipo mac_addr_t.