我有一个接收IP数据包的用户空间应用程序。它需要确定数据包是v4还是v6类型。假设'buffer'包含数据包,我想到了两种方法:
void *check_header(void *buffer) {
struct iphdr *iph = (struct iphdr *)buffer;
if (iph->version == IPV4) {
/* IPv4 */
} else if (iph->version == IPV6) {
/* IPv6 */
}
......
}
有没有更好的方法来确定数据包类型?
答案 0 :(得分:1)
IP version
字段是第一个字节的底部4位。由于这是在一个字节(而不是多字节)字段中,因此机器的字节顺序应该是无关紧要的。但是,对于多字节结构,您将需要它。