在我的ND守护程序中,我正在使用rbos_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);接收用于接收NS和其他ND消息(l3消息)的ICMPv6标头。
使用此选项,内核将剥离l2标头(带有VLAN信息)。我应该使用哪个选项来避免这种剥离?

我的目的是接收带有VLAN信息的ICMPv6消息。

已经尝试使用以下方法:
1)rbos_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
2)rbos_socket(AF_INET6, SOCK_RAW, PROTO_ND)

我的期望是接收带有l2信息(特别是VLAN标头)的ICMPv6消息。

最佳答案

您不能像这样获得第一个VLAN标签。它确实已从数据包中剥离,但在tp_vlan_tcitp_vlan_tpid成员中可以带外使用,请参阅linux/if_packet.h(假设这在Linux上)。

关于c - 如何使用ICMPv6套接字接收vlan header /l2 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56311122/

10-12 05:46