Тип данных MAC-адрес
Переменная типа mac_addr_t служит для хранения значения MAC-адреса.
Тип данных MAC-адрес - это абстрактный тип данных. Его нельзя использовать напрямую со стандартными унарными или бинарными операторами C.
Поддерживаются только локальные и глобальные переменные типа mac_addr_t.
Переменные этого типа можно также хранить в именованном массиве как ключ или как значение.
Язык Vue поддерживает следующие свойства и операции для переменных типа MAC-адрес:
Объявление переменной MAC-адреса
mac_addr_t m1; // глобальная переменная типа MAC-адрес
__auto mac_addr_t m2; // автоматическая переменная типа MAC-адрес
m2 = __etherhdr->src_addr; // сохранить исходный MAC-адрес в локальной переменной
mac_aso[“src_mac_addr”] = __etherhdr->src_addr ; // сохранить в именованном массиве.
Спецификаторы signed, unsigned, register, static, thread и kernel не поддерживаются для переменных типа mac_addr_t.
Операции присвоения
Оператор присвоения (=) позволяет присвоить одну переменную типа mac_addr_t другой переменной типа mac_addr_t. Исходные значения переменной заменяются. Преобразование типа mac_addr_t и другие типы и наоборот запрещено.
В следующем примере переменная mac_addr_t m1 присваивается переменной m2.
mac_addr_t m1, m2; // Объявление двух переменных MAC-адресов.
m1 = __etherhdr->src_addr; // Сохранить исходный MAC-адрес пакета в переменной m1.
m2 = m1 ; // Сохранить значение переменной m1 в переменной m2.
Операция сравнения
Для переменных mac_addr_t разрешены только операторы равенства (==) и неравенства (!=). Результат оператора равенства истинный (1), если обе переменных содержат один и тот же MAC-адрес, и ложный (0) в противном случае.
mac_addr_t.
if( m1 == m2) // сравнение двух переменных типа mac_addr_t.
printf(“MAC-адреса равны”); else printf(“MAC-адреса неравны”);Вывод переменных типа MAC-адрес
mac_addr_t можно выводить с помощью спецификатора
формата “%M” функции printf() сценария Vue. Именованные массивы, в которых переменные типа mac_addr_t играют роль ключей и (или) значений, могут выводиться с помощью функции print().
printf(“ Исходный MAC-адрес=[%M]\n”, __etherhdr->src_addr);
mac_aso[“src_mac_address”] = __etherhdr->src_addr ; // Сохранить исходный MAC-адрес как значение в именованный массив mac_aso.
print(mac_aso);
- Нельзя объявить массив переменных mac_addr_t.
- Переменные mac_addr_t не могут быть элементом структуры или объединения.
- Запрещены указатели на переменные типа mac_addr_t.
- Запрещено преобразование переменных типа mac_addr_t в любой другой тип и переменных любых других типов в тип mac_addr_t.
- Нельзя использовать арифметические операторы (+, -, *, /, ++, -- и пр.) с переменными типа mac_addr_t.