我使用pcap_open_offline
解析数据包。我要检查以太网头是否为IEEE 802.1Q类型。我知道我需要检查802.1Q标记中的前16位是否等于8100,但我不知道该怎么做。或者,如果您知道其他方法,也可以尝试。
最佳答案
假设您要使用C解决方案,这是一个简单的实现:
struct ether_header {
/* destination MAC */
uint8_t dst_mac[6];
/* source MAC */
uint8_t src_mac[6];
/* EtherType */
uint16_t ether_type;
};
#define ETHERTYPE_VLAN 0x8100
/* this method gets the packet data read from pcap file and returns 1 if ether type is 802.1Q, 0 otherwise */
int is_IEEE_802_1Q(const uint8_t* packet_data) {
/* cast ethernet header */
ether_header* eth_header = (ether_header*)packet_data;
/* assuming big endian as most pcap files are in big endian */
if (eth_header->ether_type == ETHERTYPE_VLAN) {
return 1;
}
return 0;
}
关于c - 如何检查以太网头是否为IEEE 802.1Q类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46593564/