c - 如何使用 ICMPv6 套接字接收 vlan header /l2 header

标签 c network-programming icmp icmpv6

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

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

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

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

最佳答案

这样你无法获得第一个 VLAN 标记。它确实从数据包中剥离,但它可以在 tp_vlan_tci 中带外使用。和tp_vlan_tpid成员(member),请参阅linux/if_packet.h (假设这是在 Linux 上)。

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

相关文章:

android shell命令获取结果

c - 为什么 printf is c 产生这个输出

c - 在 C 中通过 TCP 发送和接收整数值

python - Twisted 和 ICMP (txNetTools)

c - 用 C 实现 FTP 服务器/客户端

c - 如何在 C 中获取我的非环回网络 ip 地址?

c - 如何区分扩展头和上层头

c - 对链接列表进行排序

c - 内联 Hook 后 'pathname' 系统调用中 'mkdir()' 参数的内容不可读

c++ - 如何编写决定其编译器的程序