MAC 주소 데이터 유형
mac_addr_t 유형의 변수는 MAC 주소 값을 보유하는 데 사용됩니다. MAC 주소 데이터 유형은 추상 데이터 유형이며 표준 C 단항 또는 2진 연산자와 함께 직접적으로 사용할 수 없습니다.
mac_addr_t 유형의
로컬 또는 글로벌 변수만
지원됩니다.
또한 이 유형의 변수는 키 또는 값으로 연관 배열에 저장될 수 있습니다.
Vue는 MAC 주소 유형의 변수에 대해 다음 특성 및 연산을 지원합니다.
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.
부호 있는, 부호 없는, 레지스터, 정적, 스레드 및 커널 규정자는
mac_addr_t 유형 변수에 대해 지원되지 않습니다.
지정 작업
지정(=) 연산자는 한 mac_addr_t 유형 변수가 다른 mac_addr_t 유형 변수에 지정되도록
허용합니다. 변수의 원래 값을 겹쳐씁니다. mac_addr_t 변수 유형에 대해
유형 캐스트는 허용되지 않습니다.
다음 예제에서 mac_addr_t m1의 내용이 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.
비교 조작
mac_addr_t 변수에 대해서는 등호(==) 및 부등호(!=) 연산자만 허용됩니다. 둘 다 동일한
MAC 주소 값을 포함하면 등호 연산자의 결과가 참(1)이며 그렇지 않으면 거짓(0)입니다.
부등호 연산자는 이 작동의 정확한 보완입니다. '
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”);MAC 주소 유형 변수 인쇄
mac_addr_t 유형 변수는 Vue의 printf() 함수에서 “%M” 형식
지정자를 사용하여 인쇄될 수 있습니다. print() 함수를 사용하여
mac_addr_t 유형의 변수를 키 또는 값 또는 둘 다로 가지는
연관 배열을 인쇄할 수 있습니다.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);
MAC 주소 유형 변수에 대한 제한사항
- mac_addr_t 변수의 배열은 선언될 수 없습니다.
- mac_addr_t 변수는 구조체 또는 공용체의 멤버로 사용될 수 없습니다.
- mac_addr_t 변수에 대한 포인터는 허용되지 않습니다.
- mac_addr_t 변수의 유형을 다른 유형으로 변환하거나 다른 유형의 변수를 mac_addr_t 유형으로 변환하는 것은 허용되지 않습니다.
- 산술 연산자(+, -, *, /, ++, -- 등)는 mac_addr_t 유형 변수와 함께 사용될 수 없습니다.