在我的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_tci
和tp_vlan_tpid
成员中可以带外使用,请参阅linux/if_packet.h
(假设这在Linux上)。
关于c - 如何使用ICMPv6套接字接收vlan header /l2 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56311122/