gpt4 book ai didi

c - 如何检查以太网头类型是否为 IEEE 802.1Q?

转载 作者:行者123 更新时间:2023-11-30 19:32:55 26 4
gpt4 key购买 nike

我使用pcap_open_offline来解析数据包。我要检查以太网 header 是否为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com