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